AW: Matrix einlesen und Wert suchen
30.10.2008 16:55:00
fcs
Hallo Susi,
Das Sollte eigentlich auch ohne EInlesen der Werte in eine Matrix funktionieren, indem man "einfach" die 1. Spalte mit den Suchwerten nach den Zelle-Werten durchsucht und bei Treffer die Werte aus den beiden Nachbarspalten in den Zellkommentar schreibt.
Wenn du mit der Matrix arbeiten willst, dann muss du in For-Next-Schleifen die Werte prüfen. Diese sind bei vielen Zeilen aber langsamer als die Suchen-Funktion.
Gruß
Franz
Sub Kommentar1()
Dim BereichMatrix As Range
Dim ZelleBereich As Range, ZelleMatrix As Range
Dim wksMatrix As Worksheet
Set wksMatrix = Worksheets("Liste") 'Tabellenblatt mit Übersetzungsliste
'Bereich mit Matrixdaten ermitteln (Zelle A2 bis Ende Liste Spalte C
With wksMatrix
Set BereichMatrix = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 2))
End With
For Each ZelleBereich In Selection
'Zellert in 1. Spalte der Matrix suchen
Set ZelleMatrix = BereichMatrix.Columns(1).Find(What:=ZelleBereich.Value, _
LookIn:=xlValues, lookat:=xlWhole)
If Not ZelleMatrix Is Nothing Then
'Wenn Zell-Wert in Matrix-Spalte gefunden, dann Kommentar einfügen
With ZelleBereich
'Kommentar für Zelle einfügen, wenn noch nicht vorhanden
If .Comment Is Nothing Then
.AddComment
End If
'Kommentarwert mit Zeilenschaltung eintragen
.Comment.Text Text:=ZelleMatrix.Offset(0, 1).Value & vbLf _
& ZelleMatrix.Offset(0, 2).Value, Start:=1
End With
End If
Next
End Sub
Sub Kommentar2()
Dim BereichMatrix As Range
Dim ZelleBereich As Range, lngZeile As Long
Dim wksMatrix As Worksheet
Dim arrSuchmatrix
Set wksMatrix = Worksheets("Liste") 'Tabellenblatt mit Übersetzungsliste
'Bereich mit Matrixdaten ermitteln (Zelle A2 bis Ende Liste Spalte C
With wksMatrix
Set BereichMatrix = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 2))
End With
'Array mit Daten füllen
arrSuchmatrix = BereichMatrix
For Each ZelleBereich In Selection
'Zellwert in 1. Spalte des Matrix suchen
For lngZeile = LBound(arrSuchmatrix) To UBound(arrSuchmatrix)
If arrSuchmatrix(lngZeile, 1) = ZelleBereich.Value Then
'Wenn Zell-Wert in Matrix-Spalte gefunden, dann Kommentar einfügen
With ZelleBereich
'Kommentar für Zelle einfügen, wenn noch nicht vorhanden
If .Comment Is Nothing Then
.AddComment
End If
'Kommentarwert mit Zeilenschaltung eintragen
.Comment.Text Text:=arrSuchmatrix(lngZeile, 2) & vbLf _
& arrSuchmatrix(lngZeile, 3), Start:=1
End With
Exit For
End If
Next
Next
End Sub