Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
524to528
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
524to528
524to528
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Filter für ComboBox in VBA
28.11.2004 19:45:28
Drazen
Hallo,
folgender Code beim öffnen meiner UF:

Private Sub UserForm_Initialize()
optalle = True
Application.WindowState = xlMaximized
Sheets("BAZA PODATAKA").Activate
Dim aRow, i As Long
Application.EnableEvents = False
ComboBox2.Clear
aRow = Range("A65536").End(xlUp).Row
ComboBox2.AddItem ""
For i = 2 To aRow
ComboBox2.AddItem Cells(i, 1)
Next i
ComboBox2.ListIndex = 0
Application.EnableEvents = True
End Sub

Ich fülle also die Combo mit Daten aus der Tabelle "BAZA PODATAKA", jetzt habe ich aber eine Spalte in der entweder "Aktiv" oder "Passiv" steht. Ich habe in meiner UF eine Option-Wahl die den jeweiligen status im Blatt filtert. Wie kann ich der Combo sagen mir nur die Daten der jeweils gewählten option zu zeigen, geht das überhaupt?
Gestern hat mir Hajo mit den Spin-Buttons sehr geholfen(vielen Dank nochmal), der Code ging so:

Private Sub SpinButton1_Spindown()
iSpin = iSpin - 1
Do
If iSpin < 2 Then
iSpin = Sheets("BAZA PODATAKA").Cells(Rows.Count, 1).End(xlUp).Row
End If
If Sheets("BAZA PODATAKA").Rows(iSpin).Hidden = False Then Exit Do
iSpin = iSpin - 1
Loop
frm_BAZA.txt1.Text = CStr(Sheets("BAZA PODATAKA").Cells(iSpin, 1).Value)
frm_BAZA.ComboBox1.Text = CStr(Sheets("BAZA PODATAKA").Cells(iSpin, 2).Value)
frm_BAZA.txt2.Text = CStr(Sheets("BAZA PODATAKA").Cells(iSpin, 3).Value)
frm_BAZA.txt3.Text = CStr(Sheets("BAZA PODATAKA").Cells(iSpin, 4).Value)
frm_BAZA.txt4.Text = CStr(Sheets("BAZA PODATAKA").Cells(iSpin, 5).Value)
End Sub

und ich habe nun versucht das ganze hier auch bei meiner Combo anzuwenden, ging aber irgendwie überhaupt nicht. Wer kann etwas nachhelfen?
Grüsse
Drazen

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filter für ComboBox in VBA
28.11.2004 22:34:44
Josef
Hallo Drazen!
Dann musst du halt beim füllen der Combo überprüfen,
ob die Zeile Eingeblendet ist!

For i = 2 To aRow
If Rows(i).Hidden = False Then
ComboBox2.AddItem Cells(i, 1)
End If
Next i

Gruß Sepp
AW: Filter für ComboBox in VBA
28.11.2004 22:58:14
Drazen
Hallo Sepp,
Klappt TOP mit der ComboBox, ich habe aber in der UF ja TextBoxen die sich anhand der Eingabe in der Combo mit den entsprechenden Daten aus der Zeile füllen sollen, wie mach ich das mit dem ListIndex, die Combo ist zwar richtig gefüllt(korrekter Name) aber der Datensatz ist ein ganz anderer, halt der der unter diesem ausgewähltem Index auch sein sollte.

Private Sub ComboBox2_Click()
Sheets("BAZA PODATAKA").Activate
If ComboBox2.ListIndex <> 0 Then
txt1 = Cells(ComboBox2.ListIndex + 1, 1)
ComboBox1 = Cells(ComboBox2.ListIndex + 1, 2)
txt2 = Cells(ComboBox2.ListIndex + 1, 3)
txt3 = Cells(ComboBox2.ListIndex + 1, 4)
txt4 = Cells(ComboBox2.ListIndex + 1, 5)
txt5 = Cells(ComboBox2.ListIndex + 1, 6)
End If
End Sub

