Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1152to1156
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
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

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

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige