Thema Datum  Von Nutzer Rating
Antwort
27.02.2017 12:36:58 The_Materialist
NotSolved
Blau UserForm Suchfeld
28.02.2017 09:20:14 SJ
***
NotSolved
28.02.2017 11:13:46 The_Materialist
NotSolved
28.02.2017 12:18:51 SJ
Solved

Ansicht des Beitrags:
Von:
SJ
Datum:
28.02.2017 09:20:14
Views:
635
Rating: Antwort:
  Ja
Thema:
UserForm Suchfeld

Hallo,

soweit ich weiss, gibt es eine solche Funktion leider nicht in VBA.

Da mich das Thema ebenfalls interessiert, habe ich das folgende Programmiert:

Auf der UserForm gibt es 2 Steuerelemente:

  • TextBox1
  • ComboBox1

Code (Modul1):

Option Explicit

Public Type Parameters
    ColumnName As String
    Operator As String
    FilterValue As String
End Type

Code (UserForm1):

Option Explicit

Private Sub TextBox1_Change()
    If Me.TextBox1.Value = vbNullString Then
        Exit Sub
    End If
    
    Dim params As Parameters
    With params
        .ColumnName = "Material"
        .Operator = "LIKE"
        .FilterValue = Me.TextBox1.Value
    End With
    
    Call fill_combobox(params)
End Sub

Private Sub UserForm_Initialize()
    Dim params As Parameters
    With params
        .ColumnName = "Material"
    End With
    
    Call fill_combobox(params)
End Sub

Private Sub fill_combobox(ByRef params As Parameters)
    Dim rs As ADODB.Recordset
    Set rs = get_entries(params)
    
    If rs.RecordCount > 0 Then
        Me.ComboBox1.Clear
        Do While Not rs.EOF
            Me.ComboBox1.AddItem (rs.Fields(0))
            rs.MoveNext
        Loop
    End If
End Sub

Private Function get_entries(ByRef params As Parameters) As ADODB.Recordset
    Dim con As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim strSQL As String
    
    params.FilterValue = Replace(params.FilterValue, ";", vbNullString)
    
    With con
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .Properties("Data Source").Value = ThisWorkbook.FullName
        .Properties("Extended Properties").Value = "Excel 12.0 Xml;HDR=YES"
        .Open
    End With
    
    If params.Operator = vbNullString Then
        strSQL = "SELECT " & params.ColumnName & " FROM [Tabelle1$];"
    Else
        strSQL = "SELECT " & params.ColumnName & " FROM [Tabelle1$] WHERE " & params.ColumnName & " " & params.Operator & " '" & params.FilterValue & "';"
    End If
    
    With rs
        .CursorLocation = adUseClient
        .CursorType = adOpenStatic
        .ActiveConnection = con
        .Source = strSQL
        .Open
    End With
    
    Set get_entries = rs
    Set rs = Nothing
    Set con = Nothing
End Function

Das gesamte Konstrukt basiert auf ADO, dadurch wird die Excel-Tabelle selbst zur Datenbank und Werte können mit SQL-Befehelen abgefragt werden.

Mein Beispiel als Arbeitsmappe: http://jansesoft.de/owncloud/index.php/s/F3EUgPNpQYzEpe9

Viele Grüße


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
27.02.2017 12:36:58 The_Materialist
NotSolved
Blau UserForm Suchfeld
28.02.2017 09:20:14 SJ
***
NotSolved
28.02.2017 11:13:46 The_Materialist
NotSolved
28.02.2017 12:18:51 SJ
Solved