Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Frame
BildScreenshot zu Frame Frame-Seite mit Beispielarbeitsmappe aufrufen

(in Frames) CheckBox.Caption aus Tabelle

Betrifft: (in Frames) CheckBox.Caption aus Tabelle von: Vinz
Geschrieben am: 16.09.2007 10:40:46

Hallo zusammen,

ich möchte über Auswahlfelder bestimmte Makros aktivieren. Dazu habe ich eine Userform angelegt, auf der 4 verschiedene Frames mit einer Anzahl von Checkboxen liegt. Die Bezeichnung (Caption) der Frames und die Bezeichnung (Caption) der Checkboxen sollen aus einer Tabelle entnommen werden, da sich das öfter ändern kann. Mein Problem liegt nun darin, dass das Makro zwar alle Bereiche der Tabelle richtig durchläuft, aber die Eintragung der Checkbox.Caption immer nur im Frame 1 erfolgt ...
Irgendwie stehe ich total auf dem Schlauch und hoffe bei den Profis hier, Hilfe zu finden ... hier mal der Source-Code der Userform dazu:

Private Sub UserForm_Initialize()
   Dim rngFrameCap, rngCBCap As Range
   Dim iCount, iCol, lCol, iRow, lRow As Integer
   Dim crtl As Control
   'letzte Zeile in Spalte A suchen
   'lRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
   'lRow = ActiveSheet.UsedRange.Rows.Count
   'letzte Spalte in Zeile 1 suchen
   lCol = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
   'lCol = ActiveSheet.UsedRange.Columns.Count
   Set rngFrameCap = Range(Cells(1, 1), Cells(1, lCol))
   For iCol = 1 To lCol
      If iCol Mod 2 = 0 Then
        Controls("Frame" & iCol / 2).Caption = rngFrameCap(iCol)
        iRow = 2
        lRow = ActiveSheet.UsedRange.Rows.Count
        Set rngCBCap = Range(Cells(iRow, iCol), Cells(lRow, iCol))
        'rngCBCap.Select
        For iRow = 1 To lRow
            If IsEmpty(rngCBCap(iRow)) Then
                With Controls("CheckBox" & iRow)
                    .Enabled = False
                    .Caption = "nicht belegt"
                End With
            Else
                With Controls("CheckBox" & iRow)
                    .Enabled = True
                    .Caption = rngCBCap(iRow)
                End With
            End If
        Next iRow
      End If
   Next iCol
End Sub



Danke schon mal im Voraus für die Hilfe ...
Gruß
Vinz

  

Betrifft: AW: (in Frames) CheckBox.Caption aus Tabelle von: Vinz
Geschrieben am: 16.09.2007 10:46:20

Hier die Beispielmappe dazu ...

https://www.herber.de/bbs/user/46068.xls


  

Betrifft: AW: (in Frames) CheckBox.Caption aus Tabelle von: Hajo_Zi
Geschrieben am: 16.09.2007 11:03:36

Hallo Vinz,

die Checkboxen befindenm sich auf Frame, also must Du Sie wie folgt ansprechen.
Frame2.Controls("Checkbox13").Caption = Range("D2")

Das ist mir zu aufwendig in Deinen Code einzuarbeiten.

GrußformelHomepage


  

Betrifft: AW: (in Frames) CheckBox.Caption aus Tabelle von: Vinz
Geschrieben am: 16.09.2007 12:46:09

Hallo Hajo,

an das hatte ich gar nicht mehr gedacht, dass die Frames ja fortlaufend nummeriert sind. Ich hatte es versucht mit der variablen Frames-Anweisung (Controls("Frame" & iCol / 2)) in Verbindung mir der variablen CheckBox-Anweisung (Controls("CheckBox" & iRow)) ... und das hatte ich absolut nicht auf die Reihe gekriegt.

Danke
Gruß
Vinz


  

Betrifft: AW: (in Frames) CheckBox.Caption aus Tabelle von: Peter Feustel
Geschrieben am: 16.09.2007 11:13:12

Hallo Vinz,

ich meine, der Fehler liegt hier

For iRow = 1 To lRow
If IsEmpty(rngCBCap(iRow)) Then
With Controls("CheckBox" & iRow)

und zwar gibt es im Frame2 keine CheckBox1, die heißt da CheckBox13 usw.
im Frame3 beginnt es mit CheckBox24 usw.

Gruß Peter


  

Betrifft: AW: (in Frames) CheckBox.Caption aus Tabelle von: Peter Feustel
Geschrieben am: 16.09.2007 11:22:31

Hallo Vinz,

hinzu kommt noch, dass deine CheckBoxes nicht lückenlos vergeben wurden - CheckBox12 fehlt, nach 11 kommt bei dir 13.

In der MusterMappe läuft es fast - aber um eins verschoben - siehe oben:

https://www.herber.de/bbs/user/46069.xls

Gruß Peter


  

Betrifft: AW: Rückmeldung von: Vinz
Geschrieben am: 16.09.2007 12:41:04

Servus Peter,

Deine Lösung funktioniert so, wie ich es wollte. Nochmals vielen Dank dafür.
Mit der Nummernvergabe der Checkboxen lief beim Kopieren offensichtlich was schief, sollte eigentlich fortlaufend sein. Habs ausgebessert und nun passt es. :-)

Ich verstehe zwar noch nicht ganz, warum man das nicht gleich über die iRow-Variable machen kann, aber das (Variable iChkBox) werde ich mir nochmal genauer ansehen.

Gruß und schönes WE
Vinz


  

Betrifft: AW: Rückmeldung von: Peter Feustel
Geschrieben am: 16.09.2007 13:11:12

Hallo Vinz,

ganz einfach, iRow beginnt jedesmal (für jede Spalte) wieder bei 1. Und deine CheckBoxes haben nur EINMAL eine CheckBox1, dann immer fortlaufend bis - ichglaube - 44.

Gruß Peter


  

Betrifft: AW: Rückmeldung von: Vinz
Geschrieben am: 16.09.2007 13:21:59

... jetzt, wo Du es schreibst ... manchmal steh ich wirklich auf der Leitung ... und dann noch dazu ein paar "unscheinbare" Leichtsinnsfehler ... dann ist der Wahnsinn komplett ...

mille grazie
Vinz


  

Betrifft: AW: (in Frames) CheckBox.Caption aus Tabelle von: Josef Ehrensberger
Geschrieben am: 16.09.2007 11:07:36

Hallo Vinz,

probier mal.

Private Sub UserForm_Initialize()
Dim rngFrameCap, rngCBCap As Range
Dim iCount, iCol, lCol, iRow, lRow As Integer
Dim crtl As Control
'letzte Zeile in Spalte A suchen
'lRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'lRow = ActiveSheet.UsedRange.Rows.Count
'letzte Spalte in Zeile 1 suchen
lCol = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
'lCol = ActiveSheet.UsedRange.Columns.Count

Set rngFrameCap = Range(Cells(1, 1), Cells(1, lCol))

For iCol = 1 To lCol
    If iCol Mod 2 = 0 Then
        With Controls("Frame" & iCol / 2)
            .Caption = rngFrameCap(iCol)
            iRow = 2
            lRow = ActiveSheet.UsedRange.Rows.Count
            Set rngCBCap = Range(Cells(iRow, iCol), Cells(lRow, iCol))
            'rngCBCap.Select
            For iRow = 1 To lRow
                If IsEmpty(rngCBCap(iRow)) Then
                    With .Controls("CheckBox" & iRow)
                        .Enabled = False
                        .Caption = "nicht belegt"
                    End With
                Else
                    With .Controls("CheckBox" & iRow)
                        .Enabled = True
                        .Caption = rngCBCap(iRow)
                    End With
                End If
            Next iRow
        End With
    End If
Next iCol

End Sub



Gruß Sepp



  

Betrifft: AW: Rückmeldung von: Vinz
Geschrieben am: 16.09.2007 12:35:11

Servus Sepp,

mit der With-Anweisung hatte ich es schon versucht, leider lief das Makro - wie auch bei Deiner Lösung - dabei auf einen Fehler:
___________________________________

Laufzeitfehler '-2147024809(80070057)':

Das Objekt konnte nicht gefunden werden.
___________________________________

Der Vorschlag von Peter funktioniert.
Nochmal vielen Dank

Gruß
Vinz


  

Betrifft: AW: Danke für die Hilfe von: Vinz
Geschrieben am: 16.09.2007 11:51:29

Danke für die schnelle Hilfe. Werde mir die vorgeschlagenen Lösungen mal ansehen und mich dann nochmal melden.



Vinz


 

Beiträge aus den Excel-Beispielen zum Thema "(in Frames) CheckBox.Caption aus Tabelle"