Clever-Excel-Forum

Normale Version: VBA: UserForm als Variable "Typen unverträglich"
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo meine lieben,

hier ist mein Problem.
Ich habe zwei UserForm (Startfenster und Auswahl), die gebe ich an eine Methode weiter, damit sie mittig angezeigt werden.

Code:
Function MittigAnzeigen(ByRef form As Object, Optional ByRef zeichen As Integer)
    With form
        .StartUpPosition = 0
        .Left = Application.Left + (0.5 * Application.Width) - (0.5 * .Width)
        .Top = Application.Top + (0.5 * Application.Height) - (0.5 * .Height)
        .Show
    End With
   
    If Not IsMissing(zeichen) Then
        Worksheets("Var").Cells(1, 1) = zeichen
    End If
End Function

Beim öffnen wird Startfenster aufgerufen, dass klappt auch. Keine Fehlermeldung.
Code:
Call UserFormMethoden.MittigAnzeigen(Startfenster)

Bei Startfenster gibt es mehrere Auswahlmöglichkeiten, entsprechend wird der Code ausgeführt

Code:
Private Sub Fenster1_Click()
    Unload Me
    Call UserFormMethoden.MittigAnzeigen(Auswahl, 1)
End Sub
Private Sub Fenster2_Click()
    Unload Me
    Call UserFormMethoden.MittigAnzeigen(Auswahl, 2)
End Sub
Private Sub Fenster3_Click()
    Unload Me
    Call UserFormMethoden.MittigAnzeigen(Auswahl, 3)
End Sub

Das Fenster Auswahl wird angezeigt, dort gibt es den Button Auswertung, mit dem Code 

Code:
Private Sub Auswertung_Click()
    Unload Me
    If Worksheets("Var").Cells(1, 1).Value = 1 Then
        Worksheets("Tabelle1").Activate
    ElseIf Worksheets("Var").Cells(1, 1).Value = 2 Then
        Worksheets("Tabelle2").Activate
    ElseIf Worksheets("Var").Cells(1, 1).Value = 3 Then
        Worksheets("Tabelle3").Activate
    End If
End Sub

Der Code wird auch ausgeführt, also die gewünschte Tabelle wird aufgerufen. Allerdings kommt dann eine Meldung
"Lufzeitfehler 13: Typen unverträglich" und die Zeile bei Startfenster wird markiert z.B.
Code:
Private Sub Fenster1_Click()
    Unload Me
    Call UserFormMethoden.MittigAnzeigen(Auswahl, 1) '<= Diese Zeile
End Sub

Woran könnte das liegen?
Hallo,

schreib den Show-Befehl in die aufrufende Sub und entferne ihn aus der Funktion.

Code:
Private Sub Fenster1_Click()
    Unload Me
    Call UserFormMethoden.MittigAnzeigen(Auswahl, 1)
    Auswahl.Show
End Sub

Gruß Uwe
(26.10.2021, 11:30)Kuwer schrieb: [ -> ]Hallo,

schreib den Show-Befehl in die aufrufende Sub und entferne ihn aus der Funktion.

Code:
Private Sub Fenster1_Click()
    Unload Me
    Call UserFormMethoden.MittigAnzeigen(Auswahl, 1)
    Auswahl.Show
End Sub

Gruß Uwe

Vielen Dank Uwe, das hat das Problem gelöst. :)
Verwende Multipage statt mehrere UF's.
Multipage sagt mir leider nichts. Ich werde es mir aber mal anschauen.
Danke für den Tipp. :)