AW: Suchen-Dialogfenster anzeigen via VBA-Makro
26.03.2017 06:25:50
fcs
Hallo Dan,
der Suchen-Dialog kann nur in einer verenfachten Form direkt per Makro angezeigt werden.
Per Tastenbefehlen kann der via Menüs aufrufbare Suchen-Dialog angezeigt werden.
Allerdings hat das Senden von Tastaturbefehlen via VBA-Makro so seine Tücken.
Der Ausgangszustand beim Start des Makros muss immer ähnlich sein.
Die Excel-Version und persönliche Einstellungen des Users für die Menüs erfordern ggf. unterschiedliche Tastenfolgen.
LG
Franz
Hier 2 Beispielmakros
Sub Show_Dialog_Menue_Suchen_Ersetzen()
'Suchen-Dialog mit Tastaturbefehlen anzeigen
'Tasturbefehle können unterschiedlich sein für verschiedene Excel-Versionen _
möglicherweise auch bei persönlichen Menü-Einstellunen eines Users.
Dim rngFind As Range
' Suchendialog voreinstellen
Set rngFind = Cells.Find(What:=ActiveSheet.Range("B6").Value, After:=ActiveCell, _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, _
SearchFormat:=False)
'Suchen Dialog per Tastenbefehle anzeigen - unter Windows Vista Excel 2010
Application.SendKeys "%R"
Application.SendKeys "FD"
Application.SendKeys "N"
End Sub
Sub DialogSuchen()
'Suchen-Dialog unter VBA direkt mit Voreinstellungen anzeigen
'Es wird nur ein vereinfachter Dialog angezeigt _
Format-Suche, Option Blatt/Arbeitsmappe und Schaltfläche "Alle anzeigen" fehlen
Dim Text, in_num, at_num, by_num&, dir_num&, match_case As Boolean, match_byte As Byte
'Parameter des Suchen-Dialogs - alle Werte sind optional, wenn nicht angegeben werden _
die Werte der vorherien Suche bzw. die Standardwerte gesetzt
'Beim Aufruf des Dialogs müssen die Kommata für die nicht zu setzenden Werte eingefügt sein
Text = ActiveSheet.Range("B6").Value 'Zelle mit Suchwert
in_num = 2 ' 2 = in Werten 1 = in Formeln
at_num = 1 ' xlWhole = 1 xlPart = 2
by_num = 1 ' Suchreihenfolge xlByRows = 1 xlByColumns= 2
dir_num = 1 ' Suchrichtun xlNext = 1 xlPrevious = 2
match_case = 0 ' Groß-/Kleinschreibung beachten 0 = Nein - 1 = Ja
match_byte = 0 ' ?Formate?
'Beispiele für Aufruf des Suchen-Dialogs
' Application.Dialogs(xlDialogFormulaFind).Show 'Anzeige mit vorherigen Einstellungen
Application.Dialogs(xlDialogFormulaFind).Show Text, in_num, at_num, by_num, dir_num, _
match_case, match_byte
' Application.Dialogs(xlDialogFormulaFind).Show Text 'neuer Suchtext mit vorherigen _
Einstellungen
End Sub