Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform - Aufruf und Fortsetzung der Subroutine

Userform - Aufruf und Fortsetzung der Subroutine
01.04.2014 15:16:18
Martin
Hallo!
Ich beschäftige mich gerade eben zum ersten Mal mit UserForms in VBA und habe dabei folgendes erstellt:
Nach Eingabe in eine Zeile wird überprüft, ob alle Werte eingegeben wurden. Sollte in einer Spalte kein Wert eingegeben werden, erscheint eine Inputbox, in welcher der entsprechende Wert einzutragen ist. Dieser wird dann in die Zeile nacherfasst.
In einer Spalte gibt es eine Auswahl an Werten, die einzutragen sind (also DropDown). Deshalb habe ich hier eine Userform erstellt. Aus der Subroutine wird die Userform mit Userform1.Show aufgerufen. Funktioniert auch wunderbar, sobald ein Wert ausgewählt wurde, wird dieser in der jeweiligen Zelle nachgetragen. Aber nachdem der Wert aus der Userform ausgewählt und mit OK bestätigt wurde, wird nicht nur die Userform sondern gleich alles beendet. Ich möchte allerdings mit der Subroutine (also von wo ich auf die Userform weggesprungen bin) fortsetzen.
Kann mir da irgendwer weiterhelfen?
Hier der Code, den ich für die Userform verwendet habe:
Private Sub UserForm_Initialize()
Dim x As String
Sheets("Tabelle2").Select
Range("A2").Select
Do Until IsEmpty(ActiveCell)
x = ActiveCell.Value
ListBox1.AddItem x
ActiveCell.Offset(1, 0).Select
Loop
ListBox1.ListIndex = 0
Sheets("Tabelle1").Select
End Sub

Private Sub CommandButton1_Click()
ActiveCell.Value = ListBox1.Text
Unload UserForm1
End Sub

Danke im voraus!
LG, Martin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform - Aufruf und Fortsetzung der Subroutine
01.04.2014 15:23:32
Rudi
Hallo,
wird nicht nur die Userform sondern gleich alles beendet.
das geht aus deinem Code nicht hervor.
Wenn du schon eine UF hast, erfasse doch alle Daten in ihr.
Gruß
Rudi

AW: Userform - Aufruf und Fortsetzung der Subroutine
02.04.2014 08:06:30
Martin
Hallo Rudi!
Danke einmal für deine Rückmeldung.
Hier ist noch meine Subroutine, aus der die Userform aufgerufen wird. Ist hier irgendetwas falsch?
Sub WertePruefen()
If ActiveCell.Offset(0, -3).Value = "" Then
ActiveCell.Offset(0, -3).Select
Userform1.Show
End If
Do Until ActiveCell.Offset(0, -1).Value  ""
ActiveCell.Offset(0, -1).Value = InputBox("Feld in Spalte E ist leer, bitte Wert eingeben:") _
Loop
Do Until ActiveCell.Offset(0, -2).Value  ""
ActiveCell.Offset(0, -2).Value = InputBox("Feld in Spalte D ist leer, bitte Wert eingeben:") _
Loop
End Sub

Wenn hier auch kein Fehler drin ist, dann werd ich wohl die ganze Subroutine in die Userform einbauen müssen!
LG, Martin

Anzeige
AW: Userform - Aufruf und Fortsetzung der Subroutine
02.04.2014 11:22:29
Martin
Oder vielleicht hat auch jemand anderer eine Idee!?

AW: Userform - Aufruf und Fortsetzung der Subroutine
04.04.2014 15:33:03
fcs
Hallo Martin,
wenn ein Userform geschlossen wird (per Unload oder Hide), dann wird das Makro immer nach der entsprechenden Show-Anweisung fortgesetzt außer die ShowModal-Eihenschaft des Userforms ist auf False gesetzt. Dann läuft das Makro einfach weiter.
Du machst in den weiteren zeilen Prüfungen auf &lt&gt "". dadurch werden leere Zellen nicht erkannt.
Du musst auf = "" prüfen.
Ich würde die Prüfungen etwa wie folgt machen, dann werden die entsprechendne Spalten dierekt angesprochen.
Sub WertePruefen()
Dim Zeile As Long, Spalte As Long
Zeile = ActiveCell.Row
For Spalte = 8 To 1 Step -1
With Cells(Zeile, Spalte)
If .Value = "" Then
Select Case Spalte
Case 7 'Spalte H       'anpassen !!!
.Select
UserForm1.Show
Case 5 'Spalte E
.Value = InputBox("Feld in Spalte E ist leer, bitte Wert eingeben:")
Case 4 'Spalte D
.Value = InputBox("Feld in Spalte D ist leer, bitte Wert eingeben:")
End Select
End If
End With
Next
End Sub
Im Userform kann man den Code etwas optimieren, so das Tabellenblatt2 nicht zwschendurch selektiert wird.
Private Sub UserForm_Initialize()
Dim j As Long
With Sheets("Tabelle2")
With .Range("A2")
Do Until IsEmpty(.Offset(j, 0))
ListBox1.AddItem .Offset(j, 0).Text
j = j + 1
Loop
End With
End With
ListBox1.ListIndex = 0
End Sub
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige