Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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?

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! :)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige