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

VB - Werte mehreren Textboxen zuordnen

Forumthread: VB - Werte mehreren Textboxen zuordnen

VB - Werte mehreren Textboxen zuordnen
21.06.2023 17:36:18
Brain09

Hallo zusammen,

um es vorweg zu nehmen, das sind meine ersten Berührungspunkte mit VB, daher bitte ich um Nachsicht :)

Ich möchte mehrere Daten aus verschiedenen Tabellen zusammenführen und anschaulich dargestellt haben. Klar geht das prinzipiell mit Excel, da ich aber teilweise mehrere Werte zu den Bezugsgrößen habe, summieren sich die Datensätze auf eine unübersichtliche Anzahl.

Daher ist meine Idee das ganze mit Visual Basic zu lösen.

Ich habe also als Beispiel um mein Problem zu zeigen in Tabelle1:
Spalte A (Gegenstand)
Brot
Käse
Müsli
Toast
Nutella
Schokolade
Eis
Joghurt
Marmelade
Wurst

In Tabelle2:
Spalte A (Gegenstand) Spalte B (Zutat)
Brot Mehl
Käse Milch
Müsli Haferflocken
Toast Mehl
Nutella Zucker
Schokolade Zucker
Eis Wasser
Joghurt Milch
Marmelade Zucker
Wurst Fleisch
Brot Wasser

Und noch eine Tabelle 3 mit
Spalte A (Gegenstand) Spalte B (weitere Zutaten)
Brot Salz
Käse Bakterien
Müsli Frucht
Toast Butter
Nutella Kakao
Schokolade Kakao
Eis Fruchtsaft
Joghurt Bakterien
Marmelade Salz
Brot Hefe
Brot Baktriebmittel

Den Gegenstand aus Spalte A soll in einer Liste auswählbar sein und in den Textboxen dann die dazugehörigen Werte aus den Tabellen 2 und 3 angezeigt werden.

Das ganze hat soweit dank Forum und ChatGPT auch ein erstes Ergebnis gebracht:

Private Sub ListBox1_Change()
Dim selectedValue As String
Dim correspondingValue1 As String
Dim correspondingValue2 As String

selectedValue = ListBox1.Value

Dim ws1 As Worksheet
Dim ws2 As Worksheet

Set ws1 = ThisWorkbook.Worksheets("Tabelle2")
Set ws2 = ThisWorkbook.Worksheets("Tabelle3")

Dim lastRow1 As Long
Dim lastRow2 As Long

lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
lastRow2 = ws2.Cells(ws1.Rows.Count, "A").End(xlUp).Row

Dim i As Long
For i = 1 To lastRow1
If ws1.Cells(i, "A").Value = selectedValue Then
correspondingValue1 = ws1.Cells(i, "B").Value
Exit For
End If
Next i

For i = 1 To lastRow2
If ws2.Cells(i, "A").Value = selectedValue Then
correspondingValue2 = ws2.Cells(i, "B").Value
Exit For
End If
Next i

TextBox1.Value = correspondingValue1
TextBox2.Value = correspondingValue2

End Sub

Private Sub ListBox1_Click()

End Sub

Private Sub TextBox1_Change()

End Sub

Private Sub UserForm_Initialize()
Dim ws As Worksheet
Dim lastRow As Long
Dim rng As Range
Dim cell As Range

Set ws = ThisWorkbook.Worksheets("Tabelle1")

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

Set rng = ws.Range("A2:A" & lastRow)

For Each cell In rng
Me.ListBox1.AddItem cell.Value
Next cell
End Sub

Private Sub ListBox1_SelectedIndexChanged()

MsgBox ("Das Event existiert in Excel nicht.")
End Sub

Aber das Problem ist, dass es in den Spalten B mehrere Werte zu dem ausgewählten Wert in A gibt und diese sollen in weiteren Textboxen ebenfalls angezeigt werden wenn vorhanden...

Also ungefähr so:

Userbild

Ich komme ums verrecken nicht weiter... Kann wer helfen??

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VB - Werte mehreren Textboxen zuordnen
21.06.2023 18:01:37
onur
Statt Bildchen solltest du die (Beispiels-) Datei posten.


AW: VB - Werte mehreren Textboxen zuordnen
21.06.2023 18:20:40
Ulf
Ändere den Aufbau relational, d.h.
1.Spalte Nr
2.Spalte Gegenstand
in den Zutaten-Tabellen dito, in der es bzw nur 1XMehl gibt mit bspw Nr 2
würde auch nur eine anlegen und dort 3.Spalte Hauptzutat (WAHR/FALSCH)
Für die Zuordnung eine neue Tabelle mit 2 Spalten, dort stehen dann nur Zahlen
1.Spalte Nr (des Gegenstands / Rezeptes)
2.Spalte Nr (Zutaten)
dann kannst du mit Excelmitteln/Filter und mit VBA darauf zugreifen
hth
Ulf


Anzeige
AW: VB - Werte mehreren Textboxen zuordnen
21.06.2023 18:28:26
Daniel
Hi
da die Anzahl der Zutaten variabel ist, würde ich die Textboxen durch Listboxen ersetzen.
dann reicht dir dieser Code :

Private Sub ListBox1_Click()
Dim Zelle As Range

ListBox2.Clear
ListBox3.Clear

If ListBox1.ListIndex = -1 Then Exit Sub
For Each Zelle In Sheets("Tabelle2").Cells(1, 1).CurrentRegion.Columns(1).Cells
    If Zelle.Value = ListBox1.Text Then ListBox2.AddItem Zelle.Offset(0, 1).Value
Next
    
For Each Zelle In Sheets("Tabelle3").Cells(1, 1).CurrentRegion.Columns(1).Cells
    If Zelle.Value = ListBox1.Text Then ListBox3.AddItem Zelle.Offset(0, 1).Value
Next
End Sub
Gruß Daniel


Anzeige
AW: VB - Werte mehreren Textboxen zuordnen
22.06.2023 21:40:20
Brain09
Alles klar, besten Dank für die Rückmeldung

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige