Clever-Excel-Forum

Normale Version: VBA: UserForm-Aufruf - Fehler
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend zusammen,

habe eine UserForm welche ich gerne in einer If-Bedingung aufrufen möchte - hier der Code:

Code:
Private Sub cmdEintragen_Click()
Dim lastZeile As Long
Dim Gefunden As Range
Dim lastSpalte As Long
Dim Rng As Range

lastZeile = Tabelle10.Cells(Rows.Count, 2).End(xlUp).Row + 1              'Sucht die nächstfreie Zeile in Tabelle10
Set Gefunden = Tabelle15.Range("1:1").Find(frmÜbungHinzufügen.cboWiderstand.Value, , xlValues, xlWhole)         'Sucht nach dem Wert welcher beim Hinzufügen der Übung eingegeben wurde.
lastSpalte = Tabelle15.Cells(1, Columns.Count).End(xlToLeft).Column + 1
Set Rng = Tabelle15.Cells(1, lastSpalte).Resize(2, lastSpalte)

'Trägt die Eingaben in die nächst-freie Zeile ein
With Tabelle10
  .Cells(lastZeile, 2).Value = frmÜbungHinzufügen.txtÜbungsname.Value
  .Cells(lastZeile, 3).Value = frmÜbungHinzufügen.cboWiderstand.Value
  .Cells(lastZeile, 4).Value = frmÜbungHinzufügen.cboZusatzequipment.Value
End With

'Wenn der eingegebene Widerstand nicht gefunden wird, wird er automatisch in die Datenbank eingetragen
If frmÜbungHinzufügen.cboWiderstand.Text = "Körpergewicht" Then
  Unload frmÜbungHinzufügen
 
ElseIf Gefunden Is Nothing Then
  MsgBox "Der eingegebene Widerstand ist noch nicht in der Gewichts-Datenbank vorhanden und wird dort automatisch hinzugefügt.", vbInformation + vbOKOnly, "Widerstand nicht vorhanden!"
     
  Tabelle15.Activate
  Application.CutCopyMode = False
  Tabelle15.ListObjects.Add(xlSrcRange, Cells(1, lastSpalte), , xlYes).Name = "TabelleNeu" 'Benennt die Tabelle anfangs in "TabelleNeu"
  Range("TabelleNeu[[#All],[Spalte1]]").Select                              'Markiert die gesamte neue Tabelle
  ActiveSheet.ListObjects("TabelleNeu").TableStyle = "Gewichts-Tabelle"     'Setzt den Tabellenstil auf Header: gelb
  Range("TabelleNeu[[#Headers],[Spalte1]]").Select
  ActiveCell.FormulaR1C1 = frmÜbungHinzufügen.cboWiderstand.Value           'Beschreibt den Header der Tabelle mit dem Namen des Widerstands
     
  frmNeueGewichteHinzufügen.Show
     
End If

End Sub

Ich habe im Schritt vorher schon ein UserForm (frmÜbungHinzufügen), welches dann bei Klick auf einen Button ein Suchereignis auslöst. Wenn der gesuchte String nicht vorhanden ist, sollen die Schritte ab "ElseIf" durchgelaufen werden. Wenn ich nun Schritt für Schritt durchgehe, kommt an der Show-Stelle (frmNeueGewichteHinzufügen.Show) der Fehler: Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht definiert.

An und für sich ist der Fehler klar, aber ich habe ja weder die UserForm nicht als Variable deklariert noch habe ich eine With-Anweisung hier drin...hat jemand eine Idee wie ich den Fehler lösen kann? Per se läuft das Makro nämlich perfekt, nur den Fehler wirft er aus obwohl eigentlich alles passen müsste...

Danke euch und schönen Abend,
Domi
Hallo Domi,

dann gibt es halt kein frmNeueGewichteHinzufügen.

Gruß Uwe
Hallo Uwe,

danke für deine immer geschätzte Antwort ;)

Habe die Lösung gefunden...hatte in einer "UserForm_Initialize"-Event gesagt, das frmNeueGewichteHinzufügen aufgerufen werden soll...das hat sich wohl mit der oben beschriebenen bzw. vom Debugger markierten Zeile gebissen...

Danke trotzdem, schönes Wochenende und schonmal frohe Weihnachten.
Bleib gesund!

Domi