Ich hatte ein ähnliches Problem. Ich habe eine Schaltfläche in einer Arbeitsmappe. Wenn auf die Schaltfläche geklickt wird, soll Excel den Suchdialog mit der Option "In allen Arbeitsmappen suchen" öffnen, die bereits ausgewählt ist, anstelle der Standardeinstellung "Innerhalb eines Blattes", egal was passiert.
Außerdem wollte ich, dass die Schaltfläche unabhängig von den Optionen funktioniert, die ausgeblendet oder angezeigt werden, und ob jemand manuell Änderungen vorgenommen hat oder nicht. Dies ist schwierig, da Excel die Optionen beim Start standardmäßig nicht anzeigt, sondern sie beim nächsten Mal speichert und erneut anzeigt, wenn sie zuvor von jemandem angezeigt wurden.
Um sicherzustellen, dass die Tastenanschläge funktionieren, benötigen wir eine Reihe von Tastenanschlägen, mit denen die Einstellung unabhängig vom Ausgangszustand festgelegt wird. Ich habe ziemlich viel gebastelt, aber ich habe einen gefunden, der funktioniert.
Hier ist mein Code für die englische Version von Excel. Für andere Sprachen müssen Sie die Schlüssel entsprechend ändern.
Sub Commanbutton_Click()
Cells(1, 1).Select
SendKeys "^f", True
SendKeys "{TAB 15}"
SendKeys " ", True
SendKeys "%t%t", True
SendKeys "{TAB 2}", True
SendKeys "{DOWN}{DOWN}{ENTER}", True
SendKeys "%t%t", True
End Sub
Sie können es manuell ausprobieren:
Drücken Sie STRG + F für den Suchdialog. Drücken Sie 15 Mal die Tabulatortaste, damit Sie entweder auf "Optionen" oder in der Dropdown-Liste "Suchen innerhalb" landen.
Drücken Sie die Leertaste und entweder
1) Optionen werden angezeigt oder 2) das Dropdown wird aktiviert und nichts passiert
Drücken Sie zweimal Alt + T, um den Cursor auf das Eingabefeld Suchen zurückzusetzen
Drücken Sie zweimal die Tabulatortaste, um zur Suche innerhalb der Dropdown-Liste zu gelangen, unabhängig davon, was passiert (da die vorherigen Schritte sicherstellen, dass die Optionen tatsächlich angezeigt werden!).
Drücken Sie zweimal den Abwärtspfeil, um "Arbeitsmappe" auszuwählen, und ENTER, um auszuwählen
Drücken Sie zweimal ALT + T, um den Cursor erneut auf das Suchfeld zurückzusetzen.
Hoffe, das hilft jemand anderem, der ein ähnliches Problem hat. Viele Googler sagten mir nur, dass es nicht möglich ist, "Suche in allen Arbeitsmappen" mit VBA vorauszuwählen, aber so funktioniert es!
Damit es mit verschiedenen Sprachen funktioniert, müssen Sie nach der Sprache suchen und mit CASE zur richtigen Routine mit den richtigen Verknüpfungen wechseln.