Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
904to908
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
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

(in Frames) CheckBox.Caption aus Tabelle

(in Frames) CheckBox.Caption aus Tabelle
16.09.2007 10:40:46
Vinz
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

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: (in Frames) CheckBox.Caption aus Tabelle
16.09.2007 10:46:20
Vinz
Hier die Beispielmappe dazu ...

Die Datei https://www.herber.de/bbs/user/46068.xls wurde aus Datenschutzgründen gelöscht


AW: (in Frames) CheckBox.Caption aus Tabelle
16.09.2007 11:03:00
Hajo_Zi
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.

AW: (in Frames) CheckBox.Caption aus Tabelle
16.09.2007 12:46:00
Vinz
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

Anzeige
AW: (in Frames) CheckBox.Caption aus Tabelle
16.09.2007 11:13:12
Peter
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

AW: (in Frames) CheckBox.Caption aus Tabelle
16.09.2007 11:22:00
Peter
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

Anzeige
AW: Rückmeldung
16.09.2007 12:41:04
Vinz
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

AW: Rückmeldung
16.09.2007 13:11:00
Peter
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

Anzeige
AW: Rückmeldung
16.09.2007 13:21:59
Vinz
... 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

AW: (in Frames) CheckBox.Caption aus Tabelle
16.09.2007 11:07:00
Josef
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

Anzeige
AW: Rückmeldung
16.09.2007 12:35:00
Vinz
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

AW: Danke für die Hilfe
16.09.2007 11:51:29
Vinz
Danke für die schnelle Hilfe. Werde mir die vorgeschlagenen Lösungen mal ansehen und mich dann nochmal melden.
Vinz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige