Liebe Gemeinde StackoverflowExcel VBA, verschachtelte Schleifen/verstecken Zeilen basierend auf Zahlen
Bei der Arbeit habe ich ein Makro schreiben, die in der Lage sein sollte, Zeilen in einer Spalte anhand von Zahlen zu verbergen. Diese können mehrere in einer Zelle sein und die Eingabe sollte auch erlauben, mehr als eine Zahl gleichzeitig anzuzeigen.
for example:
row 1: 20, 30, 15
row 2: 20
row 3: 13, 76
Also, wenn ich geben Sie 20, 30, sollte es nur die Zeilen 1 & 2 zeigen)
ich in der Regel Code mit Java/C# und ich bin neu in VBA, so Id wirklich zu schätzen Hilfe:
Mein Plan war, ein Eingabefeld anzuzeigen und diese Nummern in ein Array zu teilen. Dann möchte ich jede Zeile mit einem for-Loop durchlaufen, in dem ich zwei für jede Schleife hinzugefügt habe, um zu prüfen, ob irgendwelche Zahlen gleich sind. Wenn nicht, blende die Zeile aus. Wenn ja, zeige und dann möchte ich beide für jede Schleifen beenden und in die nächste Zeile gehen. Um verschachtelte Schleifen zu beenden, habe ich versucht, einen do-Befehl zu verwenden, während boolean funktioniert, aber es scheint nicht zu funktionieren.
Im Moment werden nur die Zeilen mit allen Eingängen angezeigt (nur row1 im Beispiel).
Sub SortingTest()
Dim numbers() As String
myNum = Application.InputBox("Enter BKPS (separate multiples by ,)")
numbers = Split(myNum, ",", -1, compare)
'Userinput Vars
Dim row As Integer
row = 1
Dim saveNumber As String
'Looping Vars
Dim existingNum As String
Dim existingNumsArray() As String
Dim checkRows As Long
Dim saveElement As String
Dim done As Boolean
done = False
' Range("B3").Value = 10
' Saves the Input as Array:
For Each Element In numbers
saveNumber = Element
Cells(2, row).Value = saveNumber
row = row + 1
Next Element
Dim b As Integer
Do While done = False
For b = 1 To 100 'hardcoded, should be length of document. b == row;
existingNum = Cells(b, 3).Value
existingNumsArray = Split(existingNum, ",", -1, compare)
' loop thru input numbers
For Each Element In numbers
saveElement = Element
'loop thru given numbers
For Each inputElement In existingNumsArray
If saveElement <> inputElement Then
Rows(b).Hidden = True
ElseIf saveElement = inputElement Then
Rows(b).Hidden = False
done = True
Exit For
End If
Next
Next
Next
Loop
End Sub
In Excel gibt es keine 0-indizierte Zeile. Beginnen Sie mit "row = 1". – Fratyx
danke! immer noch einen Laufzeitfehler auf der gleichen Linie bekommen. – Betci
Hmm. Es wird das Problem nicht lösen, aber die Zeilennummer muss der ** erste ** Parameter in der "Zellen" -Funktion sein. – Fratyx