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 :)
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
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:
[attachment=40681]
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
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?
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
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