Externe Links mit Werten überschreiben

Hallo Allen,
Habe eine Tabelle mit mehreren Blättern.
In diesen Blättern befinden sich viele Formeln und externe Links(Zugriff auf Buchhaltungsprogramm) die alle mit „=HPVAL…“ beginnen.
Da ich die Datei auch an Personen ohne Zugriff auf das Buchhaltungsprogramm schicke, möchte ich diese Links mit Werten hart überschreiben alle üblichen Formeln z.B. Summen innerhalb des Blatts sollen erhalten bleiben.
Mit Replace komme ich nicht weiter.
Vielleicht hilft ein Makro das den Zellbereich von A1 bis AZ1000 durchsucht und falls es den Befehl =HPVAL … findet sollten die Werte hart eingeschrieben werden. Das Macro sollte über mehrere Blätter anwendbar sein.
Hoffe ich konnte mein Problem klar schildern.
Vielen Dank für die Antworten

Grüße Wolfgang

Hallo Wolfgang.

Hab dir schnell was gebastelt.

Die Sub überprüft den Bereich B1,B2,…,B10 auf =HPVAL, wenn gefunden wird, wird der „Value“-Wert in den Cell.Value geschrieben.

Hoffe es klappt, getestet unter MS Office 2003…

Schaus dir an:

Sub checkFormula()
Dim cell As Range
Dim need As String
Dim find As String
Dim newValue As Variant

find = "=HPVAL"

For Each cell In Range("B1:B10")
 need = cell.FormulaLocal
 newValue = cell.value

 If (InStr(find, need) = 0) Then
 cell.value = newValue
 End If
Next

End Sub

Ist das das, was du suchtest??

Gruss,
Sebastian

Ist das das, was du suchtest??

Hallo Sebastian,
genau das suchte ich. Ich baue noch eine Schleife ein die alle Blätter durchsucht - fertig.
Bei größeren Suchbereichen dauert es etwas, aber nach einer Tasse Kaffee dürfte alles erledigt sein.

Nochmals Danke

Wolfgang

Hallo Sebastian,
zu früh gejubelt.
Warum auch immer, aber es werden alle Formeln mit Werten überschrieben, auch die die kein =HPVAL enthalten.

Grüße

Wolfgang

Warum auch immer, aber es werden alle Formeln mit Werten
überschrieben, auch die die kein =HPVAL enthalten.

Hi Wolfgang,
das Warum ist mir klar, der Code wird ausgeführt wenn Instr nichts findet (= 0)
Ändere mal =0 in 0

Und da du scheints selbst codieren willst, schau mal bei Specialcells nach Zellen mit Formeln.

Mein ungetester Ansatz sähe so aus:

for each ws in worksheets
        'weil fehler wenns keine Formelzellen gibt, Specialcells ist immer
        'heikel wenns nix findet und auch sonst sehr unberechenbar
        on error resume next
        for each Zelle in ws.usedrange.specialcells(xltypeformulas)
                if instr (Zelle.formulalocal, „=HPVAL“) then Zelle.Value =Zelle.Value
        next zelle
next ws

Gruß
Reinhard

Hallo Reinhard, Hallo Sebastian,
Nochmals vielen Dank.
Reinhard, mit deinem Ansatz kam ich nicht zurecht, aber Danke für den Tip mit .
Sebastian, es hat auch mit erst funnktioniert als ich Reihenfolge von „need“ und „find“ vertauscht hatte.
Ich muß mich mit der Befehlssyntax mal vertraut machen.

Fazit: Es läuft und bringt das gewünschte Ergebnis.

Ein schönes Wochenende wünsche ich allen Helfern und Hilfesuchenden.

Wolfgang