Ich habe eine Datei, die zwei Arbeitsblätter hat. Ich muss ein Makro ausführen, das Spalte A auf Blatt 2 nachschlägt, bis es leer ist. Es muss nach dem Wert aus der Zelle in Blatt 2 Spalte A auf Blatt1 suchen. Wenn gefunden, ändern Sie den Wert der Spalte AP. Wenn nicht gefunden, springen Sie zur nächsten Suche nach dem nächsten Wert.Excel VB Macro, um den Wert von einem anderen Blatt zu finden, dann ändern Sie einen Zellenwert im aktuellen Blatt
Das ist was ich bisher habe. Ich konnte es beheben, wo ich keine Fehler mehr bekomme, aber auch keine Ergebnisse. Es zeigt und scheint zu laufen, aber es werden keine Änderungen an Zelle ("AP", "Zeilenwert gefunden") auf Blatt 1 vorgenommen.
Sub dataChange()
Dim myRow As Integer
Dim srch As Integer
On Error GoTo Err_Execute
myRow = 1
srch = 1
While Sheet2.Cells(myRow, 1).Value <> ""
If Sheet1.Range("A" & CStr(srch)).Value = Sheet2.Cells(myRow, 1).Value Then
Sheet1.Range("AP" & CStr(srch)).Value = "HOUSTON"
End If
srch = srch + 1
myRow = myRow + 1
Wend
Err_Execute:
MsgBox "An error occurred."
End Sub
Passen die Reihen zusammen? Außerdem ist es einfacher, 'Zellen' zu benutzen (für mich sowieso). – findwindow
Ich habe den Code ausprobiert und es funktioniert. Obwohl Sie ein 'Exit Sub' vor dem' Err_Execute: 'brauchen, erhalten Sie keine Fehlermeldung, auch wenn alles gut ausgeführt wurde. Und Sie sollten die Variablendeklarationen definitiv von 'Integer' nach' Long' ändern. Ganzzahlen können nur Zahlen von bis zu 32767 enthalten. Eine schlechte Idee, diese zu verwenden, um über 1048576 Zeilen zu traversieren. Also, da alles funktioniert - was genau ist das Problem? – Leviathan
Es ist am besten, ein Beispiel für die Eingabe, die erwartete Ausgabe und die Ergebnisse zu geben, die Sie nicht erhalten. Ich gehe davon aus, dass Sie eine verschachtelte Schleife benötigen - srch ist die äußere und myRow ist die innere. – OldUgly