Combobox mit Daten einer Spalte(B) füllen aber nur,wo in der gleichen Zeile in Spalte(G) nein steht
Private Sub UserForm_Initialize()
With Me.txtDatum.Value = Date
Dim r As Range
With Worksheets("Daten")
Set r = .Range("B1", .Range("B65536").End(xlUp))
ComboBox1.RowSource = "Daten!" & r.Address
End With
End With
End Sub
Ist es möglich, dass die combobox all jene Daten herausfiltert wo, in Spalte G nein steht? Also praktisch dass es mir nurmehr jene Daten aus Spalte B in der Combobox anzeigt wo in der gleichen Zeile in Spalte G ein nein steht ? Danke im Voraus
2 Antworten
Versuch es mal so:
Private Sub UserForm_Initialize()
'Code von PauleVBA von w w w .Gutefrage . net 08/2014
Dim LastRow As Long
Dim I As Long
Dim J As Long
ReDim Liste(1) As String
J = 1
LastRow = Worksheets("Daten").Range("B:B").End(xlDown).Row
For I = 1 To LastRow
If Cells(I, 7) = "nein" Then
ReDim Preserve Liste(J)
Liste(J) = Cells(I, 2).Text
J = J + 1
End If
Next I
ListBox1.List() = Liste()
End Sub
Da ich das äußere With Me.txtDatum... nicht verstehe, habe ich es weg gelassen. Erbitte Rückmeldung, ob es das ist, was du brauchst
Nimm den Code von oben und füge vor der Zeile
J = 1
die Zeile:
Me.txtDatum.Value = Date
ein.
Dein Code Funktioniert leider nicht, wenn ich z.b ja in eine beliebige Zeile in die spalte G eintrage, steht in meiner Combobox gar nichts mehr
Fehler 404 kann so ziemlich alles sein.
Vermutlich existiert das angesprochene Worksheet nicht.
Wo bleibt den der Editor hängen? Zeile wird gelb nmarkiert, wenn man bei der Fehlerbox auf "Debuggen" geht.
Könnte auch sein, dass du Worksheets("Daten"). vor jedes Cells(I,.. setzen musst.
Bei mir funzt der Code, vermutlich ist bei dir ein anderes Worksheet aktiv, das in G leer ist? Oder du hast im Code I und 1 verwechselt?
Hab ihn schon herausgefunden aber mir die Combobox ist nur auf dem Tabellenblatt "Daten" gefüllt und wenn ich die Userform Auf dem Tabellenblatt "Liste" ausführe stehen dort keine Namen Danke Paule für deine Geduld
Lag ja auch an mir, hätte ich gleich dass du Worksheets("Daten"). vor jedes Cells(I,.. gesetzet, hättest du nicht fragen müssen.
Aber vielleicht ist es dir ja trotzdem ein Sternchen (hilfreichste Antwort) wert?
Hab jetz noch eine kleine Frage und Zwar möchte ich, dass mir eine Zweite Combobox automatisch die die Projektnummer(befindet sich in Spalte A ) des Jeweiligen Kunden aus Spalte B in die Combobox2 einfügt, das heißt praktisch: Wenn ich in Combobox1 einen Namen aussuche solte es mir die passende Projektnummer aus der gleichen Zeile aus Spalte A in die Combobox2 einntragen.
Danke Paule schon im Vorraus
Danke für den Stern.
Ich komme auf deine Frage Combobox2 noch zurück, muss erst mal poofen.
Obwohl ich es für sinnvoller halten würde, die Frage wird als neue Frage gestellt. Hier in den Kommentaren sieht sie keiner und nur ich werde antworten. Bei neuen Fragen könnten dir andere Fachleute sicher auch noch andere, gute Hinweise geben.
Bis dann.
Private Sub UserForm_Initialize()
Dim LastRow As Long
Dim I As Long
Dim J As Long
ReDim Liste(1) As String
Dim r As Range
With Worksheets("Daten")
Set r = .Range("A1", .Range("A65536").End(xlUp))
ComboBox2.RowSource = "Daten!" & r.Address
End With
J = 1
LastRow = Worksheets("Daten").Range("B:B").End(xlDown).Row & Worksheets("Daten").Range("A:A").End(xlDown).Row
For I = 1 To LastRow
If Worksheets("Daten").Cells(I, 7) = "nein" Then
If Worksheets("Daten").Cells(I, 6) = "ja" Then
ReDim Preserve Liste(J)
Liste(J) = Worksheets("Daten").Cells(I, 2).Text
J = J + 1
End If
End If
Next I
ComboBox1.List() = Liste()
End Sub
Private Sub ComboBox1_Change()
Dim ind As Long
ind = Me.ComboBox1.ListIndex
If ind = -1 Then Me.ComboBox1.ListIndex = 0
Me.ComboBox2.ListIndex = Me.ComboBox1.ListIndex
End Sub
Private Sub ComboBox2_Change()
Dim ind As Long
ind = Me.ComboBox2.ListIndex
If ind = -1 Then Me.ComboBox2.ListIndex = 0
Me.ComboBox1.ListIndex = Me.ComboBox2.ListIndex
End Sub
Könntest du mir noch einen letzten Gefallen tun und zwar hab ich jetzt alles Geschafft nur zeigt es mir bei der Ersten projrktnummer keinen Namen an bei der Zweiten Projektnummer den ersten Namen usw und ich komm nicht mehr witer könntest du den Fehler finden ich schaff es nämlich nicht Danke
Wer hat Dir den den Schwachsinn mit dem ewigen With.....End With beigebracht?
Viele Zuordnungen gehen ohne diese Konstruktion. Zum Beispiel die Zuordnung des Datums zum Textfeld.
Ich gebe zu, manchmal (bei Objekten?) verlangt es VBA so oder es ist nicht hin zu bekommen. Aber versuch es immer erst Mal ohne With.
Und Dim-Anweisungen gehören vor alle anderen Anweisungen, gleich nach dem Sub. Mit Dim-Anweisunge mitten im Code kann man schöne Verwirrung schaffen. Leider ist VBA keine "Hochsprach", da wärest Du gezwungen alle Variablen sofort zu deklarieren.
kannst du mir auch bei meinem Problem bitte helfen, ich bin ein VBA Anfänger...
nein nein das trägt mir nur das tägliche Datum in die Userform ein kann ich den Code einfach stehen lassen und den eben gezeigten Code unten einfügen ?