Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

60 CheckBoxen

Forumthread: 60 CheckBoxen

60 CheckBoxen
08.02.2008 19:28:56
Gordon
Moin,
habe mal 'ne Frage, wo ich einen einfacheren Weg suche. Und zwar habe ich auf einem Blatt ("Ergebnisse) 60 Checkboxen. Wenn auf eine das Häkchen setze (bzw. es wegnehme) ändern sich auf einem anderen Blatt ("Spielzettel") die Reihenhöhen. Hier mal der Code für die Checkbox1:

Private Sub CheckBox1_Click()
With Worksheets("Spielzettel")
If CheckBox1.Value = False Then
.Rows("1:22").RowHeight = 0
ElseIf CheckBox1.Value = True Then
.Rows("1:3").RowHeight = 10.5
.Rows("4").RowHeight = 19.5
.Rows("5:6").RowHeight = 12.75
.Rows("7").RowHeight = 24.75
.Rows("8:9").RowHeight = 13.5
.Rows("10").RowHeight = 7.5
.Rows("11").RowHeight = 12.75
.Rows("12").RowHeight = 13.5
.Rows("13").RowHeight = 7.5
.Rows("14").RowHeight = 12.75
.Rows("15").RowHeight = 13.5
.Rows("16").RowHeight = 7.5
.Rows("17").RowHeight = 12.75
.Rows("18").RowHeight = 13.5
.Rows("19").RowHeight = 7.5
.Rows("20:21").RowHeight = 12.75
.Rows("22").RowHeight = 7.5
End If
End With
End Sub


So, nun habe ich zwei Fragen dazu:
1.
Man sieht ja, dass bei verschiedenen Zellen, oft die gleiche Höhe verwendet wird (z.B. 10 und 13). Kann man das in einem Befehl zusammenfassen um den Quelltext da etwas zu minimieren?
2.
Und hier die wichtigere bzw. interessantere Frage für mich: Das ja nun die Checkbox1. Nun habe ich noch weitere 59 Checkboxen, die eigentlich genau gleich aussehen, nur das pro Checkbox alles um 22 Zeilen verschoben ist. Heißt als z.B. für Checkbox2 das aus Zeile 1 nun Zeile 23, aus Zeile 2 die 24, usw....bei Checkbox3 geht es dann natürlich bei Zeile 45 los.
Hat da jemand 'nen Plan wie ich das am besten als Quelltext zusammenfassen kann, denn nun 60 mal den gleichen Text schreiben mit etwas anderen Zeilenwerten. Hat da jemand 'ne Idee?

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 60 CheckBoxen
08.02.2008 20:04:01
Josef
Hallo Gordon,
probier mal.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub CheckBox1_Click()
CheckRH CheckBox1
End Sub

Private Sub CheckBox2_Click()
CheckRH CheckBox2
End Sub

Private Sub CheckBox3_Click()
CheckRH CheckBox3
End Sub

Private Sub CheckRH(CB As MSForms.CheckBox)
Dim i As Integer, n As Integer

i = Cint(Replace(CB.Name, "CheckBox", ""))
i = (i - 1) * 22 + 1

With Worksheets("Spielzettel")
    If Not CB Then
        .Rows(i & ":" & i + 21).RowHeight = 0
    Else
        For n = 0 To 21
            Select Case n
                Case 1 To 3
                    .Rows(n + i).RowHeight = 10.5
                Case 4
                    .Rows(n + i).RowHeight = 19.5
                Case 5, 6, 11, 14, 17, 20, 21
                    .Rows(n + i).RowHeight = 12.75
                Case 7
                    .Rows(n + i).RowHeight = 24.75
                Case 8, 9, 12, 15, 18
                    .Rows(n + i).RowHeight = 13.5
                Case Else
                    .Rows(n + i).RowHeight = 7.5
            End Select
        Next
    End If
End With
End Sub


Gruß Sepp



Anzeige
Korrektur
08.02.2008 20:06:46
Josef
Hallo Gordon,
zu schnell gepostet.
Dieser Code passt.
Private Sub CheckRH(CB As MSForms.CheckBox)
Dim i As Integer, n As Integer

i = Cint(Replace(CB.Name, "CheckBox", ""))
i = (i - 1) * 22 + 1

With Worksheets("Spielzettel")
    If Not CB Then
        .Rows(i & ":" & i + 21).RowHeight = 0
    Else
        For n = 1 To 22
            Select Case n
                Case 1 To 3
                    .Rows(n + i - 1).RowHeight = 10.5
                Case 4
                    .Rows(n + i - 1).RowHeight = 19.5
                Case 5, 6, 11, 14, 17, 20, 21
                    .Rows(n + i - 1).RowHeight = 12.75
                Case 7
                    .Rows(n + i - 1).RowHeight = 24.75
                Case 8, 9, 12, 15, 18
                    .Rows(n + i - 1).RowHeight = 13.5
                Case Else
                    .Rows(n + i - 1).RowHeight = 7.5
            End Select
        Next
    End If
End With
End Sub


Gruß Sepp



Anzeige
AW: Korrektur
08.02.2008 20:56:36
Gordon
Klappt wie geschmiert!
Danke! :)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige