Excel VBA wie kann ich bei einer Combobox die Rowsource filtern?

1 Antwort

Soweit ich weiß, ist das mit Bordmitteln nicht möglich. Um die anderen Einträge auszusortieren, müsstest du die ComboBox neu füllen und danach neu aufklappen (per Makro).

Vielleicht reicht es ja auch, die Sorted-Eigenschaft der ComboBox auf True zu setzen? Dann stehen die Begriffe mit gleichen Anfängen hintereinander.

mhh ja das hab ich auch schon gelesen.
aber könnte man nich wenn der Benutzer einen Buchstaben eingibt
die Rowsource Range so anpassen das er über eine Schleife nur die Range-Bereiche makiert die mit dem String übereinstimmen ?

0
@Kallyguru

Wenn die Elemente für die ComboBox alphabetisch auf- oder absteigend sortiert sind, kannst du die ListFillRange-Eigenschaft entsprechend setzen.

In neueren Versionen von Excel gibt es möglicherweise auch eine Eigenschaft, die nichtzusammenhängende Listenbereiche erlaubt.

Ansonsten bleibt wohl nichts übrig, als die Liste jedesmal neu aufzubauen.

0

Userform aus Einträgen in Comboboxen eine Textbox befüllen?

Hallo zusammen,

und nochmals VBA und ich komme wieder nicht weiter.

Ich möchte die Textbox1 automatisch befüllt haben, sobald die Combobox2 (Ort) und die Combobox 5 (Datum) ausgefüllt sind. Das ganze innerhalb einer Userform.

Aus Combobox2 ziehe ich mir mittels Left die ersten beiden Buchstaben, aus Combobox5 mittels right die letzten beiden Ziffern, soweit komme ich.

Als Beispiel könnte da ML18 herauskommen...

Nun soll noch die Listbox1 geprüft werden. Aufbau der Nummern in der Listbox ist z.B.

ML18001

SU18001

ML18002

Es sollen also alle Einträge durchsucht werden, deren erste 4 Stellen die ermittelte ML18 haben. Aus den restlichen 3 Stellen soll der höchste Wert ermittelt werden +1.

Alles zusammen ergibt den Eintrag in Textbox1 --> hier also ML18003

Nummernfolge ist immer 7-stellig (2 Buchstaben, Jahr zweistellig, lfd. Nr.)

Ich hoffe ihr versteht mich und habt einen Ansatz für mich.

LG, Chris

...zur Frage

[VBA] - Multipage Userform eingaben in Excel übertragen?

Servus Leute,

Ich habe ein Userform in Excel mit Multipage erstellt.

Nun möchte ich auf der letzten Multipage Seite einen Button einbauen. Auf Knopfdruck sollen dann alle Eingaben die vom User auf den einzelnen Multipageseiten gemacht worden sind in ein Excel Tabellenblatt übertragen werden.

Mein Ansatz war dem Button folgenden Code zu geben:

    Dim sheet2 As Worksheet
    Dim maxRow2 As Long
    Dim check3 As Boolean
    Set sheet2 = ActiveWorkbook.Worksheets(1)
    maxRow2 = sheet2.Cells(sheet2.Rows.Count, "B").End(xlUp).Row
    If CheckBox1.Value Then
      sheet2.Cells(maxRow2 + 1, 9).Value = "ja"
      Else
        sheet2.Cells(maxRow2 + 1, 9).Value = "nein"
        End If
              sheet2.Cells(maxRow2 + 1, 13).Value = TextBox4.Value

Das funktioniert leider nicht wie ich es mir erhofft habe, auf Knopfdruck werden keine Daten übertragen. Ich habe die vermutung, dass nicht auf die Felder wie z.B. TextBox4 zugegriffen werden kann, weil die auf einer anderen Seite im Multipage sind.

Wie schaffe ich es an die Variablen ranzukommen. Ich hatte noch überlegt, im Code der jeweiligen Seite den Wert aus der Textbox in eine Variable zu setzen, die z.B. Global ist. Aber da bin ich auch schon wieder überfragt wie man das macht.

Außerdem habe ich noch eine Frage zu den Checkboxen.

Es soll folgende Möglichkeiten geben:

  1. Wenn Checkbox nicht angeklickt, dann kann man immer zu nächsten Kategorie ( Nächste Seite im Multipage)
  2. Wenn Checkbox angeklickt ist und variable x leer, dann soll man nicht weiter kommen (Msgbox)
  3. Wenn Checkbox angeklickt ist und variable x befüllt, dann kann man zur nächsten Kategorie (Nächste Seite im Multipage)

Für eine Checkbox habe ich das schon hinbekommen, aber wie mach ich das wenn es mehrere Checkboxen gibt. Weil ich glaube wenn ich das so mache wie bisher, dann wird das eine endlose anreihung von if bedingungen.

Diesen Code habe ich dann auf den Button gelegt, mit dem man zur nächsten Kategorie kommen soll oder eben halt nicht.

  Dim sheet2 As Worksheet
    Dim maxRow2 As Long
    Dim check3 As Boolean
    Set sheet2 = ActiveWorkbook.Worksheets(1)
    maxRow2 = sheet2.Cells(sheet2.Rows.Count, "B").End(xlUp).Row
   
    If CheckBox3.Value Then
    If Test = False Then
    MsgBox ("Kein Pfad angegeben")
    Else
  Dim iNextPage As Long
    With Me.MultiPage1
        iNextPage = .Value + 1
        If iNextPage < .Pages.Count Then
            .Pages(iNextPage).Visible = True
            .Value = iNextPage
        End If
    End With
    End If
    Else
    Dim iNextPage2 As Long
    With Me.MultiPage1
        iNextPage2 = .Value + 1
        If iNextPage2 < .Pages.Count Then
            .Pages(iNextPage2).Visible = True
            .Value = iNextPage2
        End If
    End With
    End If

Und als letztes würde ich gern noch wissen ob es möglich ist, zu unterbinden, dass der User oben im Multipage die Kategorie direkt anklicken kann und man halt nur über den "weiter" button zur nächsten kategorie kommt.

Gruß Chris

...zur Frage

Was möchtest Du wissen?