Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Listbox mit bestimmte Werte füllen
#11
Hallo Klaus-Dieter,

das klappt aber bislang wunderbar, zumindest auf dem onedrive. :)

@ Ralf, ich bin vollkommen bei dir. Allerdings ist die Userform etwas größer und verbindet mehrere Tabellenblätter. 
Die Userform verhindert auch falsch Eintragungen und trägt wichtige Daten zeitgleich in unterschiedlichen Tabellenblätter. Das alles würde nicht unbedingt rein mit Excel funktionieren.

Bei meinem Vorhaben möchte ich zu einem Projekt die dazugehörigen Bauteile anzeigen und auswählen können um dann in einer weiteren Register Status etc. zu den Bauteilen abfragen zu können. 
Dies vermeidet ein ständiges umspringen in den Tabellenblättern :)
Antworten Top
#12
Hallo



freut mich das du schon soweit gekommen bist VBA zu verstehen. Jetzt musst du nur noch IF Then an der richtigen Stelle einbauen.

Probier es bitte mal mit dem unteren Code.  Viel Spass beim testen. Bitte die Syntac für die UserForm prüfen ob sie richtig ist. Vielleicht musst du vor ComboBox und TextBox noch "UserForm1" davor setzen?



Hinweis zu With Klammer:  Du kannst NICHT zwei With Klammern ineinander verschachteln, wenn sie sich auf VERSCHIEDENE Objekte beziehen! Das klappt nicht! Ich arbeite dann mit der Set Anweisung, um einen bösen Logik Fehler zu vermeiden. Solange das AktiveShett "Bauteile" ist, wird Excel die richtigen Zellen durchsuchen und laden. Hat das AktiveBlatt aber einen anderen Namen wird Excel Cells() ohne With oder Set aus dem AktivenBlatt laden. Das führt bei Laien oft zur Verwirrung warum der Code manchmal klappt, manchmal versagt oder unsinnige Werte hochlädt!



Man achte bei VBA bitte immer auf die Details!  Excel ist super wenn es klappt, aber sehr pigelig in der korrekten Syntac!!  Und bei With mit Cells() NIE den Punkt vergessen!  Gleiches Thema!



mfg Gast 123



Code:
Sub Suchen_TextBox5()
With Worksheets("Bauteile")
    ReiheNr = 2
    With ComboBox1
    Do While IsEmpty(Worksheets("Bauteile").Cells(ReiheNr, 1)) = False
        If Worksheets("Bauteile").Cells(ReiheNr, 2) = TextBox5.Text Then
           .AddItem Worksheets("Bauteile").Cells(ReiheNr, 5)
        End If
        ReiheNr = ReiheNr + 1
    Loop
    End With
End With
End Sub


'Code mit Set Anweisung!  Eleganter
Sub Suchen_TextBox5()
Dim BT As Worksheet
Set BT = Worksheets("Bauteile")
    ReiheNr = 2
    With ComboBox1
    Do While IsEmpty(BT.Cells(ReiheNr, 1)) = False
        If BT.Cells(ReiheNr, 2) = TextBox5.Text Then
           .AddItem BT.Cells(ReiheNr, 5)
        End If
        ReiheNr = ReiheNr + 1
    Loop
    End With
End With
End Sub
Antworten Top
#13
Dann musst Du eine Abfrage in der Schleife machen.
Auf mein Beispiel oben bezogen:
Sub fill_Combo1()
Dim Zelle As Range
For Each Zelle In Range("A2", Range("A2").End(xlDown))
  If Zelle.Offset(, 1) = 6 Then
    ComboBox1.AddItem Zelle
  End If
Next
End Sub

Ergibt:
   
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#14
Hallo Gast, dein Code hat direkt funktioniert!! Besten Dank dafür! :) 

Ich habe deinen ersten Code verwendet. Der ist so einfach aufgebaut, das ich das sehr gut verstehe... Ich habe anscheinend zu kompliziert gedacht. Eine If Formel reicht vollkommen aus.

Damit kann ich weiter arbeiten.

VG Steve
Antworten Top
#15
Hallo Miteinander,

ich habe ein weiteres Problem und bekomme es nicht gelöst. Eigentlich MUSS es so funktionieren...

Private Sub CommandButton7_Click()
        Sheets("Bauteile").Select
        Label28.Caption = "Fertigteil-Nr." & ListBox1.Column(0) 'funktioniert
        Worksheets("Bauteile").Range("B1").Value = ListBox1.Column(0) 'funktioniert
         With Worksheets("Bauteile")
         ReiheNr = 3
               Do While IsEmpty(Worksheets("Bauteile").Cells(ReiheNr, 1)) = False
                If Worksheets("Bauteile").Cells(ReiheNr, 1) = ListBox1.Column(0) Then
               
                'TextBox16.Value = Worksheets("Bauteile").Cells(ReiheNr, 6) 'funktioniert nicht
                            TextBox16.Value = "Test" 'funktioniert nicht
             End If
            ReiheNr = ReiheNr + 1
            Loop
         End With
End Sub


Er füllt mir die Textbox16 nicht! :( Er kommt anscheinend nicht einmal dort hin...
ListBox1-Column(0) gibt in meinem Fall 18 aus. Das bekomme ich mit:

        Label28.Caption = "Fertigteil-Nr." & ListBox1.Column(0) 'funktioniert
        Worksheets("Bauteile").Range("B1").Value = ListBox1.Column(0)

bestätigt.

Der soll eigentlich den Wert aus ListBox1.Column(0) in der Spalte1 suchen. Diesen Wert (Bauteil-Nr) gibt es auch nur einmal.

Wo habe ich meinen Fehler? :(



Edit:// ändere ich die Zeile auf:

If Worksheets("Bauteile").Cells(ReiheNr, 1) = "18" Then

funktioniert es. Aber warum funktioniert das = ListBox1.Column(0) nicht?
Antworten Top
#16
Hallo,

ich habe mir nun mit einem workaround geholfen. Allerdings wäre ich sehr dankbar, falls mir jemand sagen könnte was ich falsch gemacht habe?

Label28.Caption = ListBox1.Column(0)

If Worksheets("Bauteile").Cells(ReiheNr, 1) = Label28.Caption Then

Viele Grüße Steve
Antworten Top
#17
Hallo


Zitat:If Worksheets("Bauteile").Cells(ReiheNr, 1) = "18" Then


Ich kann jetzt nur mal raten, vielleicht versteht Excel den Wert der ListBox als Text und nicht als Zahl? 
Probier bitte mal mit ListBox18.Column(0).Value oder CInt(ListBox18.Column(0)).  Wenn die Vermutung stimmt könnte es so klappen.

mfg  Gast 123
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste