Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

API-Funktion GetSystemMetrics

Forumthread: API-Funktion GetSystemMetrics

API-Funktion GetSystemMetrics
14.08.2002 09:45:46
Philipp
Hallo zusammen,
habe ein Problem mit der API-Funktion GetSystemMetrics

Ich habe die Konstanten
SM_CYSCREEN as Long = 1
SM_CXSCREEN as Long = 0
SM_CXFULLSCREEN as Long = 16
SM_CYFULLSCRREN as Long = 17
definiert.

Bei GetSystemMetrics(SM_CXSCREEN) und auch bei GetSystemMetrics(SM_CXFULLSCREEN) wird 1024 zurückgegeben. Ich möchte die Bildschirmbreite und Höhe auslesen - ist bei mir aber nur 800x600. (100%ig breit gezogene Fenster haben eine Breite von ~795 Pixel). Wie kann ich die wirkliche Bildschirmgröße auslesen?

Gruß
Philipp

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: API-Funktion GetSystemMetrics
14.08.2002 11:51:11
L.Vira
Option Explicit
Private Declare Function GetSystemMetrics Lib "User32" _
(ByVal nIndex As Long) As Long
Dim h&, v&
Sub Auflösung()
h = GetSystemMetrics(0)
v = GetSystemMetrics(1)
MsgBox h & " X " & v
End Sub

Re: API-Funktion GetSystemMetrics
14.08.2002 12:24:11
Philipp
Hallo! Danke erstmal für den Tipp. Ich habe die msgBox mal ein wenig erweitert, so dass er mir über application.width bzw .height auch die aktuelle Fenstergröße angezeigt.

Bei maximiertem Excel-Fenster kam folgendes Ergebnis:

Auflösung: 1024 X 768
Fenstergröße: 774 X 561

Also ist die (nutzbare) Auflösung wohl doch nur 800 X 600 - nur wie kriege ich das raus?

Nein, ich kann nicht nachsehen, was in den Desktopeinstellungen steht, da ich dafür keine Rechte habe...

Gruß
Philipp

Anzeige
;
Anzeige

Infobox / Tutorial

API-Funktion GetSystemMetrics in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

Um die API-Funktion GetSystemMetrics in Excel VBA zu verwenden, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject" und wähle "Einfügen" > "Modul".

  3. Deklariere die Funktion: Füge den folgenden Code in das Modul ein:

    Option Explicit
    Private Declare Function GetSystemMetrics Lib "User32" _
    (ByVal nIndex As Long) As Long
  4. Konstanten definieren: Füge die Konstanten für die Bildschirmgrößen hinzu:

    Const SM_CXSCREEN As Long = 0
    Const SM_CYSCREEN As Long = 1
  5. Erstelle eine Subroutine: Verwende die Funktion GetSystemMetrics in einer Subroutine, um die Bildschirmbreite und -höhe abzurufen:

    Sub BildschirmAuflösung()
       Dim breite As Long
       Dim höhe As Long
       breite = GetSystemMetrics(SM_CXSCREEN)
       höhe = GetSystemMetrics(SM_CYSCREEN)
       MsgBox "Bildschirmauflösung: " & breite & " x " & höhe
    End Sub
  6. Führe die Subroutine aus: Drücke F5, um die Subroutine auszuführen und die Bildschirmauflösung in einer MessageBox anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: Falsche Bildschirmgröße wird angezeigt

    • Lösung: Vergewissere dich, dass du die richtigen Konstanten (SM_CXSCREEN und SM_CYSCREEN) verwendest und dass dein Excel-Fenster maximiert ist.
  • Fehler: Zugriff verweigert

    • Lösung: Wenn du keine Berechtigungen hast, um die Desktop-Einstellungen zu überprüfen, versuche, die Bildschirmauflösung über den Code zu ermitteln, anstatt manuell nachzusehen.

Alternative Methoden

Wenn du GetSystemMetrics nicht verwenden möchtest, kannst du auch die Application.Width und Application.Height Eigenschaften in VBA nutzen, um die aktuelle Fenstergröße zu ermitteln:

Sub Fenstergröße()
    MsgBox "Aktuelle Fenstergröße: " & Application.Width & " x " & Application.Height
End Sub

Diese Methode gibt dir die aktuelle Größe des Excel-Fensters zurück, was nützlich sein kann, wenn du die tatsächliche nutzbare Fläche ermitteln möchtest.


Praktische Beispiele

Hier ist ein Beispiel für ein Skript, das sowohl die Bildschirmauflösung als auch die Fenstergröße anzeigt:

Sub BildschirmUndFenstergröße()
    Dim breite As Long
    Dim höhe As Long
    Dim fensterBreite As Long
    Dim fensterHöhe As Long

    breite = GetSystemMetrics(SM_CXSCREEN)
    höhe = GetSystemMetrics(SM_CYSCREEN)
    fensterBreite = Application.Width
    fensterHöhe = Application.Height

    MsgBox "Bildschirmauflösung: " & breite & " x " & höhe & vbCrLf & _
           "Fenstergröße: " & fensterBreite & " x " & fensterHöhe
End Sub

Tipps für Profis

  • Verwende getsystemmetrics vba in Kombination mit anderen API-Funktionen, um noch detailliertere Informationen über die Systemumgebung zu erhalten.
  • Erstelle eine Fehlerbehandlung in deinem VBA-Code, um unerwartete Situationen abzufangen.
  • Experimentiere mit anderen Konstanten wie SM_CXFULLSCREEN oder SM_CYFULLSCREEN, um verschiedene Bildschirmmodi zu testen.

FAQ: Häufige Fragen

1. Wie kann ich die Bildschirmauflösung in Pixeln ermitteln?
Verwende die Funktion GetSystemMetrics mit den Konstanten SM_CXSCREEN und SM_CYSCREEN, um die Breite und Höhe in Pixeln zu erhalten.

2. Was mache ich, wenn die Werte nicht stimmen?
Stelle sicher, dass dein Excel-Fenster maximiert ist und überprüfe, ob du die richtigen Konstanten verwendest. In einigen Fällen kann die Bildschirmauflösung von den Windows-Einstellungen abweichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige