Moin! Kein Problem. Habe den Code dahingehend angepasst. Bei weiteren Zeilen, die Nummer einfach oben im Array mit einfügen, Reihenfolge wäre egal.
Da du VBA lernen willst, sind noch ein paar Kommentare im Code. Meinst du mit EXCEL VBA Kurse die im Internet oder Bücher? Bücher habe ich da keine zu, da die meisten Excel VBA Bücher die ich kannte doch nur oberflächlich die Themen behandeln. Zum Nachschlagen und für den Einstieg kann man die aber wohl nutzen. Zum ersten braucht es ein wenig Zeit zum Lernen. Wenn du Vorkenntnisse hast, umso besser. Ansonsten irgendwo mal die Grundlagen, wie Deklaratin, Datentypen, Schleifen etc. lernen. Ansonsten hilft häufig der Makrorekorder weiter. Damit kann man den Code aufzeichen und erkennt ggf. welche Objekte man ansprechen muss. Der Recorder ist aber meist zu langsam und hat zu viele Schritte und muss anschließend optimiert werden. Ansonsten hilft immer üben üben üben (in dem Fall halt Programmieren). Wobei man auch sagen muss, dass es ein wenig Zeit kostet - ist ja schließlich eine "(Programmier)Sprache" und sowas lernt man nicht so über nacht. Aber davon nicht abhalten lassen. Evtl. ist man nach den ersten erfolgreichen Programmen so happy und vom Virus befallen und hört nicht mehr auf. :-) Dazu ist es ganz hilfreich (wenn man schon etwas vertraut ist) in diversen Foren zu lesen und ggf. zu versuchen einige der Probleme auch zu lösen. Und wenn man da Frage hat, kann man die dort natürlich auch stellen. Gibt da noch ein paar mehr als das Forum hier. Für den Einstieg würde ich ggf. ein Tutorial im Net bevorzugen. Hier mal ein paar Beispiele für Hilfen und Seiten zum Nachschlagen. Ansonsten einfach mal nach VBA lernen suchen, ist mit eine häufig gestellte Frage.
http://www.vba-tutorial.de/
http://www.online-excel.de/excel/grusel.php?f=4
https://www.fernuni-hagen.de/imperia/md/content/zmi_2010/b012.pdf
Soweit mal zur Frage noch. HIer nun der Code. VG
Private Sub ToggleButton1_Click()
Dim ende As Long
Dim zeile As Long
Dim spalte As Long
Dim raus As Boolean
Dim lassen As String
Dim nebenrechnung()
Application.ScreenUpdating = False
'das sind die Zeilen, die immer da sein sollen
nebenrechnung = Array(24, 35, 51, 69, 76, 89, 97, 106, 111, 134, 137, 147)
'mit @ verketten
lassen = "@" & Join(nebenrechnung, "@") & "@"
With ToggleButton1
'Überschrift und Farbe ändern, je nach Auswahl des Buttons
.Caption = "Nicht bebuchte Sachkonten sind " & IIf(.Value = True, "eingeblendet", "ausgeblendet")
.BackColor = &HC0C0C0
'auswerten des Wertes
If .Value = False Then
'ausblenden
'bis zur letzten Zeile die veränderte wurde prüfen, Formatierungen sind auch Veränderungen, ende ist die Nummer der letzten Zeile
ende = ActiveSheet.UsedRange.Rows.Count
'durch alle Zeilen
For zeile = 6 To ende
'wenn die Zeilennummer im string für die Nebenrechnugen nicht vorkommt prüfen
If InStr(1, lassen, "@" & zeile & "@", vbTextCompare) = 0 Then
raus = True 'dient als Prüfwert, ob die Zeile raus kommt
'durch Spalte 6 bis 17 gehen
For spalte = 6 To 17
'wenn der Zellwert ungleich 0 ist, dann die Schleife beenden, und Löschkriterium auf falsch setzen
If ActiveSheet.Cells(zeile, spalte) <> 0 Then
raus = False
Exit For
End If
Next spalte
'eigentliches ausblenden
If raus = True Then ActiveSheet.Rows(zeile).EntireRow.Hidden = True
End If
Next zeile
Else
'alles einblenden
ActiveSheet.UsedRange.EntireRow.Hidden = False
End If
End With
Application.ScreenUpdating = True
End Sub
|