Also, ich muss ein Excel-Makro in VBA, die nach einer Zeichenfolge suchen, dann vergleichen Sie es mit einer voreingestellten Zeichenfolge meiner Wahl und ändern Sie den Wert einer Zelle in ein anderes Blatt.Suche nach einer bestimmten Zeichenfolge in einer Excel-Arbeitsmappe
Es geht so:
Sub Macro1()
Dim A As Integer
Dim WS As Worksheet
Dim ToCompare, Coniburo As String
Coniburo = "My String"
For Each WS In Worksheets
For A = 1 To Rows.Count
ToCompare = Left(Cells(A, 3), 100)
If InStr(ToCompare, Coniburo) > 0 Then
Sheets("Last Sheet").Cells(21, 2).Value = "233"
End If
Next A
Next
Das Makro funktioniert ....... Wenn entferne ich die erste für (die, die durch eine Suchoption) und solange ich in einem Blatt bin wo "Meine Zeichenfolge" vorhanden ist. Ansonsten funktioniert es nicht. Es dauert eine lange Zeit zu verarbeiten, über eine Minute, da es 17 Blätter gibt.
Warum funktioniert nicht? Ich habe hier viele Posts gelesen, das Microsoft Dev Forum, eine Seite namens Tech on the Net, und immer noch fehlt mir etwas, aber ich weiß nicht warum.
Kann mir jemand in die richtige Richtung zeigen?
Es wird so lange dauert, weil Sie looping durch jede Reihe, alle 1 Million +, das sind über 17 Millionen Schleifen. Das wird einige Zeit dauern. Finde die letzte Zeile mit Daten auf jedem Blatt und wiederhole die Schleife. –
Sie bekommen, dass Sie schreiben und "233" 'in die gleiche Zelle auf dem letzten Arbeitsblatt zu jeder Zeit umschreiben, richtig? – Jeeped
Sie haben auch 'Rows.Count', was nicht qualifiziert ist. Es zählt nur die Zeilen auf dem aktiven Blatt. Sie müssen das und 'Cells()' später mit 'WS' qualifizieren, dh' Für A = 1 bis WS.Rows.Count' und '... Links (WS.Cells (A, 33) ,. .. " – BruceWayne