Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Frame
BildScreenshot zu Frame Frame-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ToggleButton
BildScreenshot zu ToggleButton ToggleButton-Seite mit Beispielarbeitsmappe aufrufen

Durchnummerierte Userforms gemeinsam ansprechen

Betrifft: Durchnummerierte Userforms gemeinsam ansprechen von: Michael Schneyder
Geschrieben am: 17.09.2014 12:05:35

Hallo,

meine letzten 2 Fragen konnte ich durch herumtüfteln und mit ein paar kleinen Hinweisen selbst lösen, aber hier fehlt mir schlichtweg das Wissen, ob so etwas überhaupt möglich ist:

Ich habe zahlreiche UFs zwischen denen ich hin und herschalten kann. Auf diesen UFs befindet sich immer der gleiche Aufbau aus Buttons, die ich nach Aufruf der UF einzeln anwählen kann (wie Togglebuttons, nur sinds halt 5 pro UF). Der Druck auf so einen Button öffnet eine weitere UF im Vordergrund. Das klappt auch alles!

Insgesamt habe ich 5 UFs mit jeweils 5 Buttons drauf und für jeden Button eine weitere UF. Für das korrekte Umschalten dieser Buttons verwende ich einen Code, wie z.B. den (wobei F4TB1 ein Button ist):

Private Sub F4TB1_Change()
    
    If F4TB1.Value = True Then
        For i = 1 To 5
            If i <> 1 Then
                Me.Controls("F4TB" & i).Value = False 'damit schalte ich alle anderen inaktiv
            End If
        Next
        
        If Not UForm Is Nothing Then Unload UForm
        UFF4F1.Show
        Set UForm = UFF4F1
    Else
        Exit Sub
    End If
    
End Sub


Die Frage ist, ob es eine Möglichkeit gibt (wie bei me.controls) auch Userforms mit "zusammengebastelten" Namen anzusprechen und mir so 25 mal den selben Code zu ersparen - z.B. über ein Klassenmodul, wo ich alle Buttons reinschmeiß. z.B. so??:

UNGETESTET!!!

KLASSENMODUL
Private Sub ButtonGroup_Change()
    
    If "AuslösenderButton".Value = True Then
           
      For Frame = 1 to 5
        For i = 1 To 5
            If i <> Frame Then
                Me.Controls("F" & Frame & "TB" & i).Value = False
            End If
        Next
        
        If Not UForm Is Nothing Then Unload UForm
        "UFF" & Frame & "F" & i.Show
        Set UForm = "UFF" & Frame & "F" & i
      next Frame
    Else
        Exit Sub
    End If
    
End Sub


Vielleicht hat ja jemand eine Idee dazu. DANKE im Voraus und LG
Michael

  

Betrifft: AW: Durchnummerierte Userforms gemeinsam ansprechen von: Michael Schneyder
Geschrieben am: 17.09.2014 16:40:08

Hallo in die Runde,

ich bin wieder ein Stück weiter. Das Klassenmodul habe ich hinbekommen! Er öffnet auch die Userforms und schaltet alle Buttons um:

Option Explicit

Public WithEvents TBGroup1 As MSForms.ToggleButton

Private Sub TBGroup1_Change()
    
    If TBGroup1.Value = True Then
        
        For i = 1 To 5
            If i <> Right(TBGroup1.Name, 1) Then
                UFHauptmenue.Controls(Left(TBGroup1.Name, 4) & i).Value = False
            End If
        Next

        If Not UForm Is Nothing Then Unload UForm
        
        UFormName = "UFF" & Mid(TBGroup1.Name, 2, 1) & "F" & Right(TBGroup1.Name, 1)
                
        Set UForm = UserForms.Add(UFormName)

        UForm.Show
    Else
        Exit Sub
    End If
    
End Sub


ABER: aus irgendeinem Grund startet er bei der ausgewählten UF das Initialize-Ereignis jetzt 2 Mal und öffnet 2 Mal die gleiche UF. Habt ihr eine Idee warum???

LG und DANKE


 

Beiträge aus den Excel-Beispielen zum Thema "Durchnummerierte Userforms gemeinsam ansprechen"