Dann in etwa so:
Vorausgesetzt deine Formel in 'Tabelle 3' sieht so aus:
'=WENN(A1=%PLACEHOLDER%;1;0)
beachte bitte das Apostroph am Anfang. Dadurch wir die Formel zu reinem Text und wird somit nicht von Excel berechnet.
Das Makro verwendet die Codenamen der Tabellen um sich darauf zu beziehen. Das ist der Teil im VBA Projekt-Fenster ...
... der vor dem geklammerten Wert steht.
'im Klassenmodul von Tabelle2
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const C_PLH As String = "%PLACEHOLDER%"
Dim rngResult As Excel.Range
Set rngResult = Tabelle1.Columns("A").Find(Target.Cells(1, 1).Value, _
LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByColumns, MatchByte:=False)
If Not rngResult Is Nothing Then
Set rngResult = rngResult.Offset(, 3) 'A + 3 columns -> D
Else
Exit Sub
End If
Dim rngCell As Excel.Range
Set rngCell = Tabelle3.Range("A1")
Do Until Trim$(rngCell.Value) = ""
If rngCell.PrefixCharacter <> "" Then
If IsNumeric(rngResult.Value) Then
Call rngCell.Replace(C_PLH, rngResult.Value, xlPart, xlByColumns, False, False)
Else
Call rngCell.Replace(C_PLH, """" & rngResult.Value & """", xlPart, xlByColumns, False, False)
End If
rngCell.FormulaLocal = rngCell.FormulaLocal
Exit Do
End If
Set rngCell = rngCell.Offset(1)
Loop
End Sub
Gruß
|