AW: VBA - Mehrere Spalten ausfüllen
17.01.2007 16:26:43
ingUR
Hallo, Timonski,
bei zwanzig Möglichkeiten die Du zu untersuchen hast, bietet sich bereits das Arbeiten mit einem Feld an:
'Ref.V Wert1 Wert2 Wert3 ...
'-----------------------------------Datensätze
'"Hallo", "Wie" "geht" "das?"
'"Servus", "Sei" "gegrüßt" "!"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r As Long, c As Integer
Dim idx As Integer, i As Integer, Rec As Variant
r = Target.Row
Rec = Array(Array("Hallo", "Wie", "geht", "das?"), _
Array("Servus", "Sei", "gegrüßt", "!"), _
Array("Tag", "Teil", "der", "Woche"))
idx = -1
'suche Eintrag an der ersten Stelle eines jeden Datensatzes
Do
i = i + 1
If Rec(i)(1) = Target.Text Then
idx = i
End If
Loop Until i = UBound(Rec)
If idx > 0 Then
'schreibe alle Datensatzfelder, beginnend ab Element 2
'und soviel, wie durch die Arraygrenze bestimmt ist
'maximale Anzahl der Einträge des betrachteten Datensatzes
For c = 2 To UBound(Rec(2))
Cells(r, c) = Rec(idx)(c)
Next c
Else
For c = 2 To 4
Cells(r, c) = ""
Next c
End If
End Sub
Allerdings sind hier bereits ein paar besonderheiten im Umgang mit Varianten und Arrays zu beachten, die eigentlich nicht zu den ersten Übungen gehören sollten.
Darüber gibt es noch weitere Formen, die sich nach der Art der Datenbereitstellung richten (sie meinen ersten Beitrag). Insbesonder ist natürlich zu überlegen, ob hier jedes SelectionChange zur Abarbeitung der inneren Schleife der Routine führen muß oder man nur bestimmte Zellenveränderungen beobachtet.
Gruß,
Uwe