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.

Formel in Userform
#11
(12.01.2022, 17:39)Fennek schrieb: sorry, sich in ein so komplexes Projekt einzuarbeiten um ein Detail zu korrigieren, erfordert zu viel Zeit.

mfg

Hallo, die Userform ist in der Tat recht komplex - ich hab den Code aber auch nur komplett gelassen, dass man die Funktionalität erkennen kann - das meiste daran ist für jetzt irrelevant.
Mein Problem ist glaub ich nicht so schwer zu lösen (für mich erheblich mehr als "ein Detail" - wenn ich das schaffe, nehm ich mir selbst ~ 1 Stunde Arbeit am Tag ab).

Ich habe auch schon einen Code gefunden, der funktioniert, aber noch nicht zu 100 %, vielleicht kannst du mir doch schnell helfen?

Offensichtlich beschränkt sich das Sub "Suchenbox_Change" nur auf die Spalte D - ich bekomm es aber nicht hin, dass auch die Spalte C berücksichtigt wird. Einfach die Ds in C:D ändern klappt jedenfalls nicht.



CODE:

Private Sub ComboBox1_Daten()  'ComboBox1 Name dt mit Daten füllen

For Each dname In Workbooks(PflanzenDatei).Worksheets(PflanzenTab).[c:d]
If dname.Value = "" Then Exit For
ComboBox1.AddItem dname.Value
Next

End Sub



Private Sub SuchenBox_Change()

Dim i As Long
Dim arrList As Variant
Set Kulturen = Workbooks(PflanzenDatei).Worksheets(PflanzenTab)

Me.ComboBox1.Clear

If Kulturen.Range("D" & Kulturen.Rows.Count).End(xlUp).Row > 1 And Trim(Me.SuchenBox.Value) <> vbNullString Then
    arrList = Kulturen.Range("D" & Kulturen.Range("D" & Kulturen.Rows.Count).End(xlUp).Row).Value2
    For i = LBound(arrList) To UBound(arrList)
        If InStr(1, arrList(i, 1), Trim(Me.SuchenBox.Value), vbTextCompare) Then
            Me.ComboBox1.AddItem arrList(i, 1)
        End If
    Next i
End If

End Sub
Antworten Top
#12
Die Frage sollte vorher geklärt werden was du mit der Information anschließend machen möchtest. 
Du hast in deiner Pflanzenliste mehrfach vorkommende gleiche Paarungen, die sich nur in einer dritten Information(Spalte) unterscheiden.
Soll im weiteren Verlauf deiner Suche der richtige Datensatz inclusive der andere Informationen verwendet werden, dann muß auch die Zeilen-Nr mitgeschrieben werden? 

Evtl. böte sich hier eine Listbox an, in der die Suchergebnisse weiter aufgeschlüsselt werden. um dann den richtigen Datensatz nutzen zu können.
Antworten Top
#13
Hallo,

nur mit der Datei "Pflanzen"

Die ListBox der UserForm muss 2 Spalten enthalten. Dann füllt dieser Code die dt und engl Begriffe:

Code:
Private Sub UserForm_Initialize()
Dim DD As Object: Set DD = CreateObject("Scripting.Dictionary")
With Sheets("Euro")
    lr = .Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lr
        If Not DD.exists(.Cells(i, 3).Value) Then DD(.Cells(i, 3).Value) = .Cells(i, 4).Value
    Next i
End With
Debug.Print DD.Count
'Me.ListBox1.List = DD.keys 'Array(DD.keys, DD.items)
With Me.ListBox1
    For Each k In DD.keys
        .AddItem k
        .List(.ListCount - 1, 1) = DD(k)
    Next k
End With
Set DD = Nothing
End Sub

Später wird es möglich sein aus einer TextBox sowohl nach den dt als auch den engl Begriffen zu suchen.

mfg


Angehängte Dateien
.xlsm   Pflanzen2000.xlsm (Größe: 545,55 KB / Downloads: 2)
Antworten Top
#14
(13.01.2022, 10:33)ralf_b schrieb: Die Frage sollte vorher geklärt werden was du mit der Information anschließend machen möchtest. 
Du hast in deiner Pflanzenliste mehrfach vorkommende gleiche Paarungen, die sich nur in einer dritten Information(Spalte) unterscheiden.
Soll im weiteren Verlauf deiner Suche der richtige Datensatz inclusive der andere Informationen verwendet werden, dann muß auch die Zeilen-Nr mitgeschrieben werden? 

Evtl. böte sich hier eine Listbox an, in der die Suchergebnisse weiter aufgeschlüsselt werden. um dann den richtigen Datensatz nutzen zu können.

Hallo Ralf!

Die gleichen Eintragungen sind immer per Größe (Spalte G der Pflanzendatei) sortiert. Es dürfen also ruhig alle doppelten bestehen bleiben, dann spar ich mir den Klick auf die Ausg.Größe in der Userform.
Die Zeilennummer wird in einem anderen Sub definiert (Datei CEFshare / Add_Pflanzen UF / Z 74 bzw. 84 ff.), das kann also auch unberücksichtigt bleiben.
(die ComboBox4 in CEFshare hab ich wieder gelöscht und arbeite mit der ComboBox1 (noch als "Name deutsch" betitelt))

Der Code, den ich gefunden habe, funktioniert ziemlich gut - aber eben nur für die lateinischen Namen (weil nur Spalte D), alles andere passt!

LG Phaona

Geschafft!!  Ich hab's tatsächlich geschafft!  19

Danke nochmal an alle, die sich für mich Zeit genommen haben!

Das ist der Code:

Private Sub SuchenBox_Change()

Dim i As Long
Dim arrList As Variant
Set Kulturen = Workbooks(PflanzenDatei).Worksheets(PflanzenTab)

Me.ComboBox1.Clear

If Kulturen.Range("C" & Kulturen.Rows.Count).End(xlUp).Row > 1 And Trim(Me.SuchenBox.Value) <> vbNullString Then
    arrList = Kulturen.Range("C1:C" & Kulturen.Range("C" & Kulturen.Rows.Count).End(xlUp).Row).Value2
    For i = LBound(arrList) To UBound(arrList)
        If InStr(1, arrList(i, 1), Trim(Me.SuchenBox.Value), vbTextCompare) Then
            Me.ComboBox1.AddItem arrList(i, 1)
        End If
    Next i
End If

If Kulturen.Range("D" & Kulturen.Rows.Count).End(xlUp).Row > 1 And Trim(Me.SuchenBox.Value) <> vbNullString Then
    arrList = Kulturen.Range("D1:D" & Kulturen.Range("D" & Kulturen.Rows.Count).End(xlUp).Row).Value2
    For i = LBound(arrList) To UBound(arrList)
        If InStr(1, arrList(i, 1), Trim(Me.SuchenBox.Value), vbTextCompare) Then
            Me.ComboBox1.AddItem arrList(i, 1)
        End If
    Next i
End If

End Sub
Antworten Top


Gehe zu:


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