Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1840to1844
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
Dropdown in Userform Automatisch befülle
06.08.2021 09:46:26
Daniel
Guten Morgen,
ich habe ein Problem, und zwar ich versuche ein Dropdown automatisch zu befüllen.
Ich bekomme die Fehlermeldung im Dickgedruckten teil: Laufzeitfehler '13': Typen unverträglich.
hier der code:

Option Explicit
Dim AnzahlLeer As Integer
Private mlngrow As Long
Private mobjCollection As Collection
Function AnzahlZeilen(Blatt As Worksheet, Spalte As String) As Long
AnzahlZeilen = WorksheetFunction.CountA(Blatt.Range(Spalte))
End Function
Private Sub Label16_Click()
End Sub
Private Sub ComboBox1_Change()
With ComboBox1
TextBox1.Text = .List(.ListIndex, 0)
TextBox2.Text = .List(.ListIndex, 1)
TextBox3.Text = .List(.ListIndex, 2)
TextBox15.Text = .List(.ListIndex, 3)
TextBox14.Text = .List(.ListIndex, 4)
TextBox7.Text = .List(.ListIndex, 5)
End With
End Sub
Private Sub UserForm_Initialize()
Dim objCell As Range
Dim strFirsAddress As String
Dim AnzahlGes As Integer
With Box1
.AddItem "Grün"
.AddItem "Gelb"
.AddItem "Rot"
.AddItem "Weiß"
End With
With Box2
.AddItem "Max Mustermann"
.AddItem "Ulrike Musterfrau"
End With
AnzahlLeer = AnzahlZeilen(Worksheets("Tabelle16"), "S:S")
AnzahlGes = AnzahlZeilen(Worksheets("Tabelle16"), "A:A")
AnzahlLeer = AnzahlGes - AnzahlLeer
Label17.Caption = "Arbeitsvorrat " & AnzahlLeer
Set mobjCollection = New Collection
With Worksheets("Tabelle16")
For Each objCell In .Range(.Cells(2, 19), .Cells(.Rows.Count, 19))
If Not IsEmpty(objCell.Value) And Not IsEmpty(objCell.Offset(0, 3)) Then
TextBox1.Text = objCell.Offset(0, -18).Value
TextBox2.Text = objCell.Offset(0, -17).Value
TextBox3.Text = objCell.Offset(0, 1).Value
TextBox15.Text = objCell.Offset(0, -12).Value
TextBox14.Text = objCell.Offset(0, 2).Value
TextBox7.Text = objCell.Offset(0, -4).Value
Box1.Text = objCell.Offset(0, 1).Value
mlngrow = objCell.Row
Call mobjCollection.Add(Item:=mlngrow)
Exit For
End If
Next
End With
End Sub
Private Sub CommandButton10_Click()
Dim objCell As Range
Dim strFirsAddress As String
ComboBox1.Clear
With ComboBox1
.ColumnCount = 25
.ColumnWidths = "80;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0" 'Soviel 0en wie abgefragte Spalten
End With
Set objCell = Worksheets("Tabelle16").Columns(24).Find(What:=Box2.Value, After:=Worksheets("Tabelle16").Cells(Worksheets("Tabelle16").Rows.Count, 20), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 'hier auf Spalte 24 bezogen
If Not objCell Is Nothing Then
strFirsAddress = objCell.Address
Do
With ComboBox1
.AddItem objCell.Offset(0, -23).Value
.List(.ListCount - 1, 1) = objCell.Offset(0, -22).Value
.List(.ListCount - 1, 2) = objCell.Offset(0, -4).Value
.List(.ListCount - 1, 3) = objCell.Offset(0, -17).Value
.List(.ListCount - 1, 4) = objCell.Offset(0, -3).Value
.List(.ListCount - 1, 5) = objCell.Offset(0, -9).Value
End With
Set objCell = Worksheets("Tabelle16").Columns(20).FindNext(After:=objCell)
Loop Until objCell.Address = strFirsAddress
Set objCell = Nothing
End If
End Sub
und hier noch eine Beispiel Datei:
https://www.herber.de/bbs/user/147478.xlsm

51
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dropdown in Userform Automatisch befülle
06.08.2021 09:54:05
Hajo_Zi
im Code

Sub CommandButton8_Click()
Sheets("Tabelle1").Select
Dim Zeile As Long
Zeile = 2
Do
Cells(Zeile, 21).Hyperlinks.Add Anchor:=Cells(Zeile, 21), _
Address:="https://nntwww.mn-man.biz/elanis/ela011?goodluck=1&searchMode=package&userpooldepartment=user&keyword=" & Cells(Zeile, 1).Value & "&ff_flag1=%2A&date_operator=%3D&mrl_relevant=all&module=all&state=all&sortField=timestamp&sortDirection=DESC&rowsPerPage=50&doSearchECP=suchen", _
ScreenTip:="Zeichnung in EZIS", _
TextToDisplay:=Cells(Zeile, 21).Value
End If
Zeile = Zeile + 1
Loop Until Cells(Zeile, 21) = ""
End Sub
fehlte das Dim Zeile und es fehlt ein If
GrußformelHomepage
Anzeige
AW: Dropdown in Userform Automatisch befülle
06.08.2021 09:58:15
Daniel
Hallo Hajo,
danke dir :)
Wahrscheinlich durch das ganze hin und her probiere verloren gegangen leider...
nur leider war das nicht des Lösungs Problem.
Ach ja es geht in der Beispiel-Datei um Userform 3
Hast du noch eine Idee woran es liegen könnte?
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:00:36
Hajo_Zi
Hallo Daniel,
ich bin dann raus, da ich nicht auf Deinen Rechner schaue und das If sehe.
Viel Erfolg noch.
Gruß Hajo
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:01:53
Daniel
Hi
wenn du bei .Find den Parameter AFTER angibst, muss diese Zelle innerhalb des durchsuchten Zellbereichs liegen.
Das ist bei dir nicht der Fall.
mal ganz generell: wenn du schon Codes zeigst und die Datei hochlädst, dann sollte es auch möglich sein, den Fehler in der Datei nachstellen zu können.
Dh du müsstest beschreiben, was man tun muss um den Fehler auszulösen (welche Userform der drei ist betroffen, welchen Button muss man klicken)
Ansonsten sollte die Datei natürlich funktionieren. Bei dir fehlt schon mal die Tabelle16, damit kann man das gar nicht laufen lassen.
Gruß Daniel
Anzeige
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:09:24
Daniel
Hi Daniel da hast du natürlich recht!
hab sie noch einmal neu Hochgeladen und jetzt funktioniert alles bzw der fehler kommt.
Also du stellst in Userform 3 oben links den Namen ein und dann klickst du auf den "Update" knopf darunter. Eigentlich sollte dann das dropdown darunter befüllt werden aber dann kommt die fehlermeldung.
Was müsste ich denn dann Ändern? ich habe einmal nach einen Fixen wert gesucht da hatte es noch geklappt. Siehe Userform 2 Unter UserFrom_Initialize.
https://www.herber.de/bbs/user/147481.xlsm
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:24:39
Daniel
hatte ich doch geschrieben.
die Zelle,die du bei AFTER angibst, muss in dem Zellbereich liegen, den du durchsuchst.
du verwendest hier zwei unterschiedlche Spalten (24 und 20).
Aber Nepumuk hatte dir das ja auch schon geschrieben.
Gruß Daniel
Anzeige
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:04:24
Nepumuk
Hallo Daniel,
die "After-Zelle" muss sich im Suchbereich befinden. Daher:

