Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1828to1832
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
Spalte als Zahl ausgeben
16.05.2021 10:55:03
Daniel
Guten Tag
Wie schreibt es mir aus folgendem Code noch die Spalte als Zahl in die MsgBox? Die Zeile habe ich bereits auslesen können!

Private Sub CommandButton2_Click()
Dim ctrl As Msforms.Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Object.Value = True Then
MsgBox ctrl.Name
End If
End If
Next
End Sub
Besten Dank und einen schönen Sonntag!
Gruss Daniel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
stimmt so nicht
16.05.2021 11:12:17
ralf_b
Du gibst den Namen der Checkbox aus. Das er scheinbar die Nr der Zeile beinhaltet ist im Endeffekt dann richtig.
Wenn sich die Checkbox auf einem Arbeitsblatt befindet , kannst du z.b. mit ctrl.topleftcell.offset(,1).column die SpaltenNr ermitteln in der die Checkbox liegt.
AW: stimmt so nicht
16.05.2021 11:17:58
Daniel
Hallo ralf_b
Welch ein Zufall! :-)
Nein die Checkboxen befinden sich in einer UserForm. Diese werden anhand unterstehenden Code erstellt. Vielleicht hast Du ja eine bessere Lösung?

Private Sub UserForm_Initialize()
Dim i As Integer
Dim lolast As Long
Dim lngZaehler As Long
Worksheets(1).Activate
lolast = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To lolast
If Cells(i, 1).Font.ColorIndex = 3 Then
With Me.Controls.Add("Forms.CheckBox.1", Name:=i)
.Left = 100
.Width = 400
.Top = 50 + lngZaehler * 25
.Caption = Cells(i, 1)
lngZaehler = lngZaehler + 1
End With
End If
Next
End Sub

Anzeige
AW: stimmt so nicht
16.05.2021 11:23:46
onur
Wenn die Checkboxen doch auf der Userform sind, WELCHE Spalten willst du denn dann auslesen?
AW: stimmt so nicht
16.05.2021 11:37:25
hary
Moin
In deinem Code ist die Spalte immer A!?
Versuch mal so. Die Spaltennummer wird in die Tag Eigenschaft gesetzt. Und auch wieder ausgelesen.

Private Sub UserForm_Initialize()
Dim i As Integer
Dim lolast As Long
Dim lngZaehler As Long
Worksheets(1).Activate
lolast = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To lolast
If Cells(i, 1).Font.ColorIndex = 3 Then
With Me.Controls.Add("Forms.CheckBox.1", Name:=i)
.Left = 100
.Width = 400
.Top = 50 + lngZaehler * 25
.Caption = Cells(i, 1)
.Tag = Cells(i, 1).Column '---Spaltenummer
lngZaehler = lngZaehler + 1
End With
End If
Next
End Sub
und fuer den Button

Dim ctrl As Msforms.Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl.Object.Value = True Then
MsgBox ctrl.Name
MsgBox ctrl.Tag '---Spaltennummer
End If
End If
Next
End Sub
gruss hary
Anzeige
AW: stimmt so nicht
16.05.2021 12:05:34
Daniel
Hallo hary
Vielen Dank. Auf diese Funktion wäre ich nie gekommen und auch noch nie was davon gelesen. Funktioniert!
Wünsche noch einen schönen Sonntag.
Gruss Daniel
AW: stimmt so nicht
16.05.2021 19:51:01
Daniel
Hallo zusammen!
Ich schon wieder!
Puh da habe ich was angefangen! Nun habe ich meinen Code noch etwas ergänzt. Und zwar mit einem Label. Dies soll anzeigen ob eine Etikette gedruckt wird oder nicht. Wird die CheckBox ausgewählt, so sollte hinten im Label die Textfarbe grün werden und darin stehen "Etiketten werden gedruckt"!
Erstens weis ich nicht wie der Code aussehen soll, zweitens wohin muss ich dieser schreiben? Ich vermute jetzt mal in UserForm_Initialize?
Ihr mein ergänzter Code

Private Sub UserForm_Initialize()
Dim i As Integer
Dim s As Byte
Dim lolast As Long
Dim lngZaehler As Long
Worksheets(1).Activate
lolast = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For i = 1 To lolast
If Cells(i, 1).Font.ColorIndex = 3 Then
Dif1 = 30 - Len(Cells(i, 1))
Dif2 = 30 - Len(Cells(i, 2))
Dif3 = 30 - Len(Cells(i, 3))
With Me.Controls.Add("Forms.CheckBox.1", Name:=i)
.Font.Size = 12
.Left = 100
.Width = 600
.Top = 50 + lngZaehler * 25
.Caption = Cells(i, 1) & String(Dif1, 32) & vbTab & vbTab & Cells(i, 2) & String(Dif2, 32) _
& vbTab & vbTab & Cells(i, 3) & String(Dif3, 32) & vbTab & vbTab & Cells(i, 4)
.Tag = Cells(i, 1).Column '---Spaltenummer
lngZaehler = lngZaehler + 1
End With
With Me.Controls.Add("Forms.Label.1", Name:=i)
.Left = 750
.Width = 140
.Top = 27 + lngZaehler * 25
.Font.Size = 12
.ForeColor = vbRed
.Caption = "Druckt keine Etiketten!"
End With
End If
Next
End Sub
Gruss Daniel
Anzeige
Bessere Lösung:
17.05.2021 11:08:08
Daniel
Multiselect Listbox anstelle von zur Laufzeit erstellten Checkboxen.
Ist viel einfacher zu programmieren.
Gruß Daniel

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige