Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
SpinButtons dynamisch ansprechen
zurück: Zugriff auf Bilder in einem Ordner weiter: Pivot-Aktualisierung - Zielzellen NICHT ersetzen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Jaro123
Gast


Verfasst am:
29. Apr 2014, 10:00
Rufname:

SpinButtons dynamisch ansprechen - SpinButtons dynamisch ansprechen

Nach oben
       Version: Office 2010

Hallo Liebe Leute,

ich habe in meiner Userform dynamische Textboxen und Spinbuttons in abhängigkeit von der Anzahl der Zeichen in den arrays (hier KK_v()) erstellt.

Private Sub UserForm_Activate()

Dim S as integer
Dim leer as integer
Dim x as integer


Dim faktor As Control
Dim up_down As Control

For S = 1 to x-1

'Für die Textbox
For leer = 1 To UBound(KK_v)

If KK_v(leer, S) <> 0 Then

Set faktor = Me.Controls.Add("Forms.TextBox.1", "Faktor" & S & leer, True)

With faktor
.Height = 15
.Left = 517
.Top = omega_speicher + omega
.Width = 20
.Text = 1

End With

omega = omega + 15

End If

Next leer


'Für den Spinbutton

For leer = 1 To UBound(KK_v)

If KK_v(leer, S) <> 0 Then

Set faktor = Me.Controls.Add("Forms.Spinbutton.1", "SB" & S & leer, True)

With faktor
.Height = 15
.Left = 537
.Top = omega_speicher + omega
.Width = 50


End With

omega = omega + 15

End If

Next leer

Next S

Omega und omega_speicher sind nur für die richtige Platzierung notwendig und erstmal nicht so wichtig.

Ich möchte jetzt durch betätigung der dynamisch erzeugten Spinbuttons, die hinterlegte Zahl "1" in der jeweiligen Textbox um einen Hochsetzen.

Für Hilfe wäre ich sehr Dankbar.
Gruß
Jaro123
Im Profil kannst Du frei den Rang ändern


Verfasst am:
29. Apr 2014, 14:39
Rufname:

AW: SpinButtons dynamisch ansprechen - AW: SpinButtons dynamisch ansprechen

Nach oben
       Version: Office 2010

So, habe mal ein wenig weitergebastelt und bin ein Stück weiter gekommen indem ich eine Klasse "MySpinButton" erstellt habe.


Dazu habe ich erst einmal mein oberes Makro ein wenig umgewandelt:

'//*************************************************//
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 x As integer
dim leer As integer

For S = 1 to x-1

' +++ Für den Spinbutton +++

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


'+++ Für das Label +++

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

'des Objekt des dynamisch generierten Labels wird zugewiesen
Set mySpin.ChangeLabel = myLabel

End If

Next leer

Next S

'//*************************************************//
'Und hier die 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
chLabel.Caption = orgSpin.Value
End If
End Sub
'//*************************************************//

Es werden jetzt die gleiche Anzahl an Spinbuttons und Labels nebeneinander erzeugt. Allerdings liefert nur der letzte erstellte Spinbutton und das letzte erstellte Label das gewünschte Ergebnis. Nämlich das beim betätigen des Spinbuttons das Label einen Wert hoch bzw. runter gesetzt wird.

Hätte jemand eine Idee wie dies für alle erstellten Spinbuttons und Labels funtzen würde?

Besten Dank im Voraus!

_________________
Das Auge programmiert mit Very Happy
EtoPHG
Ich sehe dunkle Zeiten aufziehen...


Verfasst am:
29. Apr 2014, 14:53
Rufname: Hansueli

AW: SpinButtons dynamisch ansprechen - AW: SpinButtons dynamisch ansprechen

Nach oben
       Version: Office 2010

Hallo Jaro,

Danke das du dich registriert hast.
Bitte benutz die [ Code ] Tags wenn du Code ins Forum stellst. So wie jetzt ist das kaum lesbar.
Wenn du dich jetzt noch in der Upload-Benutzergruppe anmeldest, kannst du eine Beispielmappe an Beiträge heften.
Damit wäre bei deinem Problem eine Hilfestellung wesentlich einfacher.

Gruess Hansueli

_________________
Forenhelfer danken für eine Rückmeldung!
Der Kluge lernt, der Dummkopf erteilt gern Belehrungen. - Anton Tschechow
Jaro123
Im Profil kannst Du frei den Rang ändern


Verfasst am:
29. Apr 2014, 15:02
Rufname:

AW: SpinButtons dynamisch ansprechen - AW: SpinButtons dynamisch ansprechen

Nach oben
       Version: Office 2010

OK Very Happy Also nochmal in lesbarer Form mein umgebastelter Code Wink

Code:
'//*************************************************//
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 x As integer
dim leer As integer

For S = 1 to x-1

   ' +++ Für den Spinbutton +++

    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


'+++ Für das Label +++

  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

    'des Objekt des dynamisch generierten Labels wird zugewiesen
    Set mySpin.ChangeLabel = myLabel

   End If

 Next leer

Next S

'//*************************************************//
'Und hier die 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
chLabel.Caption = orgSpin.Value
End If
End Sub
'//*************************************************//

Es werden jetzt die gleiche Anzahl an Spinbuttons und Labels nebeneinander erzeugt. Allerdings liefert nur der letzte erstellte Spinbutton und das letzte erstellte Label das gewünschte Ergebnis. Nämlich das beim betätigen des Spinbuttons das Label einen Wert hoch bzw. runter gesetzt wird.

