Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: UserForm aufrufen

UserForm aufrufen
21.12.2007 19:21:00
René
Hallo Gemeinde
Ich habe in einem Sheet eine Liste die die Namen von verschiedenen UserFormen repräsentiert.
Mit dem Code UserForm1.Show ruft man ja beispielsweise eine UF auf.
Wie kann man, oder kann man das überhaupt, die entsprechende UF aufrufen die man aus der Liste auswählt?
Beispiel für die Liste:
UserForm1
UserForm2
UserForm3
Schreibe ich jetzt also in Zelle B3 UserForm2 soll die UF2 erscheinen, respektive die anderen bei entsprechender Auswahl.
Der Start muss nicht unbedingt bei Wechsel in der Zelle passieren, das kann auch von einer Sub aufgerufen werden. Beispiel Sub

Sub Aufruf()
Name_der_UF = Range("B3")
Name_der_UF.Show
End Sub


Ich weiß, das funktioniert nicht, wie also kanns gehen?
Gruß René

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm aufrufen
21.12.2007 20:18:53
fcs
Hallo René,
zumindest unter Excel97 hab ich es nicht geschafft Userforms direkt über den Namen aufzurufen.
Die Objektliste "Userforms" liefert keine Liste obwohl dies laut Hilfe so sein sollte.
Deshalb ein Umweg über eine Select Case Anweisung. Zur Auswahl der Userform hab ich hier eine ComboBox verwendet.
Gruß
Franz

'so hatte ich mir das vorgestellt
Private Sub ComboBox1_Change()
Range("A2").Select
UserForms(Me.ComboBox1.Value).Show
End Sub
'So funktionierts unter Excel97 bei mir
Private Sub ComboBox1_Change()
Range("A2").Select
Select Case Me.ComboBox1.Value
Case "UF_1"
UF_1.Show
Case "UF_2"
UF_2.Show
Case "UF_3"
UF_3.Show
Case Else
MsgBox "Für Auswahl " & UF_Name & "gibt es noch kein Formular"
End Select
End Sub


Anzeige
AW: UserForm aufrufen
21.12.2007 20:34:00
Daniel
Hi Franz
zwei dumme, ein gedanke ;-).
an die Userforms-Auflistung hab ich auch schon gedacht, aber in dieser auflistung sind nur die aktuell geöffneten Userforms vorhanden.
dh. man müsste erst alle Userforms mit "Userform1.show 0" nicht modal öffnen und mit "Userform1.Hide" wieder unsichtbar machen, um dann erst mit der Userforms-Auflistung arbeiten zu können.
aber auch dann kannst du nur über die Index-Nummer auf die Userforms zugreifen, und nicht über den Namen.
Der Code würde dann so aussehen:

Sub Userform_nach_auswahl_B3()
Dim i As Integer
Dim Erfolg As Boolean
UserForm1.Show 0
UserForm1.Hide
UserForm2.Show 0
UserForm2.Hide
UserForm3.Show 0
UserForm3.Hide
Erfolg = False
For i = 0 To UserForms.Count - 1
If UserForms(i).Name = Range("B2") Then
UserForms(i).Show 0
Erfolg = True
Else
UserForms(i).Hide
End If
Next
If Not Erfolg Then MsgBox "userform wurde nicht gefunden"
End Sub


Gruß, Daniel

Anzeige
AW: UserForm aufrufen
21.12.2007 21:04:00
René
Hi Daniel und Franz
Danke schön für die Anregungen, das ist doch schon mal was womit man zurecht kommt.
Es hilft mir sehr weiter, danke :-)
Gruß René

AW: UserForm aufrufen
21.12.2007 20:19:27
Daniel
Hi
mal die unelegante Methode:

Sub Test()
Select Case Range("B3").value
Case "Userform1"
Userform1.show
Case "Userform2"
Userform2.show
case "Userform3"
Userform3.show
Case else
Msgbox "diese Userform gibts nicht"
end select
end sub


ich weiß, auch noch sehr handgestrickt, obs ne bessere Lösung gibt, wie man and die Userforms über den Namen drankommt , weiß ich auch nicht, wobei ich das in diesem Fall natürlich nicht aussschließen will.
So einfach wie bei Sheets über den vergebenen Namen wirds wohl nicht gehen, weil userforms diese Eigenschaft nicht haben.
Gruß, Daniel

Anzeige
AW: UserForm aufrufen
21.12.2007 20:44:56
Werner
Hallo René
Versuch es mal so:

