Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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, 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. :)
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