Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Das dazugehörige UserForm anzeigen





Frage

Ich sitze hier und suche und suche, aber leider habe ich noch nichts gefunden, was mir wirklich weiterhilft. In meiner Arbeitsmappe habe ich ein Tabellenblatt mit 6 Suchfunktionen. Hinter jeder Funktion versteckt sich ein Userform, in dem die Ergebnisse aufgelistet sind. Durch Anklicken des gewünschten Begriffs öffnet sich das Tabellenblatt, in dem sich weitere Informationen zum Suchbegriff befinden. Mittels einem einzigen CommandButton möchte ich wieder in mein Userform zurückkehren und mir einen anderen Begriff aussuchen. Bei einem UserForm kein Problem (UserForm1.Show vbModeless). Aber wie stelle ich es an, dass mir das UserForm angezeigt wird, welches auch zu der in meinem Tabellenblatt gewählten Suchfunktion gehört? Ungefähr so: Wenn im Tabellenblatt1 der CommandButton1 ausgewählt wurde, dann zeige mir das UserForm1 an. Kann mir dabei jemand weiterhelfen? Bin für alle Antworten und Tipps zu haben.

Antwort 1 von coros

HAllo Anderlin,

das ist etwas kompliziert zu erklären, daher habe ich Dir eine Beispieldatei erstellt, die Du hier herunterladen kannst. In dem Beipsiel befinden sich in dem Blatt "Auswahl 3 Buttons, mit denen man jeweils eine UserForm öffnen kann. In der UserForm befindet sich dann wiederrum ein Button, mit dem Du auf ein Tabellenblatt (je nach UserForm Blatt "Tabelle1, Tabelle2 oder Tabelle3") gelangst. AUf dem Tabellenblatt befindet sich wieder ein Button, wenn Du den betätigst, öffnet sich wieder die UserForm, aus der Du auf das Blatt gekommen bist.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Anderlin

Hallo Oliver,

erst mal vielen Dank für Deine Antwort, aber leider haben wir uns wohl missverstanden:

Das erste Tabellenblatt in meiner Mappe hat 6 Buttons mit einer Inputbox zum Suchen (Ort, Name, Postleitzahl usw.)

Drücke ich CommandButton1 wird gefragt, welchen Ort ich haben möchte. Es erscheint das Userform für "Orte" mit allen dort ansässigen Firmen in einer Listbox. Klicke ich auf die gesuchte Firma, öffnet sich das entsprechende Tabellenblatt und das Userform wird nach "hinten" gestellt. Im Tabellenblatt selbst ist wiederum ein Button, mit dem ich das nach "hinten" gestellte Userform wieder holen kann und eine andere Firma aussuche. Da ich jedoch 6 Suchmöglichkeiten und 6 Userforms habe, müsste ich im Tabellenblatt 6 Buttons einfügen, um das richtige UserForm wieder aufzurufen. Die möchte allerdings vermeiden - nur 1! Button.

Vielleicht kann man das mit einem IF-Befehl erledigen, bloß hier komm ich nicht weiter:

If Userform1.Listbox2 ?? then
Userform1.show modeless
End If

Antwort 3 von coros

Hallo Anderlin,

sorry, aber das was Du da schreibst, macht meine Beispielldatei. Mein erstes Tabellenblatt (Blatt "Auswahl") hat 3 Buttons, mit dem man drei verscheidene UserFormen öffnen kann. Je nach UserForm, wird dann wenn man in der UserForm auf den Button klickt, das Blatt "Tabelle1, Tabelle2 oder Tabelle3" geöffnet. Darin befindet sich dann ein Button. Wenn man den betätigt, erscheint wieder die UserForm, die zuletzt geöffnet war. Da benötigt man keine drei Buttons, das geht über den einen Button in den Blättern "Tabelle1, Tabelle2 oder Tabelle3".

Warum ist das nicht richtig? Ist doch genau das, was Du beschrieben hast. Halt nur nicht so, wie Deine Datei aufgebaut ist.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Anderlin

Hallo Oliver,

ich muss mich entschuldigen, man soll sich erst einmal alles anschauen und nicht nur nach dem Probieren sagen, es klappt nicht.

Mittlerweile habe ich es soweit, dass das letzte Userform angezeigt wird. Allerdings ist der Inhalt der Listbox der zum Auswählen eines anderen Namens vorhanden sein soll, gelöscht.

Kannst Du mir dazu noch einen Tipp geben?

Gruß

Anderlin

Antwort 5 von coros

Hallo Anderlin,

wie füllst Du denn die Listbox mit Daten wenn Du die UserForm aus dem Tabellenblatt mit den 6 Buttons öffnest?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von Anderlin

Hier ist mal der Code für dasUserForm1:

Private Sub CommandButton1_Click()
Dim intSheet As Integer
Dim wsTabelle As Worksheet
Dim strSuchBegriff As String
Dim rngSuchErgebnis As Range
Dim strErsteAdresse As String


strSuchBegriff = InputBox("Bitte geben Sie einen Ort ein:", "Ergebnis:")

If strSuchBegriff = "" Then Exit Sub

For intSheet = 1 To Sheets(1).ListBox1.ListCount

If Sheets(1).ListBox1.Selected(intSheet - 1) Then
Set wsTabelle = Sheets(Sheets(1).ListBox1.List(intSheet - 1))
Set rngSuchErgebnis = wsTabelle.Columns(2).Find(strSuchBegriff)

If Not rngSuchErgebnis Is Nothing Then

strErsteAdresse = rngSuchErgebnis.Address

Do
With UserForm1.ListBox2
.ColumnCount = 8
.ColumnWidths = "7,0 cm;4,5 cm;6,0cm;0 cm;0 cm;0 cm;0 cm;0 cm;0 cm"

.AddItem

.Column(0, .ListCount - 1) = _
Sheets(wsTabelle.Name).Cells(rngSuchErgebnis.Row, rngSuchErgebnis.Column + 1) ´Name
.Column(1, .ListCount - 1) = _
Sheets(wsTabelle.Name).Cells(rngSuchErgebnis.Row, rngSuchErgebnis.Column + 2) ´Fachrichtung
.Column(2, .ListCount - 1) = _
Sheets(wsTabelle.Name).Cells(rngSuchErgebnis.Row, rngSuchErgebnis.Column + 6) ´Institut/KH

.Column(7, .ListCount - 1) = wsTabelle.Name
.Column(8, .ListCount - 1) = rngSuchErgebnis.Address

End With
With UserForm1.TextBox2
UserForm1.TextBox2.Text = Chr(34) & strSuchBegriff & Chr(34)
End With




Set rngSuchErgebnis = wsTabelle.Columns(2).FindNext(rngSuchErgebnis)
Loop While Not rngSuchErgebnis Is Nothing And rngSuchErgebnis.Address <> strErsteAdresse

End If

End If

Next

If UserForm1.ListBox2.ListCount = 0 Then
MsgBox "Der gesuchte Begriff " & Chr(34) & strSuchBegriff & Chr(34) & _
" konnte in keiner der geöffneten Exceldateien gefunden werden.", vbInformation _
+ vbOKOnly, "Suche in allen geöffneten Exceldateien"
Else
UserForm1.Show
End If


End Sub

Antwort 7 von coros

Hallo Anderlin,

wenn Du den Bereich, der die UserForm füllt, aus dem CommandButton- Ereignis heraus nimmst und in die UserForm in das UserForm_Initialize()- Ereignis einsetzt, wird jedesmal wenn die UserForm geöffnet wird, die Listbox mit Daten gefüllt. Egal von wo die UF geöffnet wird.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.