Private Sub CommandButton10_Click()
Dim objCell As Range
Dim strFirsAddress As String
With ComboBox1
Call .Clear
.ColumnCount = 25
.ColumnWidths = "80;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0" 'Soviel 0en wie abgefragte Spalten
End With
With Worksheets("Tabelle16")
Set objCell = .Columns(24).Find(What:=Box2.Value, After:=.Cells(.Rows.Count, 24), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 'hier auf Spalte 24 bezogen
If Not objCell Is Nothing Then
strFirsAddress = objCell.Address
Do
With ComboBox1
.AddItem objCell.Offset(0, -23).Value
.List(.ListCount - 1, 1) = objCell.Offset(0, -22).Value
.List(.ListCount - 1, 2) = objCell.Offset(0, -4).Value
.List(.ListCount - 1, 3) = objCell.Offset(0, -17).Value
.List(.ListCount - 1, 4) = objCell.Offset(0, -3).Value
.List(.ListCount - 1, 5) = objCell.Offset(0, -9).Value
End With
Set objCell = .Columns(24).FindNext(After:=objCell)
Loop Until objCell.Address = strFirsAddress
Set objCell = Nothing
End If
End With
End Sub
Gruß
Nepumuk
Anzeige
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:15:39
Daniel
Hallo Nepumuk,
Danke dir!
weißt du was ich noch machen müsste, damit ich die Zeilen die Bearbeitet sind nicht mehr im Dropdown angezeigt werden?
Das Wäre dann Spalte 25. Sobald diese beschrieben ist soll diese nicht mehr im dropdown angezeigt werden.
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:28:57
Nepumuk
Hallo Daniel,
am Ende deiner Speichern-Routine:

With ComboBox1
Call .RemoveItem(.ListIndex)
.ListIndex = -1
End With
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:42:59
Daniel
Hallo Nepumuk,
wie genau implementiere ich das?
Muss ich dann ein extra List index für spalte 25 machen?
Also z.b.
TextBox20.Text= .List(.ListIndex,5)
und in TextBox20 ist dann lngRow, 25?
Gruß
Daniel
Anzeige
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:50:48
Nepumuk
Hallo Daniel,
der ListIndex ist der Index welche den den ausgewählten Eintrag repräsentiert. Sprich du wählst den ersten Eintrag auswählst dann ist das der Index 0 usw. und dieser Eintrag wird gelöscht. Dann wird durch .ListIndex = -1 die ComboBox wieder leer angezeigt.
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
06.08.2021 10:58:46
Daniel
Hi Nepumuk,
Wenn ich das in meine Programmierung einfüge kommt immer:
Ungültiges Argument
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
06.08.2021 11:11:43
Nepumuk
Hallo Daniel,
wo fügst du das ein?
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
06.08.2021 11:28:15
Daniel
Hallo Nepumuk,
in:
Private Sub ComboBox1_Change()
und habe es auch bei
Private Sub CommandButton10_Click()
versucht.
LG
Daniel
Anzeige
AW: Dropdown in Userform Automatisch befülle
06.08.2021 12:32:30
Daniel
Hallo nepumuk,
Was genau ist für dich die Speichern-Routine?
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
06.08.2021 12:50:34
Nepumuk
Hallo Daniel,
dort wo du die geänderten Werte in die Tabelle schreibst. Das habe ich in deiner Mappe nicht gefunden.
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
06.08.2021 12:58:02
Daniel
Hallo Nepumuk,
ich schreibe dort eigentlich nur meinen Zeitstempel wann es bearbeitet wurde und gebe noch einbmal die möglichkeit die Finale Relevanz zu bearbeiten und das ganze bei

Private Sub CommandButton5_Click().
Wenn ich das allerdings wie hier einfüge dann kommt:
Eigenschaft Liste konnte nicht abgerufen werden. Index des Eigenschaftsfelds ist ungültig.

Private Sub CommandButton5_Click()
With Worksheets("Tabelle16")
.Cells(mlngrow, 25).Value = Now
.Cells(mlngrow, 23).Value = UserForm2.Box1
End With
With ComboBox1
Call .RemoveItem(.ListIndex)
.ListIndex = -1
End With
End Sub

Anzeige
AW: Dropdown in Userform Automatisch befülle
06.08.2021 14:07:31
Nepumuk
Hallo Daniel,
der Fehler entsteht im ComboBox1_Change-Event. Das lässt sich so unterdrücken:

Option Explicit
Dim AnzahlLeer As Integer
Private mlngRow As Long
Private mblnNoEvent As Boolean
Private mobjCollection As Collection
Function AnzahlZeilen(Blatt As Worksheet, Spalte As String) As Long
AnzahlZeilen = WorksheetFunction.CountA(Blatt.Range(Spalte))
End Function
Private Sub ComboBox1_Change()
If Not mblnNoEvent Then
With ComboBox1
TextBox1.Text = .List(.ListIndex, 0)
TextBox2.Text = .List(.ListIndex, 1)
TextBox3.Text = .List(.ListIndex, 2)
TextBox15.Text = .List(.ListIndex, 3)
TextBox14.Text = .List(.ListIndex, 4)
TextBox7.Text = .List(.ListIndex, 5)
End With
End If
End Sub

Private Sub CommandButton5_Click()
With Worksheets("Tabelle16")
.Cells(mlngrow, 22).Value = Now
.Cells(mlngrow, 23).Value = UserForm1.Box1
End With
mblnNoEvent = True
With ComboBox1
Call .RemoveItem(.ListIndex)
.ListIndex = -1
End With
mblnNoEvent = False
End Sub
Gruß
Nepumuk
Anzeige
AW: Dropdown in Userform Automatisch befülle
07.08.2021 15:17:49
Daniel
Hallo Nepumuk,
sorry das ich jetzt erst antworte!
es funktioniert nur leider speichert er das nicht und beim erneuten aufrufen der Userform werden die Zeilen wieder angezeigt.
hast du eine idee wie ich das hin bekomme das die bearbeiteten auch beim erneuten aufrufen der Userform nicht mehr angezeigt werden?
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
07.08.2021 15:22:23
Nepumuk
Hallo Daniel,
dazu müsste ich wissen, woran kann ich das festmachen welche Zeilen angezeigt werden sollen.
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
07.08.2021 15:25:15
Daniel
Hallo Nepumuk,
es sollen die Zeilen angezeigt werden in der der ausgewählte name steht den ich über das Dropdown wähle.
und wo in Spalte 25 nichts steht.
die möchte ich ja durch Command button 5 beschreiben
Den namen Wähle ich in Box2.Value aus
LG
Daniel
Anzeige
AW: Dropdown in Userform Automatisch befülle
07.08.2021 15:44:56
Nepumuk
Hallo Daniel,
beschreib doch mal wie du dir das vorgestellt hast. Ich sehe auf deinem UserForm einen Wust von Controls, kann sie aber nicht zuordnen.
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
07.08.2021 15:48:57
Daniel
Hallo Nepumuk,
also ich wollte oben links in dem dropdown den namen auswählen der gerade bearbeitet.
Dann klicke ich auf update und er zeigt in dem dropdown die entsprechenden nummern mit seinem namen an die er noch nicht bearbeitet hat
Wenn er dann bearbeitet hat klickt er auf dokumentation dann wird in Spalte 25 ein Zeitstempel gesetzt und er kann nochmal die Finale relevanz überarbeiten wenn es nötig wäre.
Also müsste in dem Dropdown die nummern angezeigt werden von dem ausgewählten name (vom dorpdown oben links) und in Spalte 25 noch kein Zeitstempel ist.
Ja ist grad alles bearbeitungsstand :)
ich kanns dir gern nochmal zeigen wenns fertig sein sollte falls es dich interresiert? :)
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
09.08.2021 18:29:02
Daniel
Hallo Nepumuk,
ich wollte dich einmal fragen ob du dir noch einmal die Mühe machen könntest und drüber schaust.
Mit CommandButton 10 befülle ich das Dropdown menü
Mit CommandButton5 möchte ich das in die Zeile die im Dropdown ausgewält ist dann der Zeitstempel gesetzt wird und die ausgewählte Relevanz.
Mit CommandButton4 geht es zurück zur letzten bearbeiteten Zeile
Mit commandButton6 möchte ich in die nächste Relevante Zeile (Kein Zeitstempel in Spalte 25 und ein Zeitstempel in Spalte 22)
ich hab jetzt alle unnötigen knöpfe und codes entfernt.
Wäre echt super wenn du mir da eine Rückmeldung geben könntest.
https://www.herber.de/bbs/user/147524.xlsm
Liebe Grüße
Daniel :)
AW: Dropdown in Userform Automatisch befülle
09.08.2021 18:30:27
Nepumuk
Hallo Daniel,
da komme ich erst morgen dazu.
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
10.08.2021 08:18:57
Daniel
Hallo Nepumuk,
Danke dir! :)
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
10.08.2021 10:53:02
Daniel
Hallo Nepumuk,
Ich muss grad noch eine ppt fertig machen. Ich meld mich heute Abend bei dir! Aber danke schon mal für die Mühe und Hilfe!
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
10.08.2021 19:24:46
Daniel
Hallo Nepumuk,
tut mir leid, dass ich jetzt erst dazu gekommen bin!
ich habe es gerade getestet.
Wenn ich im "Dropdown" eine nummer auswähle und dann auf Dokumentation klicke ist er immer noch in der ersten Zeile (dort setzt er den Zeitstempel und nicht in der Dropdown ausgewählten Zeile).
Als Beispiel: ich starte das Programm bin in Zeile 1 und wähle im dropdwon die nummer aus die in Zeile 5 ist aber er setzt den Zeitstempel trotzdem in Zeile 1
Und er Zeigt wenn ich das Programm neu starte wieder alle nummern an.

