Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
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
von ComboBox in Text/ComboBox
01.02.2021 17:02:25
ComboBox
Hallo,
ich finde leider nichts passendes im Archiv.
Mittels diesem Code lade ich die ComboBox1:

Dim xRow&
xRow = wksTB1.[A65536].End(xlUp).Row
With ComboBox1
.Clear
.RowSource = "Tabelle1!A3:D" & xRow
.ColumnCount = 4
.ColumnWidths = "50;50;40;40"
.Text = "neue Buchung hinzufügen"
End With
Wenn ich jetzt einen Eintrag in ComboBox1 auswähle, möchte ich den gewählten Datensatz in die TextBox/ComboBox übertragen.
Ich verwende folgenden Code, der aber nicht funktioniert:

Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = -1 Then
Label37.Visible = True
Label37.Caption = "kein Eintrag ausgewählt"
ComboBox1.Value = "neue Buchung hinzufügen"
ElseIf ComboBox1.ListIndex > -1 Then
ComboBox1.Value = CDate(ComboBox1.Value)
''    TextBox1.Value = CDate(ComboBox1.Column(0, ComboBox1.ListIndex + 1))
''    ComboBox2.Value = ComboBox1.Column(1, ComboBox1.ListIndex + 1)
''    ComboBox3.Value = Format(ComboBox1.Column(2, ComboBox1.ListIndex + 1), "#0.00")
''    TextBox4.Value = ComboBox1.Column(3, ComboBox1.ListIndex + 1)
''End If
With Me
TextBox1 = (Cells(ComboBox1.ListIndex + 1, 1))
ComboBox2 = Cells(ComboBox1.ListIndex + 1, 2)
ComboBox3 = Format(Cells(ComboBox1.ListIndex + 1, 3), "#0.00")
TextBox4 = Cells(ComboBox1.ListIndex + 1, 4)
End With
End If
End Sub
Was mache ich hier bitte falsch?
Gruss
Peter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: von ComboBox in Text/ComboBox
01.02.2021 17:53:06
ComboBox
Hallo Peter,
nicht funktioniert ist ein weites Feld. Was passiert, was nicht, Fehlermeldung ...?
Gruß
Nepumuk
AW: von ComboBox in Text/ComboBox
01.02.2021 17:54:54
ComboBox
Hallo Nepumuk,
es wird nicht die richtige Zeile der ComboBox ausgewählt.
Es ist immer die gleiche Zeile.
Gruss
Peter
AW: von ComboBox in Text/ComboBox
01.02.2021 18:03:21
ComboBox
Hallo Peter,
der ListIndex des 1. Eintrags ist 0. Dein RowSource beginnt in Zeile 3. Du musst also zum ListIndex 3 addieren um in die richtige Datenzeile zu kommen. Du addierst nur 1.
Gruß
Nepumuk
AW: von ComboBox in Text/ComboBox
03.02.2021 08:42:00
ComboBox
Hallo Nepumuk,
besten Dank für Deine Hilfe. Habe die Sache jetzt wie folgt gelöst:

'Auswahl bei Änderung
Private Sub ComboBox1_fuellen()
Dim iRow As Integer
Dim wks As Worksheet
Set wks = Worksheets("Tabelle1")
With ComboBox1
.Clear
.ColumnCount = 4
.ColumnWidths = "4,5 cm; 2,5 cm; 2,5 cm; 2,0 cm"
.AddItem "neue Buchung hinzufügen"
For iRow = 2 To wks.Range("A65536").End(xlUp).Row
.AddItem wks.Cells(iRow, 1).Value
.List(.ListCount - 1, 1) = wks.Cells(iRow, 2).Value
.List(.ListCount - 1, 2) = Format(wks.Cells(iRow, 3).Value, "#0.00")
.List(.ListCount - 1, 3) = wks.Cells(iRow, 4).Value
Next
.ListIndex = 0 '"neue Buchung hinzufügen"
End With
End Sub
und für das Change-Ereignis:

'für Änderung Buchungen auswählen
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex > 1 Then
Label37.Caption = "Änderung durchführen oder abbrechen!"
TextBox1.Value = ComboBox1.List(ComboBox1.ListIndex, 0)     'Werte aus ComboBox
ComboBox2.Value = ComboBox1.List(ComboBox1.ListIndex, 1)    'Werte aus ComboBox
ComboBox3.Value = ComboBox1.List(ComboBox1.ListIndex, 2)    'Werte aus ComboBox
TextBox4.Value = ComboBox1.List(ComboBox1.ListIndex, 3)     'Werte aus ComboBox
CommandButton8.Visible = True
CommandButton28.Visible = False
Else
Label37.Caption = "für neue Buchung bitte u. a. Felder ausfüllen - Button ""Buchen"" drü _
cken oder" _
& vbLf & "bitte Buchung auswählen, Daten ändern - Button Andern drücken oder" _
& vbLf & "Abbruch bzw. Formular beenden!"
ComboBox1.Value = "neue Buchung hinzufügen"
TextBox1.Value = ""
ComboBox2.Value = ""
ComboBox3.Value = ""
TextBox4.Value = ""
CommandButton28.Visible = True
CommandButton8.Visible = False
TextBox1.SetFocus
End If
End Sub
Es klappt jetzt einwandfrei. Ich glaube dass hiermit auch Deine Bedenken gelöst sind.
Nochmals vielen Dank.
Gruss
Peter
Anzeige
AW: von ComboBox in Text/ComboBox
01.02.2021 18:02:13
ComboBox
Hi
1. lass das Combobox1.value = egalwas weg
was soll das?
wenn man das Change.Event verwendet, dann sollte man keine Änderungen an dem jeweiligen Steuerelement vornehmen, ansonsten landet man schnell in einer Endlosschleife
2. statt Change verwende besser CLICK oder AfterUpdate oder sowas um auf anwendereingaben zu reagieren.
Change reagiert meistens "zu oft"
3. wenn du die Werte aus Combobox in weitere Steuerelemente übertragen willst, dann entweder aus Liste der Box selbst, dann musst du aber beachten dass die Werte in der Liste Text sind:
Textbox1.Value = Combobox1.List(Combobox1.ListIndex, 0)
Combobox2.Value = Combobox1.List(Combobox1.ListIndex, 1)
usw
wenn du die Werte aus der Exceltabelle lesen willst, musst du Zeilen- und Spaltennummern auch korrekt umrechnen (in deinem Fall + 3) und ggf das Tabellenblatt mit angeben:
Textbox1.Value = Sheets("Tabelle1").Cells(Combobx1.ListIndex + 3, 1).Value

oder liest den Zellbereich aus der RowSource an, dann kannst du als Korrekturwert immer +1 nehmen unabhängig von der Postion im Tabellenblatt:
Textbox1.Value = Range(Combobx1.RowSource).Cells(Combobox1.ListIndex + 1, 1)
wenn du die Zellwerte nicht mit .Value sondern mit .Text ausliest, bekommst du sie dann auch so wie sie formatiert in der Zelle stehen, was bei Datum/Uhrzeit/Währung u. das nachformatieren mit FORMAT erspart.
Gruß Daniel
Anzeige
AW: von ComboBox in Text/ComboBox erledigt
03.02.2021 08:40:40
ComboBox
Hallo Daniel,
besten Dank für Deine Hilfe. Habe die Sache jetzt wie folgt gelöst:

'Auswahl bei Änderung
Private Sub ComboBox1_fuellen()
Dim iRow As Integer
Dim wks As Worksheet
Set wks = Worksheets("Tabelle1")
With ComboBox1
.Clear
.ColumnCount = 4
.ColumnWidths = "4,5 cm; 2,5 cm; 2,5 cm; 2,0 cm"
.AddItem "neue Buchung hinzufügen"
For iRow = 2 To wks.Range("A65536").End(xlUp).Row
.AddItem wks.Cells(iRow, 1).Value
.List(.ListCount - 1, 1) = wks.Cells(iRow, 2).Value
.List(.ListCount - 1, 2) = Format(wks.Cells(iRow, 3).Value, "#0.00")
.List(.ListCount - 1, 3) = wks.Cells(iRow, 4).Value
Next
.ListIndex = 0 '"neue Buchung hinzufügen"
End With
End Sub
und für das Change-Ereignis:

'für Änderung Buchungen auswählen
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex > 1 Then
Label37.Caption = "Änderung durchführen oder abbrechen!"
TextBox1.Value = ComboBox1.List(ComboBox1.ListIndex, 0)     'Werte aus ComboBox
ComboBox2.Value = ComboBox1.List(ComboBox1.ListIndex, 1)    'Werte aus ComboBox
ComboBox3.Value = ComboBox1.List(ComboBox1.ListIndex, 2)    'Werte aus ComboBox
TextBox4.Value = ComboBox1.List(ComboBox1.ListIndex, 3)     'Werte aus ComboBox
CommandButton8.Visible = True
CommandButton28.Visible = False
Else
Label37.Caption = "für neue Buchung bitte u. a. Felder ausfüllen - Button ""Buchen"" drü _
cken oder" _
& vbLf & "bitte Buchung auswählen, Daten ändern - Button Andern drücken oder" _
& vbLf & "Abbruch bzw. Formular beenden!"
ComboBox1.Value = "neue Buchung hinzufügen"
TextBox1.Value = ""
ComboBox2.Value = ""
ComboBox3.Value = ""
TextBox4.Value = ""
CommandButton28.Visible = True
CommandButton8.Visible = False
TextBox1.SetFocus
End If
End Sub
Es klappt jetzt einwandfrei. Ich glaube dass hiermit auch Deine Bedenken gelöst sind.
Nochmals vielen Dank.
Gruss
Peter
Anzeige

179 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige