V makrech jazyka Excel VBA existuje mnoho způsobů, jak upozornit uživatele na jakékoli události nebo výsledek provádění operací. Jednou z nejběžnějších metod je použití vyskakovacích oken zpráv pomocí funkce MsgBox.
Někdy je však nutné získat souřadnice daného okna pro další zpracování. Na první pohled se to může zdát nemožné, protože MsgBox je vestavěná funkce, která neposkytuje možnost získat své souřadnice. Pomocí některých triků se to však dá realizovat.
V tomto článku se podíváme na několik způsobů, jak získat souřadnice okna MsgBox při jeho zobrazení, a podíváme se na příklady jejich použití. Také se podíváme na to, jak změnit výchozí pozici okna MsgBox.
Co je VBA Excel?
Použití VBA v Excelu vám umožňuje automatizovat rutinní úkoly, zjednodušit práci s velkým množstvím dat a vytvářet interaktivní aplikace pro pohodlnější práci s tabulkami, grafy a dalšími objekty.
Některé funkce VBA Excel:
- Programování maker: VBA vám umožňuje nahrávat a spouštět makra, která automaticky provádějí sekvenci akcí v Excelu.
- Zpracování dat: pomocí VBA lze číst, zpracovávat a analyzovat data v tabulkách, používat filtry, třídit a mazat záznamy.
- Vytváření vlastních funkcí: VBA vám umožňuje vytvářet vlastní funkce, které lze použít ve vzorcích aplikace Excel.
- Interakce s jinými aplikacemi: VBA poskytuje možnost sdílení dat mezi Excelem a dalšími aplikacemi, jako je Word, PowerPoint a Access.
- Vytváření uživatelských rozhraní: VBA vám umožňuje vytvářet vlastní tvary, tlačítka a další prvky rozhraní pro pohodlnější interakci s daty.
Velmi užitečný a výkonný nástroj, VBA Excel umožňuje zlepšit efektivitu práce s daty, snížit rutinní úkoly a vytvořit interaktivní a pohodlné nástroje pro analýzu informací v Excelu.
Jak získám souřadnice MsgBox VBA Excel?
Při programování na VBA v Excelu je někdy nutné znát souřadnice MsgBox, aby se následné kroky v kódu týkající se něj uskutečnily na správném místě. K tomu lze použít speciální funkce, které umožňují získat nejen souřadnice samotného Msgboxu, ale také jeho šířku a výšku.
Jedním ze způsobů, jak získat souřadnice MsgBox v aplikaci VBA Excel, je použití funkce API, pomocí které můžete získat informace o poloze okna podle jeho deskriptoru. Chcete-li to provést, musíte deklarovat použitou funkci pomocí klíčového slova Declare a určit její typ vrácené hodnoty a argumenty.
Příklad:
Private deklarovat funkce GetWindowRect Lib "user32" (ByVal hwnd tak dlouho, lpRect jako RECT) tak dlouho
Soukromý Typ RECT
Vlevo Tak Dlouho
Nahoru Tak Dlouho
Správně Tak Dlouho
Spodní Tak Dlouho
Typ Konce
Sub GetMsgBoxCoordinates()
Dim hWnd tak dlouho
Dim rect jako RECT
Dim x jako celé číslo
Dim y jako celé číslo
Dim šířka jako celé číslo
Dim výška jako celé číslo
"MsgBox"
hWnd = FindWindow("ThunderDFrame", vbNullString)
'Získání souřadnic, šířky a výšky okna MsgBox
GetWindowRect hWnd, rect
x = rect.Left
y = rect.Top
width = rect.Right - rect.Left
height = rect.Bottom - rect.Top
'Výstup výsledků v MsgBox
MsgBox" souřadnice MsgBox: "& vbcrlf & "X:" & x & vbcrlf & "Y:" & y & vbcrlf & "šířka:" & width & vbCrLf & "výška:" & height
End Sub
Tento příklad oznamuje funkci getwindowrect z knihovny user32.dll, který umožňuje získat pravoúhlé souřadnice okna dané jeho deskriptorem. Poté se vytvoří vlastní datový typ RECT, který deklaruje pole pro ukládání souřadnic. Postup GetMsgBoxCoordinates oznamuje proměnné pro uložení deskriptoru okna MsgBox, objektu RECT a souřadnic, šířky a výšky okna MsgBox. Dále pomocí funkce FindWindow najdeme deskriptor okna MsgBox a předáme jej příslušnému argumentu funkce getwindowrect, jejíž výsledek zapíšeme do objektu RECT. Poté extrahujeme požadované souřadnice z objektu RECT a výsledky zobrazíme v MsgBox.
Pomocí funkce GETWINDOWRECT API je tedy možné snadno získat souřadnice MsgBox v aplikaci VBA Excel a použít je v následujících krocích v kódu.
Získání souřadnic X
Chcete-li získat souřadnici X okna MsgBox, můžete použít funkci getasynckeystate, která vám umožní získat stav klávesy v době volání funkce.
Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As IntegerSub GetMsgBoxXCoordinate()Dim x As IntegerMsgBox "Пример текста сообщения"x = MsgBoxWindowX()MsgBox "Координата X окна MsgBox: " & xEnd SubFunction MsgBoxWindowX() As IntegerDim i As LongFor i = 1 To 255If GetAsyncKeyState(i) <> 0 ThenMsgBoxWindowX = Application.Left(Application.CommandBars("MsgBox Bar").Left, 1) + 1Exit FunctionEnd IfNext iEnd Function
V tomto příkladu se při volání funkce getmsgboxxxcoordinate () zobrazí okno MsgBox s textem "příklad textu zprávy". Po zavření okna MsgBox se zobrazí zpráva s souřadnicí x tohoto okna.
Funkce MsgBoxWindowX () určuje souřadnici X okna MsgBox pomocí cyklu, který kontroluje stav každé klávesy od 1 do 255. Pokud stisknete klávesu, pak přes aplikaci.CommandBars("MsgBox Bar").Left je definován souřadnicí x okna MsgBox.
Tato technika umožňuje získat souřadnici X okna MsgBox v okamžiku stisknutí klávesy, což může být užitečné při interakci uživatele s oknem MsgBox.
Získání souřadnic Y
Chcete-li získat souřadnice Y, nebo svislou polohu, MsgBox v VBA Excel, můžete použít vlastnost Top. Tato vlastnost vrací nebo určuje umístění horního okraje objektu na tvaru nebo v okně.
Chcete-li získat souřadnici y MsgBox, musíte použít následující kód:
Dim yPosition As Integer yPosition = MsgBox ("text zprávy",," záhlaví okna") yPosition = Application.Vbe.Top
V tomto případě poslední řádek kódu vrátí souřadnici Y v pixelech horního okraje MsgBox na obrazovce.
Získání souřadnice Y může být užitečné například pro automatické umístění jiného prvku rozhraní nebo pro provádění určitých akcí založených na vertikální poloze MsgBox.