Velikost obrazovky v aplikaci VBA Excel může být důležitým parametrem při navrhování Maker a programů, zvláště pokud je nutné přizpůsobit uživatelské rozhraní různým rozlišením a proporcím obrazovky. V tomto článku se podíváme na různé způsoby, jak získat velikost obrazovky VBA Excelu a možnosti jeho použití.
Jedním z nejjednodušších způsobů, jak získat velikost obrazovky VBA Excelu, je použít objekt aplikace a jeho vlastnost Width a Height. Tyto vlastnosti vracejí šířku a výšku okna aplikace v pixelech. Je však třeba vzít v úvahu, že tyto hodnoty nemusí být k dispozici, pokud je aplikace v režimu celé obrazovky nebo je minimalizována.
Dalším způsobem, jak získat velikost obrazovky v aplikaci VBA Excel, je použití objektu Screen a jeho vlastností WorkingAreaWidth a WorkingAreaHeight. Tyto vlastnosti vracejí velikost okna úloh (pracovní plochy) v pixelech, s výjimkou hlavního panelu a dalších prvků operačního systému. To může být zvláště užitečné při navrhování uživatelského rozhraní, aby se zohlednil dostupný prostor pro umístění ovládacích prvků.
Bez ohledu na způsob získání může být znalost velikosti obrazovky VBA Excelu užitečná při vytváření adaptivního designu, určování pozic a velikostí objektů, nastavení optimálních možností zobrazení a dalších. To umožňuje vytvářet uživatelsky přívětivější a efektivnější uživatelská rozhraní.
Získání velikosti obrazovky VBA Excel
V programovacím jazyce VBA (Visual Basic for Applications) lze k získání velikosti obrazovky počítače použít vestavěné funkce. Velikost obrazovky může být potřebná k určení optimálního umístění prvků rozhraní nebo k přizpůsobení aplikace různým rozlišením obrazovek.
Existují různé způsoby, jak získat velikost obrazovky VBA Excel:
| Metoda | Popis |
|---|---|
| Application.Width | Vrací šířku pracovní plochy aplikace Excel, která odpovídá velikosti obrazovky. |
| Application.Height | Vrací výšku pracovní plochy aplikace Excel, která odpovídá velikosti obrazovky. |
| Application.Width / Application.Zoom | Vrací šířku obrazovky s ohledem na Zoom. |
| Application.Height / Application.Zoom | Vrací výšku obrazovky s ohledem na Zoom. |
| Application.Width / Application.UsableWidth | Vrací šířku dostupné oblasti obrazovky bez ohledu na rámečky a panely nástrojů. |
| Application.Height / Application.UsableHeight | Vrátí výšku dostupné oblasti obrazovky bez ohledu na rámečky a panely nástrojů. |
Chcete-li získat velikost obrazovky, můžete použít požadovanou metodu a přiřadit její výsledek proměnnou. Například:
Dim screenWidth As LongDim screenHeight As LongscreenWidth = Application.WidthscreenHeight = Application.Height
Výslednou hodnotu lze použít k nastavení velikostí prvků rozhraní nebo k provedení potřebných kroků v závislosti na velikosti obrazovky.
Použití velikosti obrazovky k automatickému zoomu
K tomu lze použít následující kód:
Sub AutoScale() With ActiveSheet .Cells.Select .Cells.EntireColumn.AutoFit .Cells.EntireRow.AutoFit .Parent.Zoom = FitToWindow(.Parent) End With End Sub Function FitToWindow (workbook As Workbook) As Integer Dim widthRatio As Double Dime heightRatio as Double ' určujeme poměr stran obrazovky widthRatio = workbook.Parent.Width / Screen.Width heightRatio = workbook.Parent.Height / Screen.Height ' vyberte nejmenší poměr pro škálování If widthratio < heightRatio Then FitToWindow = widthRatio * 100 Else FitToWindow = heightRatio * 100 End If end Function
Tento kód bude škálovat obsah aktivního listu tak, aby odpovídal velikosti okna aplikace Excel. K určení poměru stran obrazovky používáme vlastnosti šířky a výšky okna aplikace Excel a vlastnosti šířky a výšky obrazovky. Poté se vybere nejmenší z těchto poměrů a hodnota škálování je nastavena v procentech.
Tento přístup je ideální pro vytváření rozhraní uživatelského rozhraní, která budou vypadat dobře na různých velikostech obrazovky a rozlišení. Při každém spuštění makra "AutoScale" se obsah automaticky škáluje podle velikosti okna aplikace Excel.
Poznámka: Všimněte si, že kód škáluje pouze aktivní list. Pokud potřebujete škálovat všechny listy v knize, můžete povolit další cyklus a použít postup "AutoScale" na každý list.
Vytvoření adaptivního rozhraní na základě velikosti obrazovky
Při vývoji programů na VBA v Excelu je zvláště důležité vytvořit adaptivní rozhraní, které bude správně fungovat na různých velikostech obrazovek. Velikost obrazovky se může výrazně lišit, od malých monitorů na noteboocích až po velké displeje na pracovních stanicích.
K vytvoření adaptivního rozhraní lze použít různé metody. Zde je několik z nich:
- Určení velikosti obrazovky pomocí VBA. V aplikaci Excel lze použít funkci Application.Width a Application.Height pro šířku a výšku obrazovky. Na základě získaných dat je možné přizpůsobit rozhraní programu, například změnit velikost oken, tlačítek nebo ovládacích prvků.
- Použití absolutních nebo relativních souřadnic při vytváření objektů rozhraní. K tomu lze použít vlastnosti Top , Left, Width a Height . Například místo pevně dané polohy objektu lze použít relativní souřadnice nebo jej přivázat k okraji obrazovky.
- Použití podmíněných operátorů ke změně vizuálního designu rozhraní v závislosti na velikosti obrazovky. Můžete například změnit písmo, rozměry prvků nebo je různě umístit na malou a velkou obrazovku.
- Použití speciálních kontrol nebo knihoven k vytvoření adaptivního rozhraní. Některé kontroly a knihovny vám umožňují automaticky přizpůsobit rozhraní programu různým rozměrům obrazovky, což značně zjednodušuje proces vývoje.
Výběr metody závisí na konkrétních požadavcích a možnostech projektu a také na zkušenostech programátora. Je důležité si uvědomit, že vývoj adaptivního rozhraní je důležitou součástí procesu vytváření programů na VBA, který umožňuje zlepšit uživatelskou zkušenost a zajistit, aby aplikace fungovala co nejlépe na různých zařízeních.
Automatická změna velikosti oken při změně obrazovky
Při práci s VBA Excel je obvykle vyžadováno, aby okna a položky na obrazovce automaticky měnily rozměry při změně velikosti obrazovky. K tomu lze využít několika způsoby.
1. Použití události Workbook_WindowResize.
Tato událost se spustí, když se změní velikost okna pracovního sešitu. V obsluze události můžete zadat požadované akce pro změnu velikosti jiných oken nebo prvků.
Private Sub Workbook_WindowResize(ByVal Wn As Excel.Window)' Ваш код для изменения размера окон и элементовEnd Sub
2. Využití objektu Application.
V objektu je událost WindowResize, který se spustí, když se změní velikost okna aplikace Excel. V obsluze události můžete zadat akce pro změnu velikosti požadovaných oken nebo prvků.
Private Sub Workbook_Open()Application.WindowResize = "ResizeWindows"End SubSub ResizeWindows(ByVal Target As Excel.Window)' Ваш код для изменения размера окон и элементовEnd Sub
3. Použití funkce GetSystemMetrics.
Tato funkce se používá k získání informací o parametrech systému, včetně velikostí obrazovky. Tuto funkci lze použít k propojení velikostí oken nebo prvků s aktuální velikostí obrazovky.
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As LongSub ResizeWindows()Dim screenWidth As LongDim screenHeight As LongscreenWidth = GetSystemMetrics(0)screenHeight = GetSystemMetrics(1)' Ваш код для изменения размера окон и элементов на основе screenWidth и screenHeightEnd Sub
Pomocí těchto způsobů můžete automaticky změnit velikost oken a položek v aplikaci VBA Excel tak, aby odpovídaly aktuální velikosti obrazovky.
Použití velikosti obrazovky u podmíněných operátorů
Velikost obrazovky VBA Excel lze použít u podmíněných operátorů k rozhodování na základě dostupného prostoru na obrazovce. Můžete například použít velikost obrazovky k určení, jak zobrazit data v tabulce nebo jak umístit ovládací prvky do formuláře.
Chcete-li získat velikost obrazovky v aplikaci VBA Excel, můžete použít vlastnost aplikace.Width a Application.Height . Tyto vlastnosti vracejí šířku a výšku obrazovky v pixelech.
Příklad použití velikosti obrazovky u podmíněných operátorů může vypadat následovně:
| Podmínka | Akce |
|---|---|
| Application.Width < 1024 | Zobrazit data v úzkém formátu |
| Application.Height < 768 | Uspořádejte ovládací prvky v kompaktní podobě |
| Application.Width >= 1024 And Application.Height >= 768 | Zobrazit data v širokém formátu |
V tomto příkladu, pokud je šířka obrazovky menší než 1 024 pixelů, budou data zobrazena v úzkém formátu. Pokud je výška obrazovky menší než 768 pixelů, ovládací prvky budou uspořádány kompaktně. Pokud je šířka i výška obrazovky větší nebo rovna 1024 a 768 pixelům, budou se Data zobrazovat v širokém formátu.
Použití velikosti obrazovky u podmíněných operátorů umožňuje přizpůsobit rozhraní aplikace různým rozměrům obrazovek, což zlepšuje použitelnost pro uživatele.
Změna velikosti pracovní plochy podle obrazovky
Při práci s VBA v Excelu může být někdy nutné změnit velikost pracovní plochy na základě velikosti obrazovky uživatele. V tomto článku se podíváme na několik způsobů, které vám umožní automaticky změnit velikost okna aplikace Excel a pracovní plochy podle rozlišení obrazovky.
Metoda 1: Použití vlastnosti aplikace
Chcete-li změnit velikost pracovního prostoru, můžete použít vlastnost Application.Width a Application.Height, které umožňují získat aktuální hodnoty šířky a výšky okna aplikace Excel.
Sub ChangeWindowSize() Dim screenWidth As Integer Dim screenHeight As Integer screenWidth = Application.Width / Application.Zoom screenHeight = Application.Height / Application.Zoom 'definujeme nové hodnoty šířky a výšky okna Dim newWidth As Integer Dim newHeight As Integer If screenWidth > 1024 Then 'nastavíme novou hodnotu šířky, pokud je obrazovka širší než 1024 pixelů newWidth = 1024 Else 'nastavíme novou hodnotu šířky, pokud je obrazovka již newWidth = screenWidth End If screenHeight > 768 Then 'nastavíme novou hodnotu výšky, pokud je obrazovka vyšší než 768 pixelů newheight = 768 Else 'nastavíme novou hodnotu výšky, pokud je obrazovka již newHeight = screenHeight End If' změníme velikost okna aplikace Excel a pracovního prostoru aplikace.Width = newWidth * Application.Zoom Application.Height = newHeight * Application.Zoom End Sub
Metoda 2: pomocí vlastností obrazovky
Dalším způsobem, jak změnit velikost obrazovky v aplikaci VBA Excel, je použití vlastností obrazovky.Width a Screen.Height. Tyto vlastnosti umožňují získat šířku a výšku obrazovky uživatele.
Sub ChangeWindowSize() Dim screenWidth As Integer Dim screenHeight As Integer screenWidth = Screen.Width screenHeight = Screen.Height 'definujeme nové hodnoty šířky a výšky okna Dim newWidth As Integer Dim newHeight As Integer If screenWidth > 1024 Then 'nastavíme novou hodnotu šířky, pokud je obrazovka širší než 1024 pixelů newWidth = 1024 Else 'nastavíme novou hodnotu šířky, pokud je obrazovka již newWidth = screenWidth End If screenHeight > 768 Then 'nastavíme novou hodnotu výšky, pokud je obrazovka vyšší než 768 pixelů newheight = 768 Else 'nastavíme novou hodnotu výšky, pokud je obrazovka již newHeight = screenHeight End If' změníme velikost okna aplikace Excel a pracovního prostoru aplikace.Width = newWidth * Application.Zoom Application.Height = newHeight * Application.Zoom End Sub
Závěr
Změna velikosti pracovní plochy v závislosti na obrazovce uživatele může být užitečná při navrhování Maker VBA v Excelu. To umožňuje přizpůsobit rozhraní pro pohodlnější a efektivnější použití programu. Pomocí výše uvedených způsobů budete moci automaticky měnit velikost okna a pracovní plochy podle rozlišení obrazovky.