Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1580to1584
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
Inhaltsverzeichnis

Caption aus Liste

Caption aus Liste
25.09.2017 08:44:02
Thomas
Guten Morgen zusammen,
ich habe ein Userform mit 27 Checkboxen für die ich den Namen aus einem Tabellenblatt (Tabelle4 Zellen P5:P31) holen möchte. Hierzu habe ich folgenden Code.
Private Sub CommandButton3_Click()
Dim ctl As Control
Dim Rng As Range
Set Rng = Tabelle4.Cells(5, 16)
For Each ctl In AMVwaehlen.Controls
If TypeName(ctl) = "CheckBox" Then
ctl.Caption = Rng
End If
Next ctl
End Sub
Mit diesem wird der Name natürlich nur aus "P5" geholt.
Was muss ich also einfügen um jeweils eine Zeile weiterzuspringen?
Ich bekomme es einfach nicht hin.
Viele Grüße,
Thomas

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Hab's hinbekommen owT
25.09.2017 08:58:01
Thomas
AW: Caption aus Liste
25.09.2017 08:58:57
Thomas
Hab's hinbekommen.
Gruß,
Thomas
AW: Caption aus Liste
25.09.2017 08:59:35
Beverly
Hi Thomas,
z.B. so:
    Dim ctl As Control
Dim Rng As Range
Set Rng = Tabelle4.Cells(5, 16)
For Each ctl In AMVwaehlen.Controls
If TypeName(ctl) = "CheckBox" Then
ctl.Caption = Rng
Set Rng = Rng.Offset(1, 0)
End If
Next ctl


AW: Caption aus Liste
25.09.2017 12:46:43
Thomas
Hallo Karin,
danke für Deine Antwort. Ich hatte es etwas anders gelöst, aber es hat nicht richtig funktioniert.
Vielleicht kannst Du mir ja sagen warum. Für die ersten 26 Checkboxen hat's funktioniert, für die letzte nicht.
Ich nehme ja den Namen aus Spalte 16 und den Zustand aus 17.
Dein Code (um die zweite Spalte erweitert):
Private Sub UserForm_Initialize() 'CheckBox Name / Wert zuweisen
Dim ctl As Control
Dim Rng1 As Range
Dim Rng2 As Range
Set Rng1 = Tabelle4.Cells(5, 16)
Set Rng2 = Tabelle4.Cells(5, 17)
For Each ctl In AMVwaehlen.Controls
If TypeName(ctl) = "CheckBox" Then
ctl.Caption = Rng1
ctl.Value = Rng2
Set Rng1 = Rng1.Offset(1, 0)
Set Rng2 = Rng2.Offset(1, 0)
End If
Next ctl
End Sub
Mein Code:
Private Sub UserForm_Initialize() 'CheckBox Name / Wert zuweisen
Dim ctl As Control
Dim iRow As Integer
iRow = 5
For Each ctl In AMVwaehlen.Controls
If TypeName(ctl) = "CheckBox" Then
ctl.Caption = Tabelle4.Cells(iRow, 16)
ctl.Value = Tabelle4.Cells(iRow, 17)
End If
iRow = iRow + 1
Next ctl
End Sub
Viele Grüße,
Thomas
Anzeige
AW: Caption aus Liste
25.09.2017 15:09:10
Beverly
Hi Thomas,
und WAS hat bei deinem Code nicht funktioniert? Man sollte das schon genau beschreiben, denn hinter dem Ausdruck "funktioniert nicht" kann vieles stehen - Code macht nicht was er soll, Fehlermeldung tritt auf...
Ich kann deshalb nur raten: es gibt auch andere Steuerelemente in deinem UserForm und du hast nicht alle CheckBoxen fortlaufend hintereinader erstellt, sodass sie nun nicht hintereinader in der For-Next-Schleife abgearbeitet werden. Deine Variable iRow wird aber nach jedem Steuerelement um 1 erhöht, sodass dann die Zeilennummer nicht mehr der Zeilennummer mit dem gewünschten Inhalt entspricht. Folglich müsstest du die Zeilennummer innerhalb der If-Anweisung um 1 erhöhen.


Anzeige
AW: Caption aus Liste
25.09.2017 15:38:51
Thomas
Hi Karin,
genau das ist es. Es befinden sich noch drei CommandButtons auf der UserForm AMVwaehlen.
Dadurch werden natürlich Zeilen "übersprungen".
Manchmal sieht man die naheliegendsten Dinge nicht.
Besten Dank, hast mir sehr geholfen.
Grüße,
Thomas
AW: Caption aus Liste
25.09.2017 13:02:06
Daniel
Hi
wie sind den die Checkboxen angeordnet?
wenn sie einfach nur untereinander stehen, könntest du alle Checkboxen durch eine Multiselect-Listbox ersetzen.
mit der Einstellung ListStyle = 1-fm..Option sieht deine Listbox dann aus wie eine Gruppe von Checkboxen
um die Überschriften aus der Tabelle zu verwenden, schreibst du einfach die Adresse des Zellbereichs in die Eigenschaft RowSoure: RowSource = Tabelle4!P5:P31
um die Häkchen dann entsprechend den Nachbarzellen zu setzen, kannst du folgenden Code verwenden:
for i = 0 to Listbox1.ListCount
Listbox1.Selected(i) = Range(Listbox1.RowSource)(1).Offset(i, 1).value
Next
um die Häkchen in die Zellen zurückzuschreiben brauchst du dann diesen Code
for i = 0 to Listbox1.ListCount
Range(listbox1.RowSource)(1).Offset(i, 1).value = Listbox1.Selected(i)
Next
das spart in der Regel für dich einigen Aufwand, weil du nur 1 Steuerelement hast und nicht 27
Gruß Daniel
Anzeige
AW: Caption aus Liste
25.09.2017 13:05:52
Thomas
Hallo Daniel,
vielen dank für Deine Antwort.
Ich hatte mich aus optischen Gründen gegen eine Multiselect-Listbox entschieden.
Mittlerweile hab ich es auch (mit Karins Hilfe) hinbekommen.
Trotzdem besten Dank!
Grüße,
Thomas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige