Ich habe in einer Exel-Tabelle mit BEREICH.VERSCHIEBEN (= Offset in Englisch) ziemlich viele Verlinkungen durchgeführt (Zelle zu Zelle). Nun möchte ich die BEREICH.VERSCHIEBEN-Formeln ersetzen durch direkte Zellverweise (also z.B. =TabelleN!X123) auf die Zelle, auf die BEREICH.VERSCHIEBEN zum Umwandlungszeitpunkt gezeigt hat.
Am liebsten wäre mir eine Lösung in reinem Excel, aber C#/VSTO hätte ich zur Not auch zur Verfügung.
Ich habe in einer Exel-Tabelle mit BEREICH.VERSCHIEBEN (=
Offset in Englisch) ziemlich viele Verlinkungen durchgeführt
(Zelle zu Zelle). Nun möchte ich die
BEREICH.VERSCHIEBEN-Formeln ersetzen durch direkte
Zellverweise (also z.B. =TabelleN!X123) auf die Zelle, auf die
BEREICH.VERSCHIEBEN zum Umwandlungszeitpunkt gezeigt hat.
Hi Gondax,
Option Explicit
'
Sub Ersetzen()
Dim wks As Worksheet, Zelle As Range, Von As Long, Bis As Long, Zei As Long
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("BV").Delete
Application.DisplayAlerts = True
On Error GoTo Ende
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "BV"
With Worksheets("BV")
For Each wks In Worksheets
If wks.Name .Name Then
For Each Zelle In wks.UsedRange
If Zelle.HasFormula Then
Von = 0
While InStr(Von + 1, Zelle.Formula, "OFFSET")
Von = InStr(Von + 1, Zelle.Formula, "OFFSET")
Bis = InStr(Von, Zelle.Formula, ")")
Zei = Zei + 1
.Cells(Zei, 1) = Mid(Zelle.Formula, Von, Bis - Von + 1)
.Cells(Zei, 2) = Evaluate(.Cells(Zei, 1).Value).Address
.Cells(Zei, 3) = wks.Name
.Cells(Zei, 4) = Zelle.Address
Wend
End If
Next Zelle
End If
Next wks
.Columns("A:smiley:").AutoFit
End With
Exit Sub
Ende:
If Err.Number 0 Then MsgBox "Fehler trat auf"
Resume Next
End Sub