Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Multipage





Frage

Hallo zusammen, Also ich habe eine Userform auf der eine Multipage ist. Auf dieser Multipage sind 3 Page1, Page2, und Page3. Auf jeder Page ist eine Listbox und mehre Textboxen. Dazu habe ich 3 Tabelle1, 2,3 in denen in A1 bis E1 Daten stehen. Nun möchte ich in der Listbox die Daten von Tabelle 1 in Page1, von Tabelle2 in Page 2 und von Tabelle3 in Page3 immer von A1 stehen haben. Wer kann mir einen Rat geben wie ich das machen soll MfG Pitvilla [*][quote][sup][i]Admininfo: bitte vermeide Mehrfachanfragen in verschiedenen, bzw. gleichen Gruppen. Siehe [url=https://supportnet.de/groupfaqs/3][u]FAQ2.[/u][/url][/i][/sup][/quote]

Antwort 1 von coros

Nabend Pitvilla,

zunächst einmal verstehe ich nicht so ganz, warum Du für einen einzelnen Wert eine Listbox verwendest und nicht eine Text- oder Labelbox. Eine Listbox nimmt man normalerweise wenn man mehrer Werte hat. Aber Du wirst schon wissen warum. Nachfolgend der Code, der in das VBA Projekt der UserForm gehört, in der sich die Multipage befindet.

Option Explicit

Private Sub UserForm_Initialize()
ListBox1.AddItem Sheets("Tabelle1").Range("A1")
ListBox2.AddItem Sheets("Tabelle2").Range("A1")
ListBox3.AddItem Sheets("Tabelle3").Range("A1")
End Sub

Mit dem Code werden die Listboxen 1- 3 mit den Daten aus Spalte A aus den Blättern 1- 3 gefüllt. Wenn Du Deine Listboxen umbenannt haben solltest, musst Du die Namen im dem Code abändern.

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

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 Pitvilla

Hallo Oliver

Danke für Deine schnelle Antwort.

Natürlich stehen in A1 mehr Daten ca. 400

Dumm von mir, falsch beschrieben.

ListBox1.AddItem Sheets("Tabelle1").Range("A1")

was muss ich dann ändern um alle Daten in A1 zu sehen?

MfG
Pitvilla

Antwort 3 von coros

Hi Pitvilla,

gar nichts. Denn mit dem Befehl Range("A1") werden alle Daten, die in der Zelle A1 stehen angezeigt. Oder meinst Du vielleicht, dass Du ca. 400 Daten in Spalte A hast?

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 Pitvilla

Hallo Oliver

Ja ich habe ca. 400 Daten in A1 stehen.

MfG
Pitvilla

Antwort 5 von Pitvilla

nachtrag

Ja ich habe ca. 400 Daten in Spalte A1 stehen.

Antwort 6 von Pitvilla

3. Versuch

Ja ich habe ca. 400 Daten in Spalte A stehen.

MfG
Pitvilla

Antwort 7 von coros

Hi ,

dann sieht der Code folgendermaßen aus.

Option Explicit

Private Sub UserForm_Initialize()
Dim Wiederholungen As Long
For Wiederholungen = 1 To Sheets("Tabelle1").Range("A65536").End(xlUp).Row
ListBox1.AddItem Sheets("Tabelle1").Cells(Wiederholungen, 1)
Next
For Wiederholungen = 1 To Sheets("Tabelle2").Range("A65536").End(xlUp).Row
ListBox2.AddItem Sheets("Tabelle2").Cells(Wiederholungen, 1)
Next
For Wiederholungen = 1 To Sheets("Tabelle3").Range("A65536").End(xlUp).Row
ListBox3.AddItem Sheets("Tabelle3").Cells(Wiederholungen, 1)
Next
End Sub


Ich hoffe, Du hast das so gemeint. Wenn nicht oder bei Fragen, bzw. Änderungswünschen melde Dich.

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 8 von Pitvilla

Hallo Oliver

Vielen, vielen Dank.

Genau so etwas habe ich gesucht.

MfG
Pitvilla

Antwort 9 von coros

Hi Pitvilla,

gern geschehen. Danke auch für die Rückmeldung.

MfG,
Oliver
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 10 von Pitvilla

Hallo Oliver

Jetzt habe ich mich schon so gefreut, daß alles funtioniert, aber so ist es nicht.

Mit den Daten in Spalte A ist alles klar.

Nur wenn ich nun in der Listbox in Page1 den Namen (Meier) anklicke, möchte ich gerne die weiteren Daten die in Spalte B und in Spalte C stehen in den Textboxen angezeigt bekommen.

Kanst Du mir bitte noch einmal helfen?

MfG
Pitvilla

Antwort 11 von coros

Hi Pitvilla,

damit nachfolgender Code ohne Probleme funktioniert müssen sich in Page 2 die TextBoxen 1 & 2, in Page 2 die TextBoxen 3 & 4 und in Page 3 die TextBoxen 5 & 6 befinden. Lösche Deinen alten Code in dem VBA Projekt der UserForm mit der Multipage und kopiere nachfolgenden dort hinein.

Option Explicit

Public Wiederholungen As Long

Private Sub ListBox1_Change()
For Wiederholungen = 1 To Sheets("Tabelle1").Range("A65536").End(xlUp).Row
If Sheets("Tabelle1").Cells(Wiederholungen, 1) = ListBox1.Text Then
TextBox1.Text = Sheets("Tabelle1").Cells(Wiederholungen, 2)
TextBox2.Text = Sheets("Tabelle1").Cells(Wiederholungen, 3)
End If
Next
End Sub

Private Sub ListBox2_Change()
For Wiederholungen = 1 To Sheets("Tabelle2").Range("A65536").End(xlUp).Row
If Sheets("Tabelle2").Cells(Wiederholungen, 1) = ListBox2.Text Then
TextBox3.Text = Sheets("Tabelle2").Cells(Wiederholungen, 2)
TextBox4.Text = Sheets("Tabelle2").Cells(Wiederholungen, 3)
End If
Next
End Sub

Private Sub ListBox3_Change()
For Wiederholungen = 1 To Sheets("Tabelle3").Range("A65536").End(xlUp).Row
If Sheets("Tabelle3").Cells(Wiederholungen, 1) = ListBox3.Text Then
TextBox5.Text = Sheets("Tabelle3").Cells(Wiederholungen, 2)
TextBox6.Text = Sheets("Tabelle3").Cells(Wiederholungen, 3)
End If
Next
End Sub

Private Sub UserForm_Initialize()
For Wiederholungen = 1 To Sheets("Tabelle1").Range("A65536").End(xlUp).Row
ListBox1.AddItem Sheets("Tabelle1").Cells(Wiederholungen, 1)
Next
For Wiederholungen = 1 To Sheets("Tabelle2").Range("A65536").End(xlUp).Row
ListBox2.AddItem Sheets("Tabelle2").Cells(Wiederholungen, 1)
Next
For Wiederholungen = 1 To Sheets("Tabelle3").Range("A65536").End(xlUp).Row
ListBox3.AddItem Sheets("Tabelle3").Cells(Wiederholungen, 1)
Next
End Sub


Mit dem werden wenn in der Listbox etwas ausgewählt wird, die Daten aus Spalte B und C in den Textboxen angezeigt.

Ich hoffe, dass Du das so wolltest. Ansonsten melden.

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 12 von Pitvilla

Hallo Oliver

Nochmal vielen Dank für Deine Hilfe.

Es klappt wunderbar.

MfG
Pitvilla

Antwort 13 von Pitvilla

Hallo Oliver

Ich habe mal eine Frage.

Ich habe den Code von Oskarlein mal bei mir auf der Multipage ausprobiert und er funktioniert einwann frei.

Leider nur auf der erste Page1 nicht auf der Page2.
Was muß denn daran verändet werden das er auf der Page2 auch läuft.

Private Sub TextBox1_Change()
Dim Suchbegriff As Range
With Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Suchbegriff = .Find(What:=TextBox1, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
ListBox1.ListIndex = Suchbegriff.Row - 1
End If
End With
End Sub

MfG
Pitvilla

Antwort 14 von coros

Hi Pitvilla,

das hat nichts mit der Page zu tun. Du musst schauen, welche Bezeichnung Deine Text- und ListBox auf Page2 hat und die dann entsprechend in dem Code eintragen. Als Beispiel: Die TextBox-Bezeichnung (Name) auf Page2 ist TextBox3 und der Name der ListBox ist ListBox2, dann sieht der Code folgendermaßen aus.

Private Sub TextBox3_Change() 
Dim Suchbegriff As Range 
With Range("A1:A" & Range("A65536").End(xlUp).Row) 
Set Suchbegriff = .Find(What:=TextBox3, LookIn:=xlValues) 
If Not Suchbegriff Is Nothing Then 
ListBox2.ListIndex = Suchbegriff.Row - 1 
End If 
End With 
End Sub 


Ich hoffe, Du hast meine Erklärung verstanden. Wenn nicht, dann melde Dich wieder.

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 15 von Pitvilla

Hallo Oliver

Es geht nicht. Hier ist mein Code.

´Mit Textbox suchen nach Alben

Private Sub TextBox27_Change()
Dim Suchbegriff As Range
With Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Suchbegriff = .Find(What:=TextBox27, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
ListBox4.ListIndex = Suchbegriff.Row - 1
End If
End With
End Sub


MfG
Pitvilla

Antwort 16 von coros

Hi Pitvilla,

das sollte es aber, wenn sich sowohl TextBox27 in das Du die Eingabe machst und ListBox4 in der Page2 Deiner Multipage befinden. Es wird also irgend etwas bei Dir in Deiner Datei nicht stimmen. Kontrolliere noch mal alles, eventuell hat sich ja ein Fehler eingeschlichen.

Ansonsten wird es schwer, Dir zu helfen, denn der Code, wie er von mir stammt und von Dir entsprechend abgeändert wurde funktioniert. Man müsste dann Deine Datei vor Augen haben, damit man das ganze kontrollieren kann.

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 17 von Pitvilla

Hallo Oliver

Danke für Deine Antwort

Werde nochmal alles durchgehen

MfG Pitvilla

Antwort 18 von Pitvilla

Hallo Oliver

Ich habe den Code noch einmal in einer anderen Excel Datei ausprobiert die genauso aufgebaut ist.

Da kamm beim 3. Buchstabe den ich eingab diese Fehlermeldung:

Laufzeitfehler 380
Eigenschaft Listindex konnte nicht gesetzt werden.
Ungültiger Eigenschaftenwert.

ListBox1.ListIndex = Suchbegriff.Row - 3

MfG
Pitvilla

Antwort 19 von coros

Hi Pitvilla,

klar, dann wird der bei der Subtraktion "Suchbegriff.Row - 3" ein Ergebnis kleiner 0 (Null) rauskommen. Das funktioniert dann logischerweise nicht, da der erste Eintrag in der ListBox den Index 0 (Null) hat. Wobei ich nun auch nicht so ganz verstehe, warum Du aus der -1 eine -3 gemacht hast.

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 20 von Pitvilla

Hallo Oliver

Ich bin´s die Nervensäge.

Ich habe es nochmal neu ausprobiert und es geht nicht. Man kann immer nur auf einer Page suchen.

Hier mal der Code zusammengestellter Code.
Ich hoffe Du findes den Fehler.

Option Explicit

Public Wiederholungen As Long

Private Sub ListBox1_Change()
For Wiederholungen = 1 To Sheets("Tabelle1").Range("A65536").End(xlUp).Row
If Sheets("Tabelle1").Cells(Wiederholungen, 1) = ListBox1.Text Then
TextBox1.Text = Sheets("Tabelle1").Cells(Wiederholungen, 2)
TextBox2.Text = Sheets("Tabelle1").Cells(Wiederholungen, 3)
End If
Next
End Sub

Private Sub ListBox2_Change()
For Wiederholungen = 1 To Sheets("Tabelle2").Range("A65536").End(xlUp).Row
If Sheets("Tabelle2").Cells(Wiederholungen, 1) = ListBox2.Text Then
TextBox3.Text = Sheets("Tabelle2").Cells(Wiederholungen, 2)
TextBox4.Text = Sheets("Tabelle2").Cells(Wiederholungen, 3)
End If
Next
End Sub

Private Sub ListBox3_Change()
For Wiederholungen = 1 To Sheets("Tabelle3").Range("A65536").End(xlUp).Row
If Sheets("Tabelle3").Cells(Wiederholungen, 1) = ListBox3.Text Then
TextBox5.Text = Sheets("Tabelle3").Cells(Wiederholungen, 2)
TextBox6.Text = Sheets("Tabelle3").Cells(Wiederholungen, 3)
End If
Next
End Sub

Private Sub UserForm_Initialize()
For Wiederholungen = 1 To Sheets("Tabelle1").Range("A65536").End(xlUp).Row
ListBox1.AddItem Sheets("Tabelle1").Cells(Wiederholungen, 1)
Next
For Wiederholungen = 1 To Sheets("Tabelle2").Range("A65536").End(xlUp).Row
ListBox2.AddItem Sheets("Tabelle2").Cells(Wiederholungen, 1)
Next
For Wiederholungen = 1 To Sheets("Tabelle3").Range("A65536").End(xlUp).Row
ListBox3.AddItem Sheets("Tabelle3").Cells(Wiederholungen, 1)
Next
End Sub

Private Sub TextBox7_Change()
Dim Suchbegriff As Range
With Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Suchbegriff = .Find(What:=TextBox7, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
ListBox1.ListIndex = Suchbegriff.Row - 1
End If
End With
End Sub

Private Sub TextBox8_Change()
Dim Suchbegriff As Range
With Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Suchbegriff = .Find(What:=TextBox8, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
ListBox2.ListIndex = Suchbegriff.Row - 1
End If
End With
End Sub

Private Sub TextBox9_Change()
Dim Suchbegriff As Range
With Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Suchbegriff = .Find(What:=TextBox9, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
ListBox3.ListIndex = Suchbegriff.Row - 1
End If
End With
End Sub


MfG
Pitvilla

Antwort 21 von coros

Nabend Pitvilla,

besteht die Möglichkeit mir die Datei mal per Mail zukommen zu lassen. Wenn ja, dann schicke Sie mir bitte mal und ich schaue mir das morgen Abend mal an. Meine Mailadresse findest Du auf meiner HP u. a. im Impressum.

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 22 von coros

Hi an alle,

Petvilla hat mir seine Datei geschickt und dabei ist mir aufgefallen, in den TextBox_Change-Ereignissen, die Angabe, aus welchem Blatt die Daten stammen, fehlen. Dashalb nur der Formhalber hier die Code für die 3 TextBox-Ereignisse noch mal aufgeführt.

Private Sub TextBox7_Change()
Dim Suchbegriff As Range
With Sheets("Tabelle1").Range("A1:A" & Sheets("Tabelle1").Range("A65536").End(xlUp).Row)
Set Suchbegriff = .Find(What:=TextBox7, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
ListBox1.ListIndex = Suchbegriff.Row - 1
End If
End With
End Sub

Private Sub TextBox8_Change()
Dim Suchbegriff As Range
With Sheets("Tabelle2").Range("A1:A" & Sheets("Tabelle2").Range("A65536").End(xlUp).Row)
Set Suchbegriff = .Find(What:=TextBox8, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
ListBox2.ListIndex = Suchbegriff.Row - 1
End If
End With
End Sub

Private Sub TextBox9_Change()
Dim Suchbegriff As Range
With Sheets("Tabelle3").Range("A1:A" & Sheets("Tabelle3").Range("A65536").End(xlUp).Row)
Set Suchbegriff = .Find(What:=TextBox9, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
ListBox3.ListIndex = Suchbegriff.Row - 1
End If
End With
End Sub



MfG,
Oliver
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 23 von Pitvilla

Hallo Oliver

Heute habe ich wieder eine Frage an Dich.

Wie kann ich, ( oder besser du ) den folgenden Code so anpassen, das er auf Page2 läuft. Auf Page1 läuft er einwandfrei.

´Text ändern in Textbox

Private Sub TextBox4_Change()
If ListBox2.ListIndex = -1 Then Exit Sub
Cells(Wiederholungen, 1).Value = TextBox4.Text
End Sub

Private Sub TextBox5_Change()
If ListBox2.ListIndex = -1 Then Exit Sub
Cells(Wiederholungen, 2).Value = TextBox5.Text
End Sub

Private Sub TextBox6_Change()
If ListBox2.ListIndex = -1 Then Exit Sub
Cells(Wiederholungen, 3).Value = TextBox6.Text
End Sub

´Anzeigen der einzelnen Angaben bei der Auswahl in der Listbox.

Private Sub ListBox2_Click()
Wiederholungen = ListBox2.ListIndex + 2
Beep
TextBox4.Text = Cells(Wiederholungen, 1).Value
TextBox5.Text = Cells(Wiederholungen, 2).Value
TextBox6.Text = Cells(Wiederholungen, 3).Value

End Sub

MfG
Pitvilla

Antwort 24 von coros

Hi itvilla,

wenn es sich immer noch um die gleiche UserForm mit der Multipage aus Deiner Testdatei geht, die Du mir geschickt hast, dann gehe ich mal davon aus, dass Du sowohl Daten aus dem Tabellenblatt "Tabelle2" holen, als auch Daten in das Tabellenblatt "Tabelle2" schreiben möchtest. Wenn dem so ist, dann musst Du vor die Zellendeklaration den Sheetsnamen schreiben. Also anstelle nur

Cells(Wiederholungen, 1).Value = TextBox4.Text

muss dort dann

Sheets("Tabelle2").Cells(Wiederholungen, 1).Value = TextBox4.Text

stehen. Wenn es sich nicht mehr um Deine Testdatei handelt, musst Du wohl einige Angaben zu Deiner Datei usw. machen.

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 25 von Pitvilla

Hallo Oliver

Ja, es ist noch die gleiche Testdatei die ich Dir geschickt habe.
Ich habe vorhin deine Änderung ausprobiert, und sie hat nur halb funktioniert. Man kann die Daten ändern, aber er schreibt sie nicht zurück.

Schau doch bitte noch einmal nach wo der Fehler steckt.

MfG
Pitvilla

Antwort 26 von coros

Hi Pitvilla,

steht in der UserForm zusätzlich noch der Code aus Antwort 22? Es wäre gut, wenn Du mir die Datei noch mal schicken könntest (E-Mailadresse müsstest Du ja noch haben), da ich, ohne die Hellseherei auf die Schnelle zu erlernen, nicht sehen kann, was Du jetzt aktuell noch alles so in dem Projekt der UserForm zu stehen hast. Wenn Du mir die Datei heute zu einer annehmbaren Zeit schickst, schaue ich sie mir heute noch an. Ansonsten erst morgen am Abend oder Samstag, da ich morgen noch einen letzten Seminartag in Hamburg habe (sehr zum Leidwesen meiner Frau, die nun alleine zu Hause sitzt) und erst am Nachmittag nach Hause fahre werde.

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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: