Anzeige
Archiv - Navigation
1692to1696
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
Inhaltsverzeichnis

Daten ComboBox mit ListBox aus Tabelle1

Daten ComboBox mit ListBox aus Tabelle1
30.05.2019 09:42:55
Klaus
Geschätzte Excel-Gurus,
Ich sage es euch ganz ehrlich, ich hab´s versucht, krieg´s aber nicht wirklich gebacken und ersuche euch um eure Unterstützung bei folgendem Sachverhalt:
Über eine Recherche im Internet habe ich eine Beispielmappe entdeckt, die genau meine Anforderungen erfüllt.
In dieser Arbeitsmappe befindet sich die UserForm1, die eine ComboBox1 und eine ListBox1 beinhaltet. Die zugehörigen Daten werden in Tabelle1 (Tabellenblattbezeichnung: Bauteil_Fehlstelle) verwaltet.
Bei Auswahl eines Bauteils aus der ComboBox1 werden in der ListBox1 die entsprechenden Fehlstell-Beschreibungen gelistet. Trotz meiner bescheidenen VBA-Kenntnisse ist es mir gelungen, die Prozeduren so weit zu erweitern, dass mir Excel, die aus der ListBox1 ausgewählte Fehlstellenbeschreibung grundsätzlich in die aktive Zelle mit Doppelklick übernimmt.
Allerdings funktioniert dieser Vorgang nur dann, wenn ich mich in Tabelle1 (Tabellenblattbezeichnung: Bauteil_Fehlstelle) befinde.
Benötigen würde ich die UserForm1 und den aus oben stehenden Doppelklick resultierenden Eintrag allerdings in der Tabelle2 (Tabellenblattbezeichnung: Prüfbericht).
Wenn ich die UserForm1 über ein Makro aus der Tabelle2 (Tabellenblattbezeichnung: Prüfbericht) starte, wird die UserForm1 (ComboBox1; ListBox1) zwar geöffnet, aber leider nicht mit den Daten aus Tabelle1 (Tabellenblattbezeichnung: Bauteil_Fehlstelle) befüllt.
Frage 1:
Was an den Codes müsste ich da ändern, damit die UserForm1 auch in der Tabelle2 (Tabellenblattbezeichnung: Prüfbericht) mit den erforderlichen Daten aus Tabelle1 (Tabellenblattbezeichnung: Bauteil_Fehlstelle) befüllt wird und deren Inhalt dort weiterverwendet werden kann?
Frage 2 - betrifft Modul1/(Sub Formular_laden ():
Nur zum Verständnis – die Arbeitsmappe, die ich aus dem Internet gedownloadet habe, beinhaltet in Tabelle1 (Tabellenblattbezeichnung: Bauteil_Fehlstelle) den CommandButton1 zum Öffnen der Userform1. Wenn ich in der zu CommandButton1 zugehörigen Prozedur die beiden in der Originalmappe vorhandenen Apostrophzeichen für das „Zonen einlesen“ entferne, bekomme ich im Zusammenhang mit „RowSource“ einen Laufzeitfehler: 380. Könnt Ihr mir erklären, warum das so ist?
Frage 3:
Weiters würde ich gerne in der Tabelle1 (Tabellenblattbezeichnung: Bauteil_Fehlstelle) die leere Spalte A entfernen, sodass die derzeitige Spalte B zur Spalte A und die derzeitige Spalte C zur Spalte B wird und die Daten der UserForm1 dann aus den Spalten A und B eingelesen werden. Mir ist klar, dass in diesem Fall die Prozeduren anzupassen sind und ich habe es versucht, krieg´s aber nicht wirklich geregelt.
Ich bitte euch daher um Unterstützung.
Mit bestem Dank im Voraus für jeden Tipp
LG
Klaus aus Linz-Austria
Beispielmappe:
https://www.herber.de/bbs/user/130110.xlsm

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten ComboBox mit ListBox aus Tabelle1
30.05.2019 10:18:17
Werner
Hallo Klaus,
hier deine geänderten Codes. Deine bisherigen einfach durch diese Hier ersetzen.
Private Sub ComboBox1_Change()
Dim loLetzte As Long
Me.ListBox1.Clear
With Worksheets("Bauteil_Fehlstelle")
For i = 2 To .Cells(.Rows.Count, "B").End(xlUp).Row
If Me.ComboBox1 = .Cells(i, "A") Then
Me.ListBox1.AddItem .Cells(i, "B")
End If
Next i
End With
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim loLetzte As Long
With Worksheets("Prüfbericht")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Row
.Cells(loLetzte, "A") = Me.ComboBox1
.Cells(loLetzte, "B") = Me.ListBox1
End With
End Sub
Private Sub UserForm_Activate()
Dim dic As Object, i As Long
Set dic = CreateObject("Scripting.Dictionary")
With Sheets("Bauteil_Fehlstelle")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
dic(.Cells(i, 1).Text) = 0
Next
End With
Me.ComboBox1.List = Application.Transpose(dic.Keys)
Me.ComboBox1 = "...bitte Bauteil auswählen..."
End Sub
Die Userform kannst du jetzt über einen Button im Blatt "Prüfbericht" starten, Daten werden aus "Bauteil_Fehlstelle" in die Combobox eingelesen.
Bei Doppelklick auf einen Eintrag in die Listbox werden die Daten in die erste freie Zeile vom Blatt "Prüfbericht" übertragen.
Deine Spalte A im Blatt "Bauteil_Fehlstelle" bitte löschen.
Den auskommentierten Code im allgemeinen Modul auch löschen. Du füllst deine Combobox doch im Activate-Ereignis und Additem und RowSource zusammen geht nicht - entweder oder.
Gruß Werner
Anzeige
AW: Daten ComboBox mit ListBox aus Tabelle1
30.05.2019 10:36:13
Klaus
Hallo Werner,
also meine Hochachtung!!!
Recht herzlichen Dank für deine rasche und so kompentente Hilfe.
Liebe Grüße aus Linz
Klaus
Gerne u. Danke für die Rückmeldung. o.w.T.
30.05.2019 11:02:40
Werner
Anpassung...
30.05.2019 10:25:57
Werner
Hallo Klaus,
...der gleiche Code nochmals nur jetzt durchgehend mit Spaltenbuchstaben im Code - für dich wahrscheinlich besser zu lesen/verstehen.
Private Sub ComboBox1_Change()
Dim loLetzte As Long
Me.ListBox1.Clear
With Worksheets("Bauteil_Fehlstelle")
For i = 2 To .Cells(.Rows.Count, "B").End(xlUp).Row
If Me.ComboBox1 = .Cells(i, "A") Then
Me.ListBox1.AddItem .Cells(i, "B")
End If
Next i
End With
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim loLetzte As Long
With Worksheets("Prüfbericht")
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row
.Cells(loLetzte, "A") = Me.ComboBox1
.Cells(loLetzte, "B") = Me.ListBox1
End With
End Sub
Private Sub UserForm_Activate()
Dim dic As Object, i As Long
Set dic = CreateObject("Scripting.Dictionary")
With Sheets("Bauteil_Fehlstelle")
For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
dic(.Cells(i, "A").Text) = 0
Next
End With
Me.ComboBox1.List = Application.Transpose(dic.Keys)
Me.ComboBox1 = "...bitte Bauteil auswählen..."
End Sub
Gruß Werner
Anzeige
AW: Anpassung...
30.05.2019 10:44:12
Klaus
Hallo Werner,
nochmals vielen Dank und LG
Klaus
Korrektur!
30.05.2019 10:31:26
Sepp
Hallo Klaus,
das muss so lauten.
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  Dim lngNext As Long

  If ComboBox1.ListIndex > -1 And ListBox1.ListIndex > -1 Then
    With Sheets("Prüfbericht")
      lngNext = Application.Max(3, .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
      .Cells(lngNext, 1) = ComboBox1.Text
      .Cells(lngNext, 2) = ListBox1.Text
    End With
  End If

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
AW: Korrektur!
30.05.2019 10:45:01
Klaus
Hallo Sepp,
auch an dich vielen lieben Dank
LG
Klaus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige