Problem mit VBA Excel: Wert Finden und Zeilen daneben ersetzen.
Hallo zusammen,
Ich versuch mich grade mit VBA und stoß so langsam an meine Grenzen.
Ich möchte mit mit einem Formular einen Wert aus Tabelle1 nehmen, diesen in Tabelle2 suchen und markieren. Außerdem soll zusätzlich in den Zeilen daneben Werte aus Tabelle1 eingetragen werden.
Das switchen zwischen den Tabellen, das Finden und Markieren klappt soweit, nur funktioniert das Kopieren aus den Zellen in Tabelle1 in die neben den gefundenen Wert aus Tabelle2 befindlichen Zellen nicht. Anscheinend selektiert mein Makro die Markierte Zelle nicht, weshalb ich mit "ActiveCell" nicht weiter komme.
Wäre cool wenn jemand mir da weiterhelfen könnte :)
Sheets("Tabelle2").Select
Cells.Find(What:=Worksheets("Tabelle1").Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Interior.Color = vbRed
If ActiveSheet.Name = "Tabelle2" Then Sheets("Tabelle1").Select Else Sheets("Tabelle2").Select End If
1 Antwort
Ich kann keinen Kopierbefehl erkennen.
Wenn du Zellinhalte kopieren willst, dann machst du [Zielzelle].value = [Quellzelle].value
Ansonsten bietet das Range-Objekt auch ganz normal Copy und Paste an.
Hier zwei Beispiele:
Call Range("Tabelle1!A1").Copy(Range("Tabelle2!A1"))
Range("Tabelle2!A2").Value = Range("Tabelle1!A1").Value
Vielleicht solltest du mit Zwischenergebnissen arbeiten, d. h. das Ergebnis von Cells.Find(...)
in einer Variablen zwischenspeichern. Das wird es für dich übersichtlicher machen.
Du kannst sie mit .Select
selektieren. .Interior.Color
musst du dann weglassen.
Alternative:
Dim rFundstelle
set rFundstelle = Cells.Find(What:=Worksheets("Tabelle1").Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
rFundstelle.Select
rFundstelle.Interior.Color = vbRed
rFundstelle.Offset(0,1).value = Range("Tabelle1!A2").value
Ist nicht getestet. Wenn das nicht passt, verstehe ich dich einfach nicht.
1000 Dank! Das ist es, was mir gefehlt hat! :)
Das mit .value oder Range weis ich, hilft mir aber nicht weiter.
Er sucht den Wert A1 Aus der Tabelle1 in Tabelle2 und soll dort den jeweils rechts danebenstehenden Wert mit A2 Aus Tabelle1 ersetzen. Mein Problem liegt außerdem darin, das er die Gefundene Zelle zwar markiert, sie allerdings nicht selektiert womit halt eine ActiveCell Funktion auch nicht funktioniert.
Die Zwischenergebnisse sind schon zwischengespeichert. eigentlich stammen sie aus einer Listbox, das sich auf eine andere Textbox bezieht, die sich wiederum auf eine Listbox bezieht - alle in unterschiedlichen Formularen ;)