Sub Aufruf()
Name_der_UF = Range("B3")
UserForms.Add(Name_der_UF).Show
End Sub


Gruss Werner

AW: UserForm aufrufen
21.12.2007 21:08:33
Daniel
Cool. hätte nicht gedacht, daß es so einfach geht.
Frohe Weihnacht
;
Anzeige
Anzeige

Infobox / Tutorial

UserForm aufrufen in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine UserForm in Excel VBA aufzurufen, kannst du die folgenden Schritte befolgen:

  1. Erstelle eine UserForm: Öffne den VBA-Editor (Alt + F11) und füge eine neue UserForm hinzu.
  2. Füge eine ComboBox oder ein Textfeld hinzu: Damit kannst du den Namen der UserForm eingeben oder auswählen.
  3. Schreibe den VBA-Code: Nutze den folgenden Code, um die UserForm entsprechend der Eingabe in einer Zelle oder ComboBox aufzurufen.
Sub Aufruf()
    Dim Name_der_UF As String
    Name_der_UF = Range("B3").Value
    UserForms.Add(Name_der_UF).Show
End Sub

Dieser Code öffnet die UserForm, die in Zelle B3 angegeben ist. Stelle sicher, dass die Namen der UserForms korrekt sind.


Häufige Fehler und Lösungen

  • Fehler: "UserForm nicht gefunden"
    Lösung: Überprüfe, ob der Name der UserForm in der Zelle exakt mit dem Namen der UserForm übereinstimmt.

  • Fehler: UserForms werden nicht angezeigt
    Lösung: Stelle sicher, dass die UserForms nicht vorher mit Hide ausgeblendet wurden. Du kannst sie mit Show vor dem Zugriff anzeigen.


Alternative Methoden

Falls die direkte Methode nicht funktioniert, kannst du auch eine Select Case-Anweisung verwenden:

Sub Userform_nach_auswahl_B3()
    Select Case Range("B3").Value
        Case "Userform1"
            Userform1.Show
        Case "Userform2"
            Userform2.Show
        Case "Userform3"
            Userform3.Show
        Case Else
            MsgBox "Diese Userform gibt es nicht."
    End Select
End Sub

Diese Methode ist nützlich, wenn du eine bestimmte Auswahl treffen möchtest.


Praktische Beispiele

Hier sind einige Beispiele, wie du die UserForms aufrufen kannst:

  1. Mit einer ComboBox:
Private Sub ComboBox1_Change()
    Select Case Me.ComboBox1.Value
        Case "UserForm1"
            UserForm1.Show
        Case "UserForm2"
            UserForm2.Show
        Case "UserForm3"
            UserForm3.Show
        Case Else
            MsgBox "Für Auswahl " & Me.ComboBox1.Value & " gibt es noch kein Formular."
    End Select
End Sub
  1. Mit einer Zelle:
Sub Test()
    Dim Name_der_UF As String
    Name_der_UF = Range("B3").Value
    UserForms.Add(Name_der_UF).Show
End Sub

Tipps für Profis

  • Verwende Show 0: Wenn du eine UserForm nicht modal (nicht blockierend) anzeigen möchtest, kannst du Show 0 verwenden. Damit bleibt das Excel-Fenster weiterhin benutzbar.

  • Fehlerbehandlung: Implementiere On Error Resume Next, um Fehler beim Aufrufen von UserForms zu vermeiden. Dies ist besonders nützlich, wenn die UserForm nicht existiert.

  • UserForm-Eigenschaften: Nutze die Eigenschaften der UserForm, um sie dynamisch anzupassen, bevor du sie anzeigst.


FAQ: Häufige Fragen

1. Wie kann ich eine UserForm aus einer ListBox aufrufen?
Du kannst einen ähnlichen Code wie bei der ComboBox verwenden, um den ausgewählten Wert aus der ListBox zu nutzen.

2. Wird der UserForm-Aufruf in allen Excel-Versionen unterstützt?
Ja, die grundlegenden Methoden zum Aufrufen von UserForms funktionieren in den meisten aktuellen Versionen von Excel VBA.

3. Was ist der Unterschied zwischen modal und nicht-modal?
Eine modale UserForm blockiert die Interaktion mit dem Hauptfenster, bis sie geschlossen wird, während eine nicht-modale UserForm dies nicht tut.

4. Kann ich eine UserForm programmgesteuert erstellen?
Ja, du kannst eine UserForm programmatisch mit UserForms.Add("UserFormName") erstellen, bevor du sie anzeigst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige