Suchfeld in Symbolleiste

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
TextBox MsgBox
Bild

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

Bild


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


Bild


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??


Bild


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


Bild


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


Bild


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


Bild


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


Bild


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


 Bild

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