Hätte jemand eine Idee wie dies für alle erstellten Spinbuttons und Labels funtzen würde?

Besten Dank im Voraus!

_________________
Das Auge programmiert mit Very Happy
Isabelle :-)
Menschin


Verfasst am:
30. Apr 2014, 09:51
Rufname:
Wohnort: Westlicher Spiralarm der Galaxis

AW: SpinButtons dynamisch ansprechen - AW: SpinButtons dynamisch ansprechen

Nach oben
       Version: Office 2010

Hallöchen,

klar, du erzeugst eine Instanz der Klasse und dieser übergibst du alle Buttons. Da kann nur der letzte funktionieren. Das ist wie wenn du einer Variablen nacheinander 10 verschiedene Werte übergibst, am Ende stet der zuletzt übergebene Wert drin.

Du hast zwei Möglichkeiten.
1. Du benutzt ein Array der Klasse.
2. Du benutzt eine Collection.

Dazu zwei Beispiele:

Code:
Option Explicit

Private mobjKlasse() As Klasse1

Public Sub Beispiel1()

    Dim ialngIndex As Long

    ReDim mobjKlasse(1 To UBound(KK_v))

    For ialngIndex = 1 To UBound(KK_v)

        Set mobjKlasse(ialngIndex) = New Klasse1

        With mobjKlasse(ialngIndex)

            'Eingenschaften schreiben

        End With
    Next
End Sub




Code:
Option Explicit

Private mobjCollection As Collection

Public Sub Beispiel2()

    Dim ialngIndex As Long
    Dim objKlasse As Klasse1

    For ialngIndex = 1 To UBound(KK_v)

        Set objKlasse = New Klasse1

        With objKlasse

            'Eingenschaften schreiben

        End With

        Call mobjCollection.Add(Item:=objKlasse)
    Next
End Sub

_________________
LG Isi

Die Mitgliedschaft im Forum erhöht deine Chance auf eine Antwort von mir um 99,999%
Gast



Verfasst am:
30. Apr 2014, 11:02
Rufname:

AW: SpinButtons dynamisch ansprechen - AW: SpinButtons dynamisch ansprechen

Nach oben
       Version: Office 2010

Hallöchen zurück Isi,

es fuuuuuuuuunzt! Vielen Dank, hast mir echt sehr weitergeholfen Very Happy

Hier dein Beispiel an meinen Code angepasst, falls es noch jemanden interessiert Wink


Code:
'//**************************************************//

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       
       
 '//**************************************************//


Die Klasse (siehe Oben) bleibt unverändert!

Gruß Jaro
[/code]
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Monatstabelle Dynamisch aufbauen 0 Merlin P. 488 29. Sep 2010, 09:48
Merlin P. Monatstabelle Dynamisch aufbauen
Keine neuen Beiträge Excel Formeln: Bereich dynamisch angeben 2 Sanniel 1096 22. Apr 2010, 07:51
Sanniel Bereich dynamisch angeben
Keine neuen Beiträge Excel Formeln: Den Max - Wert eines Spinbuttons von Feld abhängig machen 14 nico1234 1087 13. Apr 2010, 08:17
Gast Den Max - Wert eines Spinbuttons von Feld abhängig machen
Keine neuen Beiträge Excel Formeln: dynamisch auf Konstante referrenzieren 2 droller 485 08. Feb 2010, 15:53
droller dynamisch auf Konstante referrenzieren
Keine neuen Beiträge Excel Formeln: zellinhalt im zellbereich dynamisch ausgeben 4 flower 478 26. Nov 2009, 09:33
flower zellinhalt im zellbereich dynamisch ausgeben
Keine neuen Beiträge Excel Formeln: Inhalte von Textzellen Ansprechen 4 voller_mx 171 11. Aug 2009, 16:11
Gast Inhalte von Textzellen Ansprechen
Keine neuen Beiträge Excel Formeln: Inhalte einfügen, aber Werte sind dynamisch 2 gassi83 692 08. Jan 2009, 16:41
Magic Inhalte einfügen, aber Werte sind dynamisch
Keine neuen Beiträge Excel Formeln: Bestimmte Zeichen aus einem String ansprechen 4 McFrag 1289 08. Dez 2008, 13:48
McFrag Bestimmte Zeichen aus einem String ansprechen
Keine neuen Beiträge Excel Formeln: Formel dynamisch gestalten bis zur letzten beschriebenen zel 2 MARINIE 195 13. Nov 2008, 16:28
MARINIE Formel dynamisch gestalten bis zur letzten beschriebenen zel
Keine neuen Beiträge Excel Formeln: Werte dynamisch kopieren - mit zwei wenn Bedingungen 4 mali08 2112 26. Aug 2008, 14:46
mali08 Werte dynamisch kopieren - mit zwei wenn Bedingungen
Keine neuen Beiträge Excel Formeln: Bereichsnamen dynamisch in Formel erzeugen 2 merlin232 494 21. Mai 2008, 16:32
merlin232 Bereichsnamen dynamisch in Formel erzeugen
Keine neuen Beiträge Excel Formeln: Datenreihe dynamisch 1 sh79 598 15. Apr 2008, 11:41
Melanie Breden Datenreihe dynamisch
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps