Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1892to1896
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

Frames und Labels per Schleife

Frames und Labels per Schleife
21.07.2022 06:36:53
Chris
Hallo zusammen,
ich erstelle mit unten stehendem Makro je fünf Frames und Labels. Da die Labels innerhalb der Frames liegen sind diese nicht sichtbar.
1) Gibt es ein Möglichkeit diese sichtbar zu machen? Ich habe in den Eigenschaft keine "Transparency" o. Ä. entdecken können. Ich kann die Labels manuell per Maus in die Frames ziehen, dann funktioniert dies. Da sie jedoch nicht existieren und erst bei Start der Userform erscheinen, komme ich per Maus nicht weiter.
2) Ich möchte in einem zweiten Schritt die Labels per Maus anklicken könnnen (testweise soll eine Msg-Box erscheinen mit den Hinweis welches Label angeklickt wurde). Da die Labels in der Programmierumgebung nicht existieren, kann ich diese nicht anklicken und ein Mouse_Click Ereignis auswählen. Wie löst man dies?
Schon mal Dank für die Hilfe.

Private Sub UserForm_Activate()
Dim frame As MSForms.frame
Dim i, ii As Long
For i = 1 To 5
Set frame = Me.Controls.Add("forms.frame.1")
With frame
.Width = 60
.Height = 100
.Top = 23
.Left = i * 70
.Caption = i
End With
Next
For ii = 1 To 5
Set Lbl = UserForm1.Controls.Add("forms.label.1")
Lbl.Caption = Range("A" & ii)
Lbl.Top = 30
Lbl.Left = ii * 70
Next
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frames und Labels per Schleife
21.07.2022 08:39:08
PawelPopolski
Hallo,
ohne zu wissen wo die Reise hingehen soll, hier einfach mal ein Schuss ins Blaue:
Warum fügst du statt eines Labels keine CommandButtons ein?
Grüße
AW: Frames und Labels per Schleife
21.07.2022 15:26:05
Chris
Ginge auch, ich teste dies!, Danke Gruß
AW: Frames und Labels per Schleife
21.07.2022 08:46:24
Daniel
Hi
ein Frame ist ein relativ mächtiges Steuerelement, quasi eine Userform innerhalb der Userform.
wenn du das Label innerhalb des Frames darstellen willst, sollte es auch im Frame liegen und zum Frame gehören.
Wenn du das Label in der Userform direkt erstellst, liegt es halt immer unter dem Label
ohne es jetzt getestet zu haben, müsstest du dann hier angeben (mit dem entsprechenden Frame-Namen):

Set Lbl = UserForm1.FrameX.Controls.Add("forms.label.1")
wenn du den Frame nur optisch als Rahmenlinie brauchst, ist es besser statt des Frames ein weiteres Label mit Rahmenlinie und Background = Transparent zu erstellen.
Gruß Daniel
Anzeige
AW: Frames und Labels per Schleife
21.07.2022 15:26:48
Chris
Dnake für den Hinweis!
AW: Frames und Labels per Schleife
21.07.2022 08:59:59
Alwin
Hallo,
das musst du so machen:

Private Sub UserForm_Activate()
Dim frame As MSForms.frame, lbl As MSForms.Label
Dim i, ii As Long
For i = 1 To 5
Set frame = Me.Controls.Add("forms.frame.1")
With frame
.Width = 60
.Height = 100
.Top = 23
.Left = i * 70
.Caption = i
End With
Next i
For ii = 1 To 5
Set lbl = UserForm1.Controls("frame" & ii).Controls.Add("forms.label.1")
lbl.Caption = Range("A" & ii)
lbl.Top = 5
lbl.Left = 5
Next ii
LabelsLesen
End Sub
sonst klappt das nicht.
Gruß Uwe
AW: Frames und Labels per Schleife
21.07.2022 09:04:04
Alwin
Sorry LabelsLesen hatte ich mal spaßenshalber noch für die Weiterverarbeitung einer Klasse zugewiesen und vergessen rauszunehmen.
Gruß Uwe
Anzeige
AW: Frames und Labels per Schleife
21.07.2022 15:27:16
Chris
ok, danke, klappt wunderbar! GrußC.
AW: Frames und Labels per Schleife
21.07.2022 10:02:24
Daniel
Hi
wenn du für zur Laufzeit erstellte Steuerelemente Eventmakros benötigst, musst du das über eine sog. "Klassenprogrammierung" lösen.
unter dem Stichwort solltest du Erklärungen und auch Bespielcodes finden.
Gruß Daniel
AW: Frames und Labels per Schleife
21.07.2022 15:25:17
Chris
Hallo Daniel,
danke für den Hinweis in Sachen Klassenprogrammierung - gefunden, angepasst und funktioniert!
Eine weitere Frage: Ich möchte von den Frames 20 Stück erstellen. 10 oben in der Userform, weiter 10 darunter, die alle von 1- 20 durchnummeriert werden.
Wie bekomme ich dies umgesetzt, ohne das Makro ein zweites mal mit anderen Werten auszuführen?

Private Sub UserForm_Initialize()
Application.WindowState = xlMaximized
With Me
.Height = Application.Height
.Width = Application.Width - 10
End With
Dim frame As MSForms.frame, lbl As MSForms.Label
Dim i, ii As Long
For i = 1 To 17
Set frame = Me.Controls.Add("forms.frame.1")
With frame
.Width = 60
.Height = 100
.Top = 10
.Left = (i * 75) - 60
.Caption = i
.Font.Bold = True
.Font.Size = 12
End With
Next i
For ii = 1 To 17
Set lbl = UserForm1.Controls("frame" & ii).Controls.Add("forms.label.1")
lbl.Width = Me.Controls("frame" & ii).Width - 10
lbl.Height = 15
lbl.Top = 10
lbl.Left = 5
lbl.BackColor = vbYellow
lbl.Caption = Range("A" & ii)
lbl.Font.Bold = False
lbl.Font.Size = 12
Next ii
End Sub

Anzeige
AW: Frames und Labels per Schleife
21.07.2022 15:38:17
Daniel
Hi
naja zwei Schleifen:

for Spalte = 1 to 10
for Zeile = 1 to 2    
aus Spalte dann die LEFT-Position berechnen und aus Zeile die TOP-Position
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige