Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Userform Mehre Tabelle ansprechen
#1
Guten Tag Community,

Hintergrund:
1x Userform,
2x ComboBox
2x TextBox,
2 Tabellen (Tabelle1 & Tabelle3)

Ich habe versucht, 2 x Combox voneinander getrette Tabellen anzusprechen,
ohne erfolg.

1 set klappt ohne Probleme:
1xComboBox1
1xTextBox1
1xTabelle1
END
Code:
Private Sub UserForm_Initialize()
With Worksheets("Tabelle1")
    Me.ComboBox1.Clear
    Me.ComboBox1.List = .Range("C2:C" & .Cells(Rows.Count, 2).End(xlUp).Row).Value
End With
End Sub

Private Sub ComboBox1_Change()
  With Me
    TextBox1 = Cells(ComboBox1.ListIndex + 2, 2)
  End With
End Sub


2 set klappt nicht:
1xComboBox3
1xTextBox3
1xTabelle3
Code:
Private Sub UserForm_Initialize()
With Worksheets("Tabelle1")
    Me.ComboBox1.Clear
    Me.ComboBox1.List = .Range("C2:C" & .Cells(Rows.Count, 2).End(xlUp).Row).Value
End With

With Worksheets("Tabelle3")
    Me.ComboBox3.Clear
    Me.ComboBox3.List = .Range("C2:C" & .Cells(Rows.Count, 2).End(xlUp).Row).Value
End With

End Sub

Private Sub ComboBox1_Change()
  With Me
    TextBox1 = Cells(ComboBox1.ListIndex + 2, 2)
  End With
End Sub

Private Sub ComboBox3_Change()
  With Me
    TextBox3 = Cells(ComboBox3.ListIndex + 2, 2)
  End With
End Sub

Beim Ausführen, von ComboBox3,

gibt er in TextBox3 das ergbnix aus Tabelle1, er soll aber aus Tabelle3

Kann mir einer etwas weiter helfen?
Gruß


Angehängte Dateien
.xls   55509_2.xls (Größe: 51 KB / Downloads: 6)
Antworten Top
#2
Hallo,

Code:
Private Sub ComboBox1_Change()
  With Worksheets("Tabelle1")
    TextBox1 = .Cells(ComboBox1.ListIndex + 2, 2)
  End With
End Sub

Private Sub ComboBox3_Change()
  With Worksheets("Tabelle3")
    TextBox3 = .Cells(ComboBox3.ListIndex + 2, 2)
  End With
End Sub

Gruß Uwe
Antworten Top
#3
Hallo Guten Morgen Kuwer,

danke für den Code bzw den Tipp.
Klappte sofort...

Gruß
PS: bin noch am Lernen von VBA
Antworten Top
#4
Guten Abend,

danke nochmal für deine Hilfe.

Mir ist aber leider ein Fehler aufgefallen.
Immer wenn ich einen Neuen oder bestehende Eintrag Speichern will,
löscht er den Eintrag von ComboBox203, und somit zeit er im Textbox202 "ID" an,
was aus der Tabelle 1 Zeile1 ist, was gar nicht defeniert wurden ist.
Er würfte nur ab zeile 2 was anzeigen.

Hier mein Code, etwas angeändert, damit er bei mir Funkzoniert.

Code:
  Private Sub ComboBox203_Change()
  With Tabelle1
    TextBox202 = .Cells(ComboBox203.ListIndex + 2, 2)
  End With
End Sub

Kannst du mir vielleicht sagen, wo der fehler liegen kann?

Gruß
Antworten Top
#5
Guten Morgen,

bis jetzt habe ich den oben genanten Fehler nicht wegbekommen.
Ich lege eine Testdatei mit dabei.

Ich hoffe einer kann mir weiter helfen!!!

Gruß


Angehängte Dateien
.xlsm   Alpha_Datenbank_Sto_V2.0 - Update.xlsm (Größe: 57,67 KB / Downloads: 5)
Antworten Top
#6
Hallo community,

habe eine andere möglichkeit gefunden bzw. angewendet, damit beim Speichern in der comboBox der Wert nicht gelöscht wirt.

Hier meine Lösungsweg.

Code:
Option Explicit
Dim key1 As Variant  'Kunde
Dim key2 As Variant  'Kunde|Kn ID

Private Sub UserForm_Activate()
    Dim dict As Object, arr As Variant
    Dim lZeile As Long
           
       ' Tabelle 1 "Kunde", Daten in Array einlesen
    With Tabelle1
        lZeile = .Cells(Rows.Count, 2).End(xlUp).Row
        arr = .Range(.Cells(2, 1), .Cells(lZeile, 9)).Value '9 sind die anzahl der Spalten wo er sucht, und muss gesetzt werden.
    End With
   
    ' call Function für ComboBox1..2
    Set dict = CreateObject("Scripting.Dictionary")
    key1 = Set_Keys(dict, arr, 3, -1) 'Kn ID
    key2 = Set_Keys(dict, arr, 3, 2) 'Kunde
  '#####################################################

    Set dict = Nothing
   
    Me.ComboBox203.List = key1 ' Auswahlliste "Kunde"
  End Sub
 


  'Change "Fraktion", neue Items für "Kunde"
Private Sub ComboBox203_Change()
  With Tabelle1
    TextBox202.Text = .Cells(ComboBox203.ListIndex + 2, 2).Value
  End With
End Sub

Private Function Set_Keys(dict As Object, arr As Variant, _
                          sp1 As Integer, sp2 As Integer) As Variant
    Dim wert As String
    Dim i As Integer
    ' Keys in Dictionary eintragen...
    For i = 1 To UBound(arr, 1)
        wert = arr(i, sp1)
        If sp2 <> -1 Then wert = wert & "|" & arr(i, sp2)
        dict(wert) = 0
    Next i
    ' an aufrufende Sub zurückgeben
    Set_Keys = dict.keys
    ' Keys aus Dictionary löschen
    dict.RemoveAll
End Function

Gruß
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste