Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1076to1080
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

Abhaengige ComboBox - automatische Zeilenausgabe

Abhaengige ComboBox - automatische Zeilenausgabe
26.05.2009 15:32:32
AnRo
Hallo zusammen,
ich bin absoluter vb anfaenger und moechte folgende Loesung mit vb realisieren.
Ein Dateiname soll automatisch generiert werden. Hierzu werden drei Comboboxen ausgewaehlt und danach soll der Dateiname entsprechend der Auswahl ausgegeben werden.
Hierzu habe ich bereits folgende Code zusammengebastelt, welcher soweit auch funktioniert, jedoch habe ich folgende Anpassungen, bei welchen ich nicht weiterkomme.
Zum ersten soll entgegen der 1ten und 2ten Combobox bei der 3ten Combobox auch die Anzeige gleicher also doppelter Namen moeglich sein.
In einer vierten Spalte steht der Dateiname, welcher anschliessend auf dem Bildschirm angezeigt werden soll hierzu benoetige ich folgende Loesung. Sollte die letzte Auswahl also bspw. aus Combobox 3 in C24 stehen, soll der Name in Reihe D24 ausgegeben werden. Bei C210 entsprechend D210.
Uebere eure Hilfe bin ich dankbar anbei der Code:
Option Explicit
Dim aRow As Long
Dim col As New Collection
Dim iRow, x As Long

Private Sub ComboBox1_Change()
ComboBox2.Clear
ComboBox3.Clear
On Error Resume Next
For iRow = 2 To aRow
col.Add Cells(iRow, 2), Cells(iRow, 2)
If Err = 0 And Cells(iRow, 1) = ComboBox1.Value Then
ComboBox2.AddItem Cells(iRow, 2)
Else
Err.Clear
End If
Next iRow
On Error GoTo 0
For x = col.Count To 1 Step -1
col.Remove (x)
Next x
End Sub



Private Sub ComboBox2_Change()
ComboBox3.Clear
On Error Resume Next
For iRow = 2 To aRow
col.Add Cells(iRow, 3), Cells(iRow, 3)
If Err = 0 And Cells(iRow, 2) = ComboBox2.Value Then
ComboBox3.AddItem Cells(iRow, 3)
Else
Err.Clear
End If
Next iRow
On Error GoTo 0
For x = col.Count To 1 Step -1
col.Remove (x)
Next x
End Sub



Private Sub UserForm_Initialize()
aRow = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row, 65536)
On Error Resume Next
For iRow = 2 To aRow
col.Add Cells(iRow, 1), Cells(iRow, 1)
If Err = 0 Then
ComboBox1.AddItem Cells(iRow, 1)
Else
Err.Clear
End If
Next iRow
On Error GoTo 0
End Sub


Viele Gruesse,
Andreas

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abhaengige ComboBox - automatische Zeilenausgabe
26.05.2009 17:30:24
fcs
Hallo Anreas,
damit du die zu jedem Eintrag in Combobox3 gehörige Zeile im Tabellenblatt kennst, muss du diese beim Einlesen der Zellwerte auch einlesen.
Dazu muss du für Combobox3 unter Eigenschaften "ColumnCount" auf 2 setzen. Damit die Zeilennummer in der Auswahlliste nicht angezeigt wird und "ColumnWidths" die Breiten setzen.
z.B. 80Pt;0Pt. In der 2. Spalte der Combobox wird dann immer die zugehörige Tabellenzeile gespeichert.
Deine Prozedur für Combobox2_Change muss du dann wie folgt anpassen.
Zusätzlich hab ich ein Beispiel angefügt, wie du den Dateinamen in die Spalte D schreiben kannst.
Gruß
Franz

Option Explicit
Private Sub ComboBox2_Change()
Combobox3.Clear
On Error Resume Next
For iRow = 2 To aRow
col.Add Cells(iRow, 3), Cells(iRow, 3)
If Err = 0 And Cells(iRow, 2) = Combobox2.Value Then
With Combobox3
.AddItem Cells(iRow, 3)
.List(.ListCount - 1, 1) = iRow
End With
Else
Err.Clear
End If
Next iRow
On Error GoTo 0
For x = col.Count To 1 Step -1
col.Remove (x)
Next x
End Sub
'beispiel
Sub Dateiname_eintragen()
Dim wks As Worksheet, strDateiName As String
Set wks = ActiveSheet
strDateiName = Me.Combobox1.Value & Me.Combobox2.Value & Me.Combobox3.Value & ".xls"
With Me.Combobox3
'Dateiname in Spalte D (4) eintragen
wks.Cells(Val(.List(.ListIndex, 1)), 4) = strDateiName
End With
End Sub


Anzeige
AW: Abhaengige ComboBox - automatische Zeilenausgabe
27.05.2009 15:33:24
AnRo
Vielen Dank fuer deine Antwort.
Aber ich habe mich bei einem Punkt falsch ausgedrueckt. Ich moechte die vierte Zeile nicht abspeichern, sondern den Wert aus der vierten Zelle auslesen.
Wenn meine dritte Auswahl der ComboBox auf Zeile C23 faellt soll der Wert aus D23 am Bildschirm angezeigt werden.
Das Problem das doppelte Eintraege bei der dritten Combobox nicht angezeigt werden, besteht auch noch und ich weiss nicht, wie ich dieses beheben kann. Bei der ComboBox 1 und 2 sollen keine doppelten Eintraege angezeigt werden, bei der 3ten Combobox jedoch schon.
Vielen Dank,
Andreas
Anzeige
AW: Abhaengige ComboBox - automatische Zeilenausgabe
27.05.2009 17:08:14
fcs
Hallo Andreas,
wenn du in der Combobox3 alle Zellen angezeigt haben möchtest für die in Spalte 2 der Zellinhalt mit der Combobox2 übereinstimmt, dann darfs du hier die den Weg über die Methode "Collection.Add" nicht gehen, da diese ja gerade alle doppelten Einträge überspring bzw. zu einer Fehlerbedingung führt.
Die Combobox3 muss du wie beschrieben 2-Spaltig einrichten, dann die Prozeduren wie folgt. Wobei ich hoffe, dass ich es ohne Schriebfehler hinbekommen habe.
Gruß
Franz

Private Sub ComboBox2_Change()
Me.Combobox3.Clear
On Error GoTo Fehler
For iRow = 2 To aRow
If Cells(iRow, 2) = Me.Combobox2.Value Then
With Me.Combobox3
.AddItem Cells(iRow, 3)
.List(.ListCount - 1, 1) = iRow
End With
End If
Resume01:
Next iRow
Fehler:
With Err
If .Number  0 Then
Resume Resume01
End If
End With
End Sub
'beispiel
Private Sub ComboBox3_Change()
Dim wks As Worksheet, strDateiName As String
Set wks = ActiveSheet
With Me.Combobox3
'Dateiname aus Spalte D (4) einlesen
strDateiName = wks.Cells(Val(.List(.ListIndex, 1)), 4)
MsgBox "Dateiname: " & strDateiName
End With
End Sub


Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige