Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1356to1360
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

Dynamisch erstellte Spinbuttons ansprechen

Dynamisch erstellte Spinbuttons ansprechen
30.04.2014 09:34:18
Jaro
Hallo Liebe Gemeinde,
ich hänge schon seit einiger Zeit an einem Problem und hoffe mir kann hier jemand weiterhelfen.
Ich habe über eine For-Schleife Spinbuttons und Labels in abhängikeit von der gespeicherten Zeichenanzahl in einem Array (Hier KK_v()) erstellt.
Jetzt möchte ich durch betätigen der Spinbuttons die Werte in den Labels ändern, garnicht so leicht wenn alles dynamisch erstellt wurde.
Ich habe es schon soweit hinbekommen, dass das letzte erstellte Label und der letzte erstellte Spinbutton das gwünschte Ergebnis liefern, allerdings funktioniert das bei den vorherigen Labels und Spinbuttons nicht.
Hier ersteinmal der Code zum erstellen der Spinbuttons und Labels(Die Variablen "omega" und "omega_speicher" sind nur zur richtigen Platzierung der Controls):

Option Explicit
'das original MS Forms Spin Button
Private myOrgSpin   As MSForms.Spinbutton
'die Klasse für die zusätzliche Funktionen / Abfangen der Ereignisse
Private mySpin      As New MySpinButton
Private myLabel     As MSForms.Label
Dim S As Integer
Dim leer As Integer
Dim omega As Integer
Dim omega_speicher As integer
For S = 1 To x - 1
omega = 0
For leer = 1 To UBound(KK_v)
If KK_v(leer, S)  0 Then
Set myOrgSpin = mySpin.CreateButton(Me, "Spin" & leer & S)
With myOrgSpin
.Height = 15
.Left = 537
.Top = omega_speicher + omega
.Width = 50
.Min = 1
.Max = 2
End With
omega = omega + 15
End If
Next leer
omega = 0
For leer = 1 To UBound(KK_v)
If KK_v(leer, S)  0 Then
Set myLabel = Me.Controls.Add("Forms.Label.1", "MyLabel" & leer & S)
With myLabel
.Height = 15
.Left = 517
.Top = omega_speicher + omega
.Width = 20
End With
omega = omega + 15
zähler = zähler + 1
'des Objekt des dynamisch generierten Labels wird zugewiesen
Set mySpin.ChangeLabel = myLabel
End If
Next leer
Next S

So und jetzt der Code der zugehörigen Klasse "MySpinButton"
Option Explicit
Private WithEvents orgSpin  As MSForms.Spinbutton
Private chLabel             As MSForms.Label
Public Property Get ChangeLabel() As MSForms.Label
Set ChangeLabel = chLabel
End Property
Public Property Set ChangeLabel(Obj As MSForms.Label)
Set chLabel = Obj
chLabel.Caption = orgSpin.Value
End Property
Public Function CreateButton(UserFrm As UserForm, Name As String, _
Optional visible As Boolean = True) As MSForms.Spinbutton
Set orgSpin = UserFrm.Controls.Add("Forms.SpinButton.1", Name, visible)
Set CreateButton = orgSpin
End Function
Private Sub orgSpin_Change()
If Not chLabel Is Nothing Then
End If
End Sub
Also hätte hier jemand eine Idee wie die Werte der Labels durch das betätigen der jeweiligen erstellten Spinbuttons geändert werden können ?
Würde mich über Hilfe oder Tipss sehr freuen.
Gruß
Jaro Naw

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamisch erstellte Spinbuttons ansprechen
30.04.2014 10:17:27
Rudi
Hallo,
du brauchst so viele Instanzen der Klasse, wie du Spinbuttons/ Labels einfügst.
Gruß
Rudi

AW: Dynamisch erstellte Spinbuttons ansprechen
30.04.2014 11:05:09
Jaro
Moin Rudi,
das war ne kurze und bündige Antowort aber hat mir wirklich sehr weitergeholfen. Es funzt nämlich wunderbar!!!!!
Danke an Rudi und hier mein angepasster Code, falls es noch jemanden Interessiert ;-)
'//**************************************************//
Option Explicit
'das original MS Forms Spin Button
Private myOrgSpin   As MSForms.Spinbutton
'das original MS Forms Label
Private myLabel     As MSForms.Label
'die Klasse für die zusätzliche Funktionen / Abfangen der Ereignisse
Private mySpin()      As New MySpinButton
For S=1 To x-1
omega = 0
ReDim Preserve mySpin(1 To UBound(KK_v), 1 To x - 1)
For leer = 1 To UBound(KK_v)
If KK_v(leer, S)  0 Then
Set myOrgSpin = mySpin(leer, S).CreateButton(Me, "Spin" & leer & S)
With myOrgSpin
.Height = 15
.Left = 537
.Top = omega_speicher + omega
.Width = 50
.Min = 1
.Max = 2
End With
omega = omega + 15
End If
Next leer
omega = 0
For leer = 1 To UBound(KK_v)
If KK_v(leer, S)  0 Then
Set myLabel = Me.Controls.Add("Forms.Label.1", "MyLabel" & leer & S)
With myLabel
.Height = 15
.Left = 517
.Top = omega_speicher + omega
.Width = 20
End With
omega = omega + 15
zähler = zähler + 1
'des Objekt des dynamisch generierten Labels wird zugewiesen
Set mySpin(leer, S).ChangeLabel = myLabel
End If
Next leer
Next S
'//**************************************************//
Gruß Jaro
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige