Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Suchfeld in Symbolleiste

    Betrifft: Suchfeld in Symbolleiste von: Thorsten
    Geschrieben am: 05.10.2003 15:23:55

    Hallo Ihr Könner!
    den ganzen Tag versuche ich nun schon, meiner Symbolleiste ein Suchfeld hinzuzufügen.
    Nach Eingabe in dieses Suchfeld soll mit "Enter" der eingegebene Begriff oder Felder die diesen Begriff in Teilen beinhalten - im gesamten Tabellenblatt gesucht und gefunden werden - mit Weitersuch-Option.
    Für Euch bestimmt keine Hürde, fuer mich ein Meilenstein.
    Im Voraus Danke fuer Eure Hilfe

      


    Betrifft: AW: Suchfeld in Symbolleiste von: Nepumuk
    Geschrieben am: 05.10.2003 16:11:41

    Hallo Thorsten,
    ein Beispiel, wie ein Eingabefeld in einer Symbolleiste angelegt wird. Zum Thema suchen wirst du im Archiv ca. 100 Hinweise mit exzellenten Programmbeispielen finden.

    Option Explicit
    Public Sub anlegen()
        Dim myBar As CommandBar, myCtrl As CommandBarControl
        Set myBar = CommandBars.Add("suchen", msoBarFloating, False, True)
        Set myCtrl = myBar.Controls.Add(Type:=msoControlEdit)
        myCtrl.OnAction = "suchen"
        myBar.Visible = True
    End Sub
    Private Sub suchen()
    'Hier kommt deine Suchroutine rein
    End Sub
    


    Code eingefügt mit: Excel Code Jeanie

    Gruß
    Nepumuk


      


    Betrifft: AW: Suchfeld in Symbolleiste von: Thorsten
    Geschrieben am: 05.10.2003 17:06:07

    Hallo Nepumuk,
    Danke fuer Deine prompte Antwort!
    Die Symbolleiste funktioniert, d.h sie wird eingeblendet und es wird auch ein unter suchen() definierte (simple) Aktion ausgeführt on action, z.b. Range("a1").Select.
    Wie lautet denn jetzt der Code fuer die Suchroutine, dass naemlich das im Feld eingegebene Wort (oder Wortbestandteil) zu suchen ist??


      


    Betrifft: AW: Suchfeld in Symbolleiste von: Ramses
    Geschrieben am: 05.10.2003 16:11:59

    Hallo Thorsten,

    warum das Rad immer neu erfinden ?

    "Ctrl" + "f"

    Alles andere ist viel zu aufwändig zum programmieren :-)

    Gruss Rainer


      


    Betrifft: AW: Suchfeld in Symbolleiste von: GraFri
    Geschrieben am: 05.10.2003 18:35:58

    Hallo

    Bei Unklarheiten melden.



    '————————————————————————————————
    '   05/10/2003
    '©  Ing.Friedrich Grath
    '@  grath.fritz@aon.at
    '————————————————————————————————

    '***********************************************************************
    'In ein MODUL (Name: Modul1)

    Option Explicit
    Option Base 1
    Option Compare Text

    Dim n%, x%, c
    Dim Adresse()                    As String
    Dim indexAnzeige                 As Integer
    Dim Meldung                      As Byte

    '------------------------------------------------------------------------

    ' Neue Symbolleiste erstellen und mit Schaltbutton versehen
    Sub Neue_Symbolleiste()
    ' Falls Symbollsite schon existiert löschen und neu anlegen
    On Error Resume Next
    CommandBars("Suchen").Delete
    CommandBars.Add Name:="Suchen"
      
    ' Symbolleiste oben links anzeigen und mit Schaltflächen versehen
    With CommandBars("Suchen")
        .Position = msoBarTop
        .Visible = True
        .Controls.Add Type:=msoControlEdit      'Textbox f. Suchtext
        .Controls.Add Type:=msoControlButton    'Button für Weitersuchen
    End With

    With CommandBars("Suchen").Controls(1)
        .Width = 100
        .TooltipText = "Suchbegriff eingeben und mit ENTER bestättigen"
        .Text = ""
        .OnAction = "Suche_starten"
    End With

    With CommandBars("Suchen").Controls(2)
        .Caption = " Suche fortsetzen    "
        .FaceId = 345
        .Style = msoButtonIconAndCaption
        .OnAction = "Anzeige_fortsetzen"
        .Enabled = False
    End With
    End Sub
    '------------------------------------------------------------------------
    Sub Symbolleiste_löschen()
        On Error Resume Next
        CommandBars("Suchen").Delete
    End Sub
    '------------------------------------------------------------------------
    Sub Suche_starten()
    Dim objList As CommandBarControl


    Dim ersteAdresse                 As String
    Dim Text                         As String
    Dim Suchen                       As String

    'Suchbegriff aus Textbox
    Set objList = CommandBars.ActionControl
    Suchen = objList.Text

    If Suchen = "" Then Exit Sub

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual


    x = 1: indexAnzeige = 0
    With ActiveSheet.UsedRange
        Set c = .Find(Suchen, After:=Cells(.Rows.Count, .Columns.Count), LookIn:=xlValues)
        If Not Is Nothing Then
            ersteAdresse = c.Address
            Do
                ReDim Preserve Adresse(x)
                Adresse(x) = c.Address(RowAbsolute:=False, ColumnAbsolute:=False)
                Set c = .FindNext(c)
                x = x + 1
            Loop While Not Is Nothing And c.Address <> ersteAdresse
        End If
    End With

    'Anzeige der ersten gefundenen Übereinstimmung
    Select Case x
    Case 1
        CommandBars("Suchen").Controls(2).Enabled = False
        Meldung = MsgBox("Es wurde kein übereinstimmender Wert gefunden", _
        vbOKOnly, "G E F U N D E N E   W E R T E")
        Exit Sub
    Case 2
        CommandBars("Suchen").Controls(2).Enabled = False
    Case Else
        CommandBars("Suchen").Controls(2).Enabled = True
    End Select
        
        ActiveSheet.Range(Adresse(1)).Select

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    End Sub
    '------------------------------------------------------------------------
    Sub Anzeige_fortsetzen()

        indexAnzeige = indexAnzeige + 1

        If indexAnzeige = x - 1 Then
            CommandBars("Suchen").Controls(2).Enabled = False
            Meldung = MsgBox("Es wurde der letzte übereinstimmender Wert angezeigt", _
            vbOKOnly, "G E F U N D E N E   W E R T E")
            Exit Sub
        Else
            ActiveSheet.Range(Adresse(indexAnzeige + 1)).Select
        End If

    End Sub
    '***********************************************************************



    '***********************************************************************
    'In DieseArbeitsmappe
    Option Explicit

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Call Modul1.Symbolleiste_löschen
    End Sub

    Private Sub Workbook_Open()
        Call Modul1.Neue_Symbolleiste
    End Sub
    '***********************************************************************




         Code eingefügt mit Syntaxhighlighter 2.4


    mfg, GraFri


      


    Betrifft: AW: Suchfeld in Symbolleiste von: Thorsten
    Geschrieben am: 05.10.2003 19:32:56

    Hallo GraFri,

    danke fuer Deine prompte Hilfe. die Suche funktioniert jetzt prima, nur bei der Fortsetzung der Suche hapert es noch:

    in deinem Sub:
    Sub Anzeige_fortsetzen()
    kommt leider bei:
    Else
    ActiveSheet.Range(Adresse(indexAnzeige + 1)).Select
    immer die Meldung:
    "laufzeitfehler '9'; Index ausserhalb des Gültigen Bereichs"


    Wie ist das zu beheben???

    Gruss und nochmals Danke

    Thorsten


      


    Betrifft: AW: Suchfeld in Symbolleiste von: GraFri
    Geschrieben am: 06.10.2003 15:57:37

    Hallo

    Bei mir Unter Excel 2000 funktioniert es ohne Fehler. Zu beachten ist. Dieser Code gehört in ein Modul!


    mfg, GraFri


      


    Betrifft: AW: Suchfeld in Symbolleiste von: Thorsten
    Geschrieben am: 06.10.2003 19:13:56

    Hallo GraFri,

    Danke nochmals fuer die Antwort, ich habe die "+1" geloescht und schon lief die Sache.
    M.f.G.
    Thorsten


     

    Beiträge aus den Excel-Beispielen zum Thema " Suchfeld in Symbolleiste"