Wie kompensiert man den Index?
Grüsse
Drazen
Anzeige
AW: Filter für ComboBox in VBA
28.11.2004 23:12:26
Josef
Hallo Drazen!
Kompensieren geht wohl nicht, weil die Differenz zwischen
ListIndex und tatsächlicher Zeile des Datensatzes nicht fix ist!
Ich löse dieses Problem immer so.
Die List- oder Combobox mache ich zweispaltig und setze
die Breite der zweiten Spalte auf 0.(dann wird sie nicht Angezeigt)
Beim füllen der Combo schreibt man dan die Zeilennummer des Datensatzes
in die zweite Spalte des Eintrags.
Dim n as Integer 'Index der Combo
For i = 2 To aRow
If Rows(i).Hidden = False Then
ComboBox2.List(n, 0) = Cells(i, 1)
ComboBox2.List(n, 1) = i
n = n + 1
End If
Next i
Das Auslesen geht dann so.
txt1 = Cells(ComboBox2.List(ComboBox1.ListIndex,1), 1)
Gruß Sepp
Anzeige
AW: Filter für ComboBox in VBA
28.11.2004 23:29:51
Drazen
Hallo Sepp,
soweit ok, vielen Dank für deine Geduld, da ich aber immer noch Anfänger bin, wie programiere ich die Combo zweispaltig ? Bitte nochmal um kurze Hilfe.
Danke
Grüsse
Drazen
AW: Filter für ComboBox in VBA
28.11.2004 23:38:02
Josef
Hallo Drazen!
Die Combo stellst du entweder in den Eigenschaften (ColumnCount)
auf zweispaltig, oder per Code im Initialize der UF.
In den Eigenschaften kannst du auch gleich die zweite Spalte
auf Breite:=0 stellen. (zB. ColumnWidth 100;0 - die Breite in Point!)
Gruß Sepp
AW: Filter für ComboBox in VBA
28.11.2004 23:51:27
Drazen
Hallo Sepp,
hab ich gemacht, alles wie du gesagt hast, jetzt krieg ich egal wie ich die Breite einstelle die Meldung: Laufzeizfehler 381
Eigenschaft List konnte nicht gesetzt werden.Index des Eigenschaftsfelds ungültig.
Woran liegt das jetzt?
Hab es mit Breite: 100, 80, 70, 50 probiert, und dann jeweils;0
und noch ne Frage zu dinem vorigen Posting, geht die Übergabe an die Textboxen dann wirklich so:
txt1 = Cells(ComboBox2.List(ComboBox1.ListIndex, 1), 1), ich habe nämlich eine Combo im UF mit der Bezeichnung ComboBox1, oder war das mit der ComboBox1 ein Schreibfehler, und wie geht es weiter ?
txt1 = Cells(ComboBox2.List(ComboBox1.ListIndex, 1), 1)
txt2 = Cells(ComboBox2.List(ComboBox1.ListIndex, 2), 2)
txt3 = Cells(ComboBox2.List(ComboBox1.ListIndex, 3), 3)
Danke
Drazen
Grüsse
Drazen
Anzeige
AW: Filter für ComboBox in VBA
29.11.2004 00:04:09
Josef
Hallo Drazen!
Der lauzeitfehler liegt nicht an der Breite der Spalten,
das war mein Fehler! (das passiert wenn man den Code direkt hier eingibt und nicht testet;-) )
Es muss
For i = 2 To aRow
If Rows(i).Hidden = False Then
ComboBox2.AddItem Cells(i, 1), n
ComboBox2.List(n, 1) = i
n = n + 1
End If
Next i
heisen und das Auslesen so.
txt1 = Cells(ComboBox2.List(ComboBox2.ListIndex, 1), 1)
txt2 = Cells(ComboBox2.List(ComboBox2.ListIndex, 1), 2)
Gruß Sepp
AW: Filter für ComboBox in VBA
29.11.2004 10:08:25
Drazen
Hallo Sepp,
erst mal vielen Dank, das klappt jetzt genauso wie ich mir das vorgestellt habe, NUR, bisher hatte ich zur Übergabe der neu-eungetragenen Daten folgenden Code:

Private Sub CommandButton1_Click()
Sheets("BAZA PODATAKA").Activate
Dim xZeile As Long
If txt1 = "" Then Exit Sub
If ComboBox2.ListIndex = 0 Then
xZeile = Range("A65536").End(xlUp).Row + 1
Else
xZeile = ComboBox2.ListIndex + 1
End If
Cells(xZeile, 1) = txt1
Cells(xZeile, 2) = ComboBox1
Cells(xZeile, 3) = txt2
Cells(xZeile, 4) = txt3
End Sub

und zum Löschen eines Datensatzes:

Private Sub CommandButton4_Click()
Sheets("BAZA PODATAKA").Activate
If ComboBox2.ListIndex > 0 Then
Rows(ComboBox2.ListIndex + 1).Delete
txt1 = ""
ComboBox1 = ""
txt2 = ""
txt3 = ""
txt4 = ""
End If
End Sub

Und jetzt funktionieren beide nicht mehr so richtig, wie muss ich das ändern damit es wieder funzt?
Grüsse
Drazen
Anzeige
AW: Filter für ComboBox in VBA
Josef
Hallo Drazen!
So sollte es funktionieren.

Private Sub CommandButton1_Click()
Sheets("BAZA PODATAKA").Activate
Dim xZeile As Long
If txt1 = "" Then Exit Sub
If ComboBox2.ListIndex = 0 Then
xZeile = Range("A65536").End(xlUp).Row + 1
Else
xZeile = ComboBox2.List(ComboBox2.ListIndex), 1)
End If
Cells(xZeile, 1) = txt1
Cells(xZeile, 2) = ComboBox1
Cells(xZeile, 3) = txt2
Cells(xZeile, 4) = txt3
End Sub


Private Sub CommandButton4_Click()
Sheets("BAZA PODATAKA").Activate
If ComboBox2.ListIndex > 0 Then
Rows(ComboBox2.List(ComboBox2.ListIndex), 1)).Delete
txt1 = ""
ComboBox1 = ""
txt2 = ""
txt3 = ""
txt4 = ""
End If
End Sub

Gruß Sepp
Anzeige
AW: Filter für ComboBox in VBA
29.11.2004 14:04:33
Drazen
Hallo Sepp,
leider gehts nicht so, erst mal kommt der Code nicht mit den Klammern zurecht, du hast irgendwo eine vergessen:
xZeile = ComboBox2.List(ComboBox2.ListIndex), 1) ' Klammerzu zuviel
dann hab ich versucht sie einzusetzen:
xZeile = ComboBox2.List((ComboBox2.ListIndex), 1)
und beim nächsten genauso:
Rows(ComboBox2.List(ComboBox2.ListIndex), 1)).Delete ' eine Klammer zu viel
ich hab es so versucht, geht aber nicht:
Rows(ComboBox2.List(ComboBox2.ListIndex), 1).Delete
Grüsse
Drazen
AW: Filter für ComboBox in VBA
Josef
Hallo Drazen!
Sorry;-)
xZeile = ComboBox2.List(ComboBox2.ListIndex, 1)
Rows(ComboBox2.List(ComboBox2.ListIndex, 1)).Delete
So sollte es tun.
Gruß Sepp
Anzeige
AW: Filter für ComboBox in VBA
29.11.2004 15:34:38
Drazen
Hallo Sepp,
langsam wird es mir unanenehm deine Zeit so zu beanspruchen, jetzt klappt alles soweit und ich bekomme keine Fehlermeldung mehr, nur wenn ich etwas ändere an einem Datensatz(Zeile) und mit OK bestätige, bekomme ich den gleichen Datensatz nochmal, also doppelt, einmal unverändert und einmal mit der Änderung, woran liegt das?
Grüsse
Drazen
AW: Filter für ComboBox in VBA
29.11.2004 17:21:22
Drazen
Hallo Sepp,
Habs geklärt, dein Code ist OK, es lag an einem meiner CommandButtons im UF, vielen herzlichen Dank Für die ausgiebige und geduldsame Hilfe!!!
Grüsse
Drazen
AW: Filter für ComboBox in VBA
29.11.2004 17:21:24
Drazen
Hallo Sepp,
Habs geklärt, dein Code ist OK, es lag an einem meiner CommandButtons im UF, vielen herzlichen Dank Für die ausgiebige und geduldsame Hilfe!!!
Grüsse
Drazen
Anzeige
Gern geschehen! o.T.
29.11.2004 18:49:48
Josef
Gruß Sepp
AW: Gern geschehen! o.T.
29.11.2004 20:23:17
Drazen
Hi Sepp nochmal,
ich soll dich sehr schön von einem grossen Verehrer und Freund vom Herber aus Kroatien grüssen, sein Name ist Zeljko und er ist genauso Profi wie Du, er findet deine Lösungen einfach Klasse und würde dich gerne kennenlernen.
Wie gesagt nochmals vielen Dank.
Grüsse
Drazen
erledigt oT
Piet
oT

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige