Hallo,
ich habe reichlich externe Bezüge der Form ='G:\Projekte\[Datenerfassung.xls]Bereich1'!$G$30 und möchte daraus interne Bezüge der Form ='Bereich'!$G$30 machen. Mein VBA-Code
Public Sub ExterneBezuegeLoesen()
Dim strFormula As String
Dim iPos As Integer
Dim iLen As Integer
Dim iRow As Integer
Dim iCol As Integer
Dim c As Object
Cells().Select
For Each c In Selection
If c.HasFormula = True Then
strFormula = c.Formula
iPos = InStr(1, strFormula, "]")
If iPos > 0 Then
iLen = Len(strFormula)
strFormula = "='" & Mid(strFormula, iPos + 1, iLen - iPos)
c.Formula = strFormula
End If
End If
Next c
End Sub
Es läuft soweit durch, jedoch schreibt die Zeile c.Formula=strFormula einen String in die Zelle, der nicht als Formel interpretiert wird, sondern als String. Wer kann mir meinen Fehler zeigen?
Gruß - Dirk Hornauer
Excellent
Die Excel-Community von ExcelDaily
- Home
- Excellent
- Makros & VBA
- Externe Bezüge auflösen
Hallo Dirk,
versuch mal nach dem Umsetzen nochmals mit FormulaLocal drüber zu gehen.
Public Sub ExterneBezuegeLoesen()
Dim strFormula As String
Dim iPos As Integer
Dim iLen As Integer
Dim iRow As Integer
Dim iCol As Integer
Dim c As Object
Cells().Select
For Each c In Selection
If c.HasFormula = True Then
strFormula = c.Formula
iPos = InStr(1, strFormula, "]")
If iPos > 0 Then
iLen = Len(strFormula)
strFormula = "='" & Mid(strFormula, iPos + 1, iLen - iPos)
c.Formula = strFormula
'******hier drüber
strFormula.FormulaLocal=strFormula.FormulaLocal
'***
End If
End If
Next c
End Sub
Gruß und schönes WE
Andreas
versuch mal nach dem Umsetzen nochmals mit FormulaLocal drüber zu gehen.
Public Sub ExterneBezuegeLoesen()
Dim strFormula As String
Dim iPos As Integer
Dim iLen As Integer
Dim iRow As Integer
Dim iCol As Integer
Dim c As Object
Cells().Select
For Each c In Selection
If c.HasFormula = True Then
strFormula = c.Formula
iPos = InStr(1, strFormula, "]")
If iPos > 0 Then
iLen = Len(strFormula)
strFormula = "='" & Mid(strFormula, iPos + 1, iLen - iPos)
c.Formula = strFormula
'******hier drüber
strFormula.FormulaLocal=strFormula.FormulaLocal
'***
End If
End If
Next c
End Sub
Gruß und schönes WE
Andreas
Danke an Andreas und Peter für die Unterstützung. Leider bringen weder das "noch mal drübergehen mit FormulaLocal" noch das "c.ClearFormats" bei mir den gewünschten Erfolg. Nach wie vor sehe ich den korrekt umgewandelten String in der Zelle, jedoch wird er nicht als Formel interpretiert, denn dann müsste ich ja in der Zelle c den Wert der referenzierten Zelle sehen.
Gruß - Dirk
Gruß - Dirk
Nochmals vielen Dank an Andreas und Peter für das "Mitkämpfen".
Das führende Hochkomma schließt zusammen mit dem Hochkomma vor dem Ausrufezeichen den Blattnamen ein. Richtig ist, dass bei Blattnamen ohne Leerzeichen das Hochkomma-Paar entfallen kann. Aber auch das hatte ich schon ohne Erfolg ausprobiert.
Aber jetzt kommt's: Wenn man mit F2 nochmals in den Editiermodus geht und mit Return abschließt, dann ist die Welt in Ordnung!!!! Peter, danke für den Tipp! Wie in aller Welt kommt man auf sowas? Und wie bringe ich das meinem VBA-Code bei?
Herzlichen Gruß und einen guten Start in die Woche
Dirk
Das führende Hochkomma schließt zusammen mit dem Hochkomma vor dem Ausrufezeichen den Blattnamen ein. Richtig ist, dass bei Blattnamen ohne Leerzeichen das Hochkomma-Paar entfallen kann. Aber auch das hatte ich schon ohne Erfolg ausprobiert.
Aber jetzt kommt's: Wenn man mit F2 nochmals in den Editiermodus geht und mit Return abschließt, dann ist die Welt in Ordnung!!!! Peter, danke für den Tipp! Wie in aller Welt kommt man auf sowas? Und wie bringe ich das meinem VBA-Code bei?
Herzlichen Gruß und einen guten Start in die Woche
Dirk
Hier anmelden
Du bist noch kein Mitglied der Community?
Stichwörter
Community-Details
-
Suche nach:
Community-Name
Excellent
Die Excel-Community von ExcelDailyDein Gastgeber ist
Online seit
17.03.2008
Mitglieder
Sprache
Deutsch


