Making Modal dialogbokser vises foran arbeidsbøker

July 10  by Eliza

Don har en tendens til å arbeide på to skjermer og ha flere arbeidsbøker åpne på samme forekomst av Excel. Han maksimerer også sine vinduer. (Han beskriver seg selv som en "se alt i ett skudd" jævel.) Nylig, når Don har gjort noe som åpner en modal dialogboks åpnes boksen bak arbeidsboken, som stopper ham fra å se dialogboksen eller i samspill med det. Han lurer på om det er en måte han kan få modale dialogbokser vises foran arbeidsboken.

Før du svarer, bør det påpekes at dialogbokser kan være av to typer: modal og modal. En modal dialogboks er en som er nesten uavhengig av programmet som den tilhører. Et godt eksempel på en slik dialogboks er Søk og erstatt dialogboksen. På den annen side må en modal dialogboks (de som Don er å ha problemer med) bli besvart eller lukket før du kan fortsette å jobbe med programmet som dialogboksen tilhører.

Det er uklart om Don problem er med modale dialogbokser generert av Excel selv eller hvis de er dialogbokser som genereres av makroer over hvilke Don har kontroll. Hvis det er den tidligere, så det er svært lite som kan gjøres; den lagdelte plassering i dialogboksen er fullstendig kontrollert av programmet (og programmerere som skapte det). Med andre ord, ville det ta en kodeendring å gjøre dialogboksen dukket opp lagvis oppå arbeidsboken i stedet for under den.

Forstå at det er et scenario der problemet ikke kan skyldes en Excel programmering problem. Det kan være at du har en tredjeparts applikasjon som kjører på systemet som påvirker lagdeling av dialogbokser og morselskap vinduer. Den typiske skyldige i dette scenariet er minneresident utiltities som tvinger seg selv til å alltid vises på toppen av alt annet er på skjermen. Den eneste måten å se om dette er den skyldige er å deaktivere lasting av slike verktøy, og innen Excel, viser en modal dialogboks. Hvis atferden tilbake til normalt, du da vite kilden til problemet.

Hvis det er tilfelle, men at dialogboksen er generert av en makro Don utviklet så løsningen er å justere kode som genererer sperrende dialogboks. (I Excel makroer disse typer dialogbokser er vanligvis implementert gjennom userforms.).

Problemet med brukerskjema plassering i flere skjerm scenarier blir overvunnet ved den manuelle anbringelse av Userform innenfor dens initiering kode. For eksempel kan du bruke litt variasjon på dette:

Last UserForm1
UserForm1.StartUpPosition = 0
UserForm1.Top = Application.Top + 25
UserForm1.Left = Application.Left + 25
UserForm1.Show

Du må kanskje eksperimentere med plassering, men å sette den StartUpPosition eiendom til 0 er nødvendig for at VBA vet du ønsker å manuelt plassering Userform.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (13349) gjelder for Microsoft Excel 2007, 2010, og 2013.