Formel in Userform
#11
(12.01.2022, 18: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, 11: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