Combobox mit Daten einer Spalte(B) füllen aber nur,wo in der gleichen Zeile in Spalte(G) nein steht

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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

Christlwenter 
Fragesteller
 06.08.2014, 16:31

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 ?

0
PauleVBA  06.08.2014, 20:14
@Christlwenter

Nimm den Code von oben und füge vor der Zeile

J = 1

die Zeile:

Me.txtDatum.Value = Date

ein.

0
Christlwenter 
Fragesteller
 07.08.2014, 13:57
@Christlwenter

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

0
PauleVBA  07.08.2014, 14:08
@Christlwenter

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?

0
Christlwenter 
Fragesteller
 07.08.2014, 15:34
@PauleVBA

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

0
PauleVBA  07.08.2014, 17:27
@Christlwenter

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?

0
Christlwenter 
Fragesteller
 08.08.2014, 13:59
@PauleVBA

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

0
PauleVBA  08.08.2014, 14:38
@Christlwenter

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.

0
Christlwenter 
Fragesteller
 08.08.2014, 16:55
@Christlwenter
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

0

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.

Christlwenter 
Fragesteller
 07.08.2014, 13:43

kannst du mir auch bei meinem Problem bitte helfen, ich bin ein VBA Anfänger...

0
PauleVBA  07.08.2014, 13:59

Typisch Sindianer, nur negativ, keine Hilfe!

0