For Each objCell In .Range(.Cells(2, 19), .Cells(.Rows.Count, 19))
If Not IsEmpty(objCell.Value) And Not IsEmpty(objCell.Offset(0, 3)) And IsEmpty(objCell.Offset(0, 6)) Then
Das hab ich grad noch dazu gemacht, damit du weißt was ich meine.
Die wichtigen Zeilen die angezeigt werden sollen sind Die:
Sie sollen in Spalte 19 und 22 befüllt sein und in Spalte 25 Leer.
Spalte 25 beschrifte ich ja immer, um für mich mit der Nummer abzuschließen bzw damit ich weiß diese habe ich bearbeitet
Weißt du was ich meine?
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
11.08.2021 09:23:44
Nepumuk
Hallo Daniel,
ersetze diese beiden Prozeduren:

Private Sub CommandButton10_Click()
Dim objCell As Range
Dim strFirsAddress As String
With ComboBox1
Call .Clear
.ColumnCount = 25
.ColumnWidths = "80;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0" 'Soviel 0en wie abgefragte Spalten
End With
If Box2.ListIndex > -1 Then
With Worksheets("Tabelle16")
Set objCell = .Columns(24).Find(What:=Box2.Text, After:=.Cells(.Rows.Count, 24), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 'hier auf Spalte 24 bezogen
If Not objCell Is Nothing Then
strFirsAddress = objCell.Address
Do
With ComboBox1
.AddItem objCell.Offset(0, -23).Value
.List(.ListCount - 1, 1) = objCell.Offset(0, -22).Value
.List(.ListCount - 1, 2) = objCell.Offset(0, -4).Value
.List(.ListCount - 1, 3) = objCell.Offset(0, -17).Value
.List(.ListCount - 1, 4) = objCell.Offset(0, -3).Value
.List(.ListCount - 1, 5) = objCell.Offset(0, -9).Value
.List(.ListCount - 1, 6) = objCell.Row
End With
Set objCell = .Columns(24).FindNext(After:=objCell)
Loop Until objCell.Address = strFirsAddress
Set objCell = Nothing
End If
End With
End If
End Sub

Private Sub ComboBox1_Change()
If Not mblnNoEvent Then
With ComboBox1
TextBox1.Text = .List(.ListIndex, 0)
TextBox2.Text = .List(.ListIndex, 1)
TextBox3.Text = .List(.ListIndex, 2)
TextBox15.Text = .List(.ListIndex, 3)
TextBox14.Text = .List(.ListIndex, 4)
TextBox7.Text = .List(.ListIndex, 5)
mlngRow = .List(.ListIndex, 6)
End With
End If
End Sub
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
11.08.2021 09:40:56
Daniel
Hallo Nepumuk,
das kommentieren klappt jetzt super!
danke dir!
nur wenn ich die Userform Neu starte sehe ich immer wieder alle nummern bzw. Zeilen auch die ich davor schon bearbeitet habe. (also auf Dokumentation geklickt habe und die Spalte 25 mit dem Zeitstempel versehen habe).
Weißt du wie ich die Nummern (bzw. Zeilen) rausfallen wenn sie in Spalte 25 befüllt sind?
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
11.08.2021 09:48:07
Nepumuk
Hallo Daniel,
so besser?

Private Sub UserForm_Initialize()
Dim objCell As Range
Dim strFirsAddress As String
Dim AnzahlGes As Long
With Box1
.AddItem "Grün"
.AddItem "Gelb"
.AddItem "Rot"
.AddItem "Weiß"
End With
With Box2
.AddItem "Max Mustermann"
.AddItem "Ulrike Musterfrau"
End With
AnzahlLeer = AnzahlZeilen(Worksheets("Tabelle16"), "S:S")
AnzahlGes = AnzahlZeilen(Worksheets("Tabelle16"), "A:A")
AnzahlLeer = AnzahlGes - AnzahlLeer
Label17.Caption = "Arbeitsvorrat " & AnzahlLeer
Set mobjCollection = New Collection
With Worksheets("Tabelle16")
For Each objCell In .Range(.Cells(2, 19), .Cells(.Rows.Count, 19))
If Not IsEmpty(objCell.Value) And Not IsEmpty(objCell.Offset(0, 3)) And IsEmpty(objCell.Offset(0, 6)) Then
TextBox1.Text = objCell.Offset(0, -18).Value
TextBox2.Text = objCell.Offset(0, -17).Value
TextBox3.Text = objCell.Offset(0, 1).Value
TextBox15.Text = objCell.Offset(0, -12).Value
TextBox14.Text = objCell.Offset(0, 2).Value
TextBox7.Text = objCell.Offset(0, -4).Value
Box1.Text = objCell.Offset(0, 1).Value
mlngRow = objCell.Row
Call mobjCollection.Add(Item:=mlngRow)
Exit For
End If
Next
End With
End Sub
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
11.08.2021 09:57:01
Daniel
Hallo nepumuk,
So hab ich es auch schon probiert.
So springt er zwar in die erste richtige Zeile
Wenn ich aber auf Update klicke zeigt er mir trotzdem alle Zeilen an mit dem entsprechenden Namen.
Man müsste das irgendwie bei diesem Find ausschließen wenn Spalte 25 beschriftet ist. (Bei command Button 10)
Oder ich mache die Namen anderes z.b. 01 - Max Mustermann (ist Unbearbeitet) und wenn ich auf Dokumentation klicke überschreibe ich das mit 02 - Max Mustermann (bearbeitet) ist glaube ich einfacher oder?
Weil bei find sucht er ja dann nur die 01 - Max Mustermann und lässt die 02er außen vor?
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
11.08.2021 10:04:21
Nepumuk
Hallo Daniel,
teste mal:

Private Sub CommandButton10_Click()
Dim objCell As Range
Dim strFirsAddress As String
With ComboBox1
Call .Clear
.ColumnCount = 25
.ColumnWidths = "80;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0" 'Soviel 0en wie abgefragte Spalten
End With
If Box2.ListIndex > -1 Then
With Worksheets("Tabelle16")
Set objCell = .Columns(24).Find(What:=Box2.Text, After:=.Cells(.Rows.Count, 24), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 'hier auf Spalte 24 bezogen
If Not objCell Is Nothing Then
strFirsAddress = objCell.Address
Do
If IsEmpty(objCell.Offset(0, 1).Value) Then
With ComboBox1
.AddItem objCell.Offset(0, -23).Value
.List(.ListCount - 1, 1) = objCell.Offset(0, -22).Value
.List(.ListCount - 1, 2) = objCell.Offset(0, -4).Value
.List(.ListCount - 1, 3) = objCell.Offset(0, -17).Value
.List(.ListCount - 1, 4) = objCell.Offset(0, -3).Value
.List(.ListCount - 1, 5) = objCell.Offset(0, -9).Value
.List(.ListCount - 1, 6) = objCell.Row
End With
End If
Set objCell = .Columns(24).FindNext(After:=objCell)
Loop Until objCell.Address = strFirsAddress
Set objCell = Nothing
End If
End With
End If
End Sub
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
11.08.2021 10:15:26
Daniel
Hallo Nepumuk,
Es funktioniert! du bist ein genie!
Kannst du das auch mit meinem Command Button 6 machen?
der soll in die Nächste Relevante Zeile springen:
also so wie das Dropdown... Spalte 25 unbefüllt und in Spalte 24 dann der ausgewählte Name.
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
11.08.2021 10:21:31
Nepumuk
Hallo Daniel,
füge nach:

Set objCell = Nothing
folgende Zeile ein:

If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
11.08.2021 10:30:12
Daniel
Hallo Nepumuk,
Super Funktioniert!
Nur der Zurück button funktioniert nicht mehr wenn ich die Zellen per drowpdown auswähle.
Weißt du da noch was? und dann nerve ich dich auch nicht mehr :D
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
11.08.2021 10:42:51
Nepumuk
Hallo Daniel,
so ok?

Private Sub CommandButton10_Click()
Dim objCell As Range
Dim strFirsAddress As String
With ComboBox1
Call .Clear
.ColumnCount = 25
.ColumnWidths = "80;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0" 'Soviel 0en wie abgefragte Spalten
End With
If Box2.ListIndex > -1 Then
Set mobjCollection = New Collection
With Worksheets("Tabelle16")
Set objCell = .Columns(24).Find(What:=Box2.Text, After:=.Cells(.Rows.Count, 24), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 'hier auf Spalte 24 bezogen
If Not objCell Is Nothing Then
strFirsAddress = objCell.Address
Do
If IsEmpty(objCell.Offset(0, 1).Value) Then
With ComboBox1
.AddItem objCell.Offset(0, -23).Value
.List(.ListCount - 1, 1) = objCell.Offset(0, -22).Value
.List(.ListCount - 1, 2) = objCell.Offset(0, -4).Value
.List(.ListCount - 1, 3) = objCell.Offset(0, -17).Value
.List(.ListCount - 1, 4) = objCell.Offset(0, -3).Value
.List(.ListCount - 1, 5) = objCell.Offset(0, -9).Value
.List(.ListCount - 1, 6) = objCell.Row
Call mobjCollection.Add(Item:=objCell.Row)
End With
End If
Set objCell = .Columns(24).FindNext(After:=objCell)
Loop Until objCell.Address = strFirsAddress
Set objCell = Nothing
If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
End If
End With
End If
End Sub
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
12.08.2021 08:53:51
Daniel
Guten Morgen Nepumuk,
Leider nicht.
er springt dann immer nur eine Zeile nach oben wenn ich CommandButton4 klicke.
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
12.08.2021 09:04:53
Nepumuk
Hallo Daniel,
dann fällt mir nichts mehr dazu ein, das liegt an deinen verschiedenen Arten zu springen.
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
12.08.2021 09:05:22
Daniel
achso ok danke dir!
AW: Dropdown in Userform Automatisch befülle
07.08.2021 15:22:20
Daniel
Hallo Nepumuk,
mir ist gerade noch etwas aufgefallen.
Und zwar wenn ich auf Button5 klicke schreibt er nicht in die ausgewählte Zeile im Dropdown in spalte 25 und 23.
Wähle ich im Dropdown nicht die mlngrow aus?
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
06.08.2021 11:08:50
Daniel
Noch eine kurze Frage Nepumuk,
kannst du hier drüber schauen?
ich wollte einen knopf der in die Nächste Zeile Springt wo der Name in der Zeile steht. aber wenn ich klicke Passiert nichts. Also keine Fehlermeldung und nix.

Private Sub CommandButton6_Click()
Dim lngRow As Long
Dim C As Range
If mlngrow = 0 Then mlngrow = 1
With Worksheets("Tabelle16")
Set C = .Range(.Cells(mlngrow, 24), .Cells(.Rows.Count, 24)).Find("Box2.Value", After:=.Cells(mlngrow, 24), LookAt:=xlWhole, LookIn:=xlValues)
If C Is Nothing Then
Set C = .Columns(24).Find("Box2.Value", After:=.Cells(1, 24), LookAt:=xlWhole, LookIn:=xlValues)
End If
If C Is Nothing Then Exit Sub
lngRow = C.Row
TextBox1.Text = .Cells(lngRow, 1).Value
TextBox2.Text = .Cells(lngRow, 2).Value
TextBox3.Text = .Cells(lngRow, 4).Value
TextBox15.Text = .Cells(lngRow, 7).Value
mlngrow = lngRow
Call mobjCollection.Add(Item:=mlngrow)
End With
End Sub

AW: Dropdown in Userform Automatisch befülle
06.08.2021 11:12:40
Nepumuk
Hallo Daniel,
wir sollten deine Probleme nacheinander klären, nicht parallel.
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
12.08.2021 09:04:05
Daniel
Hallo Nepumuk,
könntest du mir bei dem Problem was ich hier mal angeschnitten hatte auch noch weiter helfen? :)
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
12.08.2021 10:15:32
Daniel
Hallo Nepumuk,
ich habe mal was zusammen gebastelt aber es funktioniert noch nicht zu 100%
Der Alte:

Private Sub CommandButton6_Click()
Dim lngRow As Long
Dim C As Range
If mlngRow = 0 Then mlngRow = 1
With Worksheets("Tabelle16")
Set C = .Range(.Cells(mlngRow, 24), .Cells(.Rows.Count, 24)).Find(Box2.Text, After:=.Cells(mlngRow, 24), LookAt:=xlWhole, LookIn:=xlValues)
If C Is Nothing Then
Set C = .Columns(24).Find(Box2.Value, After:=.Cells(1, 24), LookAt:=xlWhole, LookIn:=xlValues)
End If
If Not C Is Nothing Then
If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
lngRow = C.Row
TextBox1.Text = .Cells(lngRow, 1).Value
TextBox2.Text = .Cells(lngRow, 2).Value
TextBox3.Text = .Cells(lngRow, 4).Value
TextBox15.Text = .Cells(lngRow, 7).Value
mlngRow = lngRow
Call mobjCollection.Add(Item:=mlngRow)
End If
End With
End Sub
Der Neue:

Private Sub CommandButton6_Click()
Dim lngRow As Long
Dim objCell As Range
If mlngRow = 0 Then mlngRow = 1
With Worksheets("Tabelle16")
Set objCell = .Range(.Cells(mlngRow, 24), .Cells(.Rows.Count, 24)).Find(Box2.Text, After:=.Cells(mlngRow, 24), LookAt:=xlWhole, LookIn:=xlValues)
If objCell Is Nothing Then
Set objCell = .Columns(24).Find(Box2.Value, After:=.Cells(1, 24), LookAt:=xlWhole, LookIn:=xlValues)
End If
Do
If IsEmpty(objCell.Offset(0, 1).Value) Then
With ComboBox1
.AddItem objCell.Offset(0, -23).Value
.List(.ListCount - 1, 1) = objCell.Offset(0, -22).Value
.List(.ListCount - 1, 2) = objCell.Offset(0, -4).Value
.List(.ListCount - 1, 3) = objCell.Offset(0, -17).Value
.List(.ListCount - 1, 4) = objCell.Offset(0, -3).Value
.List(.ListCount - 1, 5) = objCell.Offset(0, -9).Value
.List(.ListCount - 1, 6) = objCell.Row
Call mobjCollection.Add(Item:=objCell.Row)
Set objCell = .Columns(24).FindNext(After:=objCell)
Loop Until objCell.Address = strFirsAddress
If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
End With
End If
End Sub
kannst du mal drüber schauen?
LG
Daniel
AW: Dropdown in Userform Automatisch befülle
12.08.2021 12:46:01
Daniel
Hallo Nepumuk,
Bei mir springt der irgendwie immer 2 Stellen wenn ich auf Weiter Klicke.
also von Zeile 100 auf 102...
er springt so wenn etwas dazwischen ist in die Richtige zeile. aber bei lauter leerzeilen springt er immer 2 stellen weiter
Hier nochmal mein code:

Option Explicit
Private mlngActiveRow As Long
Private mobjCollection As Collection
Private mblnNoEvent As Boolean
Private Function AnzahlZeilen(Blatt As Worksheet, Spalte As String) As Long
AnzahlZeilen = WorksheetFunction.CountA(Blatt.Range(Spalte))
End Function
Private Sub ComboBox1_Change()
If Not mblnNoEvent Then
With ComboBox1
TextBox1.Text = .List(.ListIndex, 0)
TextBox2.Text = .List(.ListIndex, 1)
TextBox3.Text = .List(.ListIndex, 2)
TextBox15.Text = .List(.ListIndex, 3)
TextBox14.Text = .List(.ListIndex, 4)
TextBox7.Text = .List(.ListIndex, 5)
mlngActiveRow = .List(.ListIndex, 6)
End With
Call mobjCollection.Add(Item:=mlngActiveRow)
End If
End Sub
Private Sub Box2_Change()
mlngActiveRow = 1
Set mobjCollection = New Collection
CommandButton6.Value = True
End Sub
Private Sub UserForm_Initialize()
Dim objCell As Range
Dim AnzahlGes As Long, AnzahlLeer As Long
With Box1
.AddItem "Grün"
.AddItem "Gelb"
.AddItem "Rot"
.AddItem "Weiß"
End With
With Box2
.AddItem "Max Mustermann"
.AddItem "Ulrike Musterfrau"
End With
AnzahlLeer = AnzahlZeilen(Worksheets("Tabelle16"), "S:S")
AnzahlGes = AnzahlZeilen(Worksheets("Tabelle16"), "A:A")
AnzahlLeer = AnzahlGes - AnzahlLeer
Label17.Caption = "Arbeitsvorrat " & AnzahlLeer
Set mobjCollection = New Collection
With Worksheets("Tabelle16")
For Each objCell In .Range(.Cells(2, 19), .Cells(.Rows.Count, 19).End(xlUp))
If Not IsEmpty(objCell.Value) And Not IsEmpty(objCell.Offset(0, 3)) And IsEmpty(objCell.Offset(0, 6)) Then
TextBox1.Text = objCell.Offset(0, -18).Value
TextBox2.Text = objCell.Offset(0, -17).Value
TextBox3.Text = objCell.Offset(0, 1).Value
TextBox15.Text = objCell.Offset(0, -12).Value
TextBox14.Text = objCell.Offset(0, 2).Value
TextBox7.Text = objCell.Offset(0, -4).Value
Box1.Text = objCell.Offset(0, 1).Value
mlngActiveRow = objCell.Row
Call mobjCollection.Add(Item:=mlngActiveRow)
Exit For
End If
Next
End With
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Set mobjCollection = Nothing
End Sub
'Zurück vorherige bearbeitete Knopf
Private Sub CommandButton4_Click()
Dim lngIndex As Long
Dim blnFound As Boolean
With mobjCollection
For lngIndex = .Count To 1 Step -1
If .Item(lngIndex)  0 And mlngActiveRow  -1 Then
With Worksheets("Tabelle16")
Set objCell = .Columns(24).Find(What:=Box2.Text, After:=.Cells(.Rows.Count, 24), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 'hier auf Spalte 24 bezogen
If Not objCell Is Nothing Then
strFirsAddress = objCell.Address
Do
If IsEmpty(objCell.Offset(0, 1).Value) Then
With ComboBox1
.AddItem objCell.Offset(0, -23).Value
.List(.ListCount - 1, 1) = objCell.Offset(0, -22).Value
.List(.ListCount - 1, 2) = objCell.Offset(0, -4).Value
.List(.ListCount - 1, 3) = objCell.Offset(0, -17).Value
.List(.ListCount - 1, 4) = objCell.Offset(0, -3).Value
.List(.ListCount - 1, 5) = objCell.Offset(0, -9).Value
.List(.ListCount - 1, 6) = objCell.Row
End With
End If
Set objCell = .Columns(24).FindNext(After:=objCell)
Loop Until objCell.Address = strFirsAddress
Set objCell = Nothing
If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
End If
End With
End If
End Sub

AW: Dropdown in Userform Automatisch befülle
12.08.2021 12:51:19
Nepumuk
Hallo Daniel,
was sind bei dir Leerzeilen?
Gruß
Nepumuk
AW: Dropdown in Userform Automatisch befülle
12.08.2021 12:55:28
Daniel
Hallo Nepumuk,
Dort wo ich noch keine Beschriftung in Spalte 25 habe ( also der Zeitstempel)
Dort springt er irgendwie zwei Zeilen weiter wenn mehrere hintereinander sind die in Spalte 25 kein Datum haben
AW: Dropdown in Userform Automatisch befülle
12.08.2021 13:17:08
Nepumuk
Hallo Daniel,
teste mal:

Option Explicit
Private mlngActiveRow As Long
Private mobjCollection As Collection
Private mblnNoEvent As Boolean
Private Function AnzahlZeilen(Blatt As Worksheet, Spalte As String) As Long
AnzahlZeilen = WorksheetFunction.CountA(Blatt.Range(Spalte))
End Function
Private Sub ComboBox1_Change()
If Not mblnNoEvent Then
With ComboBox1
TextBox1.Text = .List(.ListIndex, 0)
TextBox2.Text = .List(.ListIndex, 1)
TextBox3.Text = .List(.ListIndex, 2)
TextBox15.Text = .List(.ListIndex, 3)
TextBox14.Text = .List(.ListIndex, 4)
TextBox7.Text = .List(.ListIndex, 5)
mlngActiveRow = .List(.ListIndex, 6)
End With
End If
End Sub
Private Sub Box2_Change()
mlngActiveRow = 1
Set mobjCollection = New Collection
CommandButton6.Value = True
End Sub
Private Sub UserForm_Initialize()
Dim objCell As Range
Dim AnzahlGes As Long, AnzahlLeer As Long
With Box1
.AddItem "Grün"
.AddItem "Gelb"
.AddItem "Rot"
.AddItem "Weiß"
End With
With Box2
.AddItem "Max Mustermann"
.AddItem "Ulrike Musterfrau"
End With
AnzahlLeer = AnzahlZeilen(Worksheets("Tabelle16"), "S:S")
AnzahlGes = AnzahlZeilen(Worksheets("Tabelle16"), "A:A")
AnzahlLeer = AnzahlGes - AnzahlLeer
Label17.Caption = "Arbeitsvorrat " & AnzahlLeer
Set mobjCollection = New Collection
With Worksheets("Tabelle16")
For Each objCell In .Range(.Cells(2, 19), .Cells(.Rows.Count, 19).End(xlUp))
If Not IsEmpty(objCell.Value) And Not IsEmpty(objCell.Offset(0, 3)) And IsEmpty(objCell.Offset(0, 6)) Then
TextBox1.Text = objCell.Offset(0, -18).Value
TextBox2.Text = objCell.Offset(0, -17).Value
TextBox3.Text = objCell.Offset(0, 1).Value
TextBox15.Text = objCell.Offset(0, -12).Value
TextBox14.Text = objCell.Offset(0, 2).Value
TextBox7.Text = objCell.Offset(0, -4).Value
Box1.Text = objCell.Offset(0, 1).Value
mlngActiveRow = objCell.Row
Exit For
End If
Next
End With
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Set mobjCollection = Nothing
End Sub
'Zurück vorherige bearbeitete Knopf
Private Sub CommandButton4_Click()
Dim lngIndex As Long
Dim blnFound As Boolean
With mobjCollection
For lngIndex = .Count To 1 Step -1
If .Item(lngIndex)  0 And mlngActiveRow  -1 Then
With Worksheets("Tabelle16")
Set objCell = .Columns(24).Find(What:=Box2.Text, After:=.Cells(.Rows.Count, 24), _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) 'hier auf Spalte 24 bezogen
If Not objCell Is Nothing Then
strFirsAddress = objCell.Address
Do
If IsEmpty(objCell.Offset(0, 1).Value) Then
With ComboBox1
.AddItem objCell.Offset(0, -23).Value
.List(.ListCount - 1, 1) = objCell.Offset(0, -22).Value
.List(.ListCount - 1, 2) = objCell.Offset(0, -4).Value
.List(.ListCount - 1, 3) = objCell.Offset(0, -17).Value
.List(.ListCount - 1, 4) = objCell.Offset(0, -3).Value
.List(.ListCount - 1, 5) = objCell.Offset(0, -9).Value
.List(.ListCount - 1, 6) = objCell.Row
End With
End If
Set objCell = .Columns(24).FindNext(After:=objCell)
Loop Until objCell.Address = strFirsAddress
Set objCell = Nothing
If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
End If
End With
End If
End Sub
Gruß
Nepumuk

100 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige