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

Forumthread: für jede Spalte automatisch eine checkbox

für jede Spalte automatisch eine checkbox
PeterO
Hallo Forum!
Ich habe eine Tabelle mit Überschriften in Spalten, die stetig erweitert wird (A3 bis max. Spalte AZ3). Für eine spätere Auswahl möchte ich eine dynamische Userform mit Checkboxen, deren Bezeichnung (Caption) durch die Spaltenüberschriften gesetzt wird.
Beispiel:
Tabelle1
 ABCD
1       
2       
3einszweidreivier
4       
5       

Tabellendarstellung in Foren Version 5.21


checkbox1.caption=cells(3,1).value
checkbox2.caption=cells(3,2).value
...
Das Ganze soll automatisch ablaufen. An die Userform stelle ich vorerst keine weiteren Anforderungen.
Freue mich auf eure Lösungen.
Gruß Peter
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Listbox statt Checkboxen
21.04.2010 01:43:57
Daniel
Hi
einfacher ist es, anstelle der vielen Checkboxen EINE Listbox zu nehmen.
Diese lässt sich wesentlich leichter befüllen und auswerten.
bei entsprechender Einstellung sieht die Listbox auch aus wie eine Sammlung von Checkboxen.
die notwendigen Einstellungen wären:
ListStyle: = Option
Mulitselect: = 1
das Befüllen der Listbox im Initialize-Event könnte so gehen:
Listbox1.List = Worksheetfunction.Transpose(Rows(3).SpecialCells(xlcelltypeconstants))
die Auswertung, welche Spalten angecheckt sind, kannst mit einer Schleife und der Eigenschaft: Listbox1.Selected(i) ausführen.
Gruß, Daniel
Anzeige
AW: Listbox statt Checkboxen
21.04.2010 06:47:13
PeterO
Hallo Daniel,
super, genau das habe ich mir vorgestellt. Nur das mit der Auswertung bekomme ich nicht hin. Könntest du mir vielleicht eine Schleife "bauen", die mir alle angecheckten Spalten ausgibt?
Gruß Peter
Die Schleife <-> schau mal ob das passt ...
21.04.2010 07:45:49
Matthias
Hallo Peter
Hier mal die praktische Umsetzung des Vorschlags von Daniel.

Option Explicit

Private Sub UserForm_Activate()
 ListBox1.Clear
 ListBox1.List = WorksheetFunction.Transpose(Rows(3).SpecialCells(xlCellTypeConstants))
End Sub

Private Sub CommandButton1_Click()
Dim i As Long
 For i = 0 To Me.ListBox1.ListCount - 1
  MsgBox i + 1 & ". Listboxeintrag ergibt " & ListBox1.Selected(i)
 Next
End Sub
https://www.herber.de/bbs/user/69175.xls
Statt eine MsgBox zu zeigen, kannst Du ja machen was immer Du willst ;o)
Gruß Matthias
Anzeige
AW: Die Schleife <-> schau mal ob das passt ...
21.04.2010 09:33:45
PeterO
Das ist es. Danke!
Werde mich dann an meiner individuellen Umsetzung versuchen ;-)
ich kriege es einfach nicht hin...
21.04.2010 21:44:29
PeterO
Vielen Dank erst mal für den Lösungsansatz. Allerdings kriege ich die Umsetzung nicht hin...
Durch das Auswählen der "Checkboxen" sollen die entsprechenden Spalten markiert werden, um daraus dann ein Diagramm zu erstellen (hätte ich vllt. schon mal erwähnen sollen?!). Mein Ansatz sieht nun so aus:
Private Sub CommandButton2_Click()
Dim i As Long
Dim h As Long
Dim ber() As Range
Dim ber_dia2 As Range
With Sheets("Tabelle1")
For i = 0 To UserForm1.ListBox1.ListCount - 1
ReDim ber(1 To UserForm1.ListBox1.ListCount)
If UserForm1.ListBox1.Selected(i) = True Then
i = i + 1
Set ber(i) = Range(.Cells(3, i), .Cells(65000, i).End(xlUp))
If ber_dia2 Is Nothing Then
Set ber_dia2 = ber(i)
Else
Set ber_dia2 = Union(ber_dia, ber(i))
End If
i = i - 1
Else
End If
Next
ber_dia2.Select
End With
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=ber_dia2, PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Auswertung"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Datum"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Leistung"
End With
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlValue, xlPrimary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlCategoryScale
Sheets("Tabelle1").Cells(3, 1).End(xlDown).Select
End Sub
Der Code ist in der Userform hinter dem Commandbutton hinterlegt. Er hängt sich immer bei

Set ber_dia2 = Union(ber_dia, ber(i))
mit Laufzeitfehler 424 und dem Hinweis Objekt erforderlich auf.
Wo ist der Fehler?
Anzeige
erledigt - owT
23.04.2010 16:25:48
PeterO
;

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
Anzeige

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