VBA: UserForm als Variable "Typen unverträglich"
#1
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?
Antworten Top
#2
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • NPC123
Antworten Top
#3
(26.10.2021, 12: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. :)
Antworten Top
#4
Verwende Multipage statt mehrere UF's.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#5
Multipage sagt mir leider nichts. Ich werde es mir aber mal anschauen.
Danke für den Tipp. :)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste