Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen

Markro um Zeilen auszublenden (2 Tabellenblätter)

Betrifft: Markro um Zeilen auszublenden (2 Tabellenblätter) von: Tom
Geschrieben am: 20.06.2014 16:24:53

Hallo zusammen

Ich habe schon oft hier im Forum Beiträge gelesen und so auch meistens eine Lösung meiner Probleme gefunden. Nun habe ich ein, so wie ich das sehe, eher kleines Problem, allerdings bräuchte ich trotzdem eure Hilfe.

Ich möchte mehrere Zeilen auf zwei unterschiedlichen Tabellenblättern ausblenden. Da die Mö _ glichkeit besteht, dass weitere Zeilen eingefügt werden, habe ich es mit einer zusätzlichen Spalte gelöst. In dieser Steht eine 1 oder nichts. Ich habe folgende beiden Makros:


Private Sub OptionButton1_Click()

If OptionButton1.Value = True Then
    Dim i As Integer
    Application.ScreenUpdating = False
    With Sheets("Name1")
        For i = 14 To 750
        If .Cells(i, 7) = 1 Then .Rows(i).Hidden = True
        Next i
    End With
    
    With Sheets("Name2")
        For i = 14 To 750
        If .Cells(i, 3) = 1 Then .Rows(i).Hidden = True
        Next i
    End With



End If

End Sub

und

Private Sub OptionButton2_Click()

If OptionButton2.Value = True Then
    Dim i As Integer
    Application.ScreenUpdating = False
    With Sheets("Name1")
        For i = 14 To 750
        If .Cells(i, 7) = 1 Then .Rows(i).Hidden = False
        Next i
    End With

    With Sheets("Name2")
        For i = 14 To 750
        If .Cells(i, 3) = 1 Then .Rows(i).Hidden = False
        Next i
    End With


End If

End Sub

Das funktioniert für das Tabellenblatt Name1 auch ohne Probleme. Bei Name2 tut sich allerdings nichts. Ich denke mal es liegt an ner Kleinigkeit, selber komme ich jedoch nicht darauf.

Besten Dank und Gruss
Tom

  

Betrifft: Markro um Zeilen auszublenden (2 Tabellenblätter) von: Hajo_Zi
Geschrieben am: 20.06.2014 17:48:02

Hallo Tom,

warum Makro, benutze Autofilter.

GrußformelHomepage


  

Betrifft: AW: Markro um Zeilen auszublenden (2 Tabellenblätter) von: frigo
Geschrieben am: 20.06.2014 21:47:15

Hallo Tom,

ich kann Hajos Empfehlung nur unterstützen. Makros solltest Du nur einsetzen, wenn es keine adäquate Alternative gibt. Mit Ausführen von Makros geht Dir z.B. immer die Rückgängig-Funktion flöten. Die Alternative mit Autofilter funktioniert auch, wenn Du mehr als 750 Zeilen hast ;-)

Zu Deinen Makros:
Kann auch keinen Fehler erkennen. Ich kann mir nur vorstellen, dass im 2. Blatt der Hilfswert nicht in Spalte C steht, auf den Du abfragst. Ggf. ausgeblendete Spalten?
Unabhängig davon solltest Du am Ende des IF-Blocks aber Application.ScreenUpdating wieder auf True setzen.

Viel Erfolg
frigo


  

Betrifft: AW: Markro um Zeilen auszublenden von: Tom
Geschrieben am: 23.06.2014 07:52:18

Schon mal vielen Dank für eure Antworten.

@Frigo: Spalte C ist schon korrekt. Der Wert steht dort in einer anderen Spalte.

Autofilter wäre sicher auch eine Möglichkeit. Gib es beim Autofilter auch eine Möglichkeit, mit einem Klick auf unterschiedlichen Tabellenblättern Zeilen auszublenden?

Gruss Tom


  

Betrifft: AW: Markro um Zeilen auszublenden von: Tom
Geschrieben am: 23.06.2014 07:58:13

Schon mal vielen Dank für eure Antworten.

@Frigo: Spalte C ist schon korrekt. Der Wert steht dort in einer anderen Spalte.

Autofilter wäre sicher auch eine Möglichkeit. Gib es beim Autofilter auch eine Möglichkeit, mit einem Klick auf unterschiedlichen Tabellenblättern Zeilen auszublenden?

Gruss Tom


  

Betrifft: AW: Markro um Zeilen auszublenden von: Tom
Geschrieben am: 24.06.2014 13:13:10

Inzwischen sieht das Makro folgendermassen aus:

Private Sub OptionButton1_Click()

Application.ScreenUpdating = False
Sheets("Name1").Unprotect Password:="123"
Sheets("Name2").Unprotect Password:="123"

If OptionButton1.Value = True Then
    Dim i As Integer
    With Sheets("Name1")
        For i = 14 To 750
        If .Cells(i, 6) = 1 Then .Rows(i).Hidden = True
        Next i
    End With

    With Sheets("Name2")
        For i = 14 To 1600
        If .Cells(i, 2) = 1 Then .Rows(i).Hidden = True
        Next i
    End With

End If

Application.ScreenUpdating = True
Sheets("Name1").Protect Password:="123"
Sheets("Name2").Protect Password:="123"

End Sub
Ich muss die betroffenen Sheets entsperren, da ansonsten das Makro nicht funktioniert (run time error 1004: Unable to set the Hidden property of the Range class).

Es klappt alles. Allerdings checkt das Makro jedes Mal die komplette Spalte F bzw. B ab. Dies ist nötig, da der Nutzer später bei Bedarf zusätzliche Zeilen einfügen kann.

Hat jemand noch irgendwelche Verbesserungsvorschläge, wie das Problem vielleicht eleganter gelöst werden kann? Autofilter kommt leider nicht in Frage, da gleichzeitig auf mehreren Tabellenblättern Zeilen ein- und ausgeblendet werden müssen.

Besten Dank


 

Beiträge aus den Excel-Beispielen zum Thema "Markro um Zeilen auszublenden (2 Tabellenblätter)"