Ho avuto un problema simile. Ho un pulsante in una cartella di lavoro. Se si fa clic sul pulsante Voglio che Excel apra la finestra di dialogo Trova con l'opzione "Cerca in tutte le cartelle di lavoro" già selezionata anziché l'impostazione predefinita "all'interno del foglio", qualunque cosa accada.
Inoltre, volevo che il pulsante funzionasse a prescindere che le opzioni fossero nascoste o mostrate e che qualcuno avesse apportato modifiche manualmente. Questo è complicato perché Excel per impostazione predefinita non mostra le opzioni all'avvio ma le ricorda e le mostra nuovamente la volta successiva se qualcuno le visualizzava prima.
Per assicurarsi che i tasti premuti abbiano bisogno di una serie di tasti che imposta l'impostazione indipendentemente dallo stato iniziale. Ci sono voluti un po 'di armeggiare, ma ne ho trovato uno che funziona.
Ecco il mio codice per la versione inglese di Excel, per altre lingue devi cambiare le chiavi di conseguenza.
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
Puoi provarlo manualmente:
Premi CTRL + F per la finestra di dialogo Trova Premi TAB 15 volte in modo da atterrare su "Opzioni" o sul menu a discesa "Cerca all'interno".
Premere spazio e uno dei due
1) Vengono visualizzate le opzioni o 2) il menu a discesa viene attivato e non accade nulla
Premere Alt + T due volte per ripristinare il cursore sulla casella di input Trova
Premi TAB due volte, ti porterà alla ricerca all'interno del menu a discesa, non importa quale (poiché i passaggi precedenti assicurano che le opzioni siano effettivamente visualizzate!)
Premere due volte la freccia GIÙ per selezionare "Cartella di lavoro" e INVIO per selezionare
Premere ALT + T due volte per ripristinare nuovamente il cursore sulla casella di input Trova.
Spero che questo aiuti qualcun altro che ha un problema simile. Molti googling mi hanno detto solo che non è possibile preselezionare "cerca in tutte le cartelle di lavoro" con VBA, ma funziona in questo modo!
Per farlo funzionare con lingue diverse, è necessario controllare la lingua e utilizzare CASE per passare alla routine corretta con le scorciatoie appropriate.