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

Forumthread: UserForm Grösse?

UserForm Grösse?
03.12.2005 23:15:09
Fuger
Hallo!
Probiere schon die längste Zeit herum mit der UserForm Anpassung. Es wird immer blöder!
Ich habe ein Netzwerk mit ca. 10 Bildschirmen (Flachbettbildschirme von 17 u. 19 Zoll, Röhrenbildschirme von 15 Zoll bis 22 Zoll und Laptops.
Als Betriebssysteme habe ich WIN 2000 u. WIN XP.
Ich brauche für diese Situation für mein Excel Programm mit UsrFormen ein Zoom Tool dass mit diesen Bedingungen umgehen kann. Es soll einfach auf allen Bildschirmen die UserForm automatisch die richtige Grösse bekommen wenn möglich den ganzen Bildschirm ausfüllen.
Kann mir da jemand von Euch helfen.
Bitte um Hilfe
Gerhard
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm Grösse?
04.12.2005 00:04:57
Ramses
Hallo
hier mal einen allgemeinen Code um die Bildschirmeinstellung auszulesen
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Public Enum ScreenArgs
    HORIZONTAL
    VERTIKAL
End Enum

Public Function ScreenResolution(HV As ScreenArgs) As Long
    If HV = 0 Or HV = 1 Then ScreenResolution = GetSystemMetrics(HV)
End Function

Sub Set_Zoom()
    'Die Werte hinter .Zoom den eigenen Bedürfnissen anpassen
    Select Case ScreenResolution(0)
        Case 1600
            ActiveWindow.Zoom = 75
        Case 1280
            ActiveWindow.Zoom = 75
        Case 1024
            ActiveWindow.Zoom = 75
        Case 800
            ActiveWindow.Zoom = 75
        Case 640
            ActiveWindow.Zoom = 75
    End Select
End Sub

Sub Choose_Table_depend_from_Screen()
    If ScreenResolution(0) = 1024 Then
        Worksheets("1024").Select
    Else
        Worksheets("800").Select
    End If
End Sub
Sub Zoom_It()
    'Passt den Zoom an die aktuelle Auswahl an
    Range("A:b").Select
    ActiveWindow.Zoom = True
End Sub

Sub print_Screeen()
    Debug.Print ScreenResolution(0)
    Debug.Print ScreenResolution(1)
End Sub

Ansonsten kannst du das mal ansehen
http://66.249.93.104/search?q=cache:2wgKUSSa3iAJ:forums.wugnet.com/office/-Placing-ftopict292611.html+Screenresolution+Pixel+EXCEL+VBA&hl=de
Dort steht eine exakte Lösung zu deinem Problem
Gruss Rainer
Anzeige
...oder alternativ...
04.12.2005 00:09:02
Ramses
Hallo
die einfachste Variante:
Option Explicit

Private Sub CommandButton1_Click()
Application.WindowState = xlMaximized
With Me
.Top = Application.Top
.Left = Application.Left
.Height = Application.Height
.Width = Application.Width
End With
End Sub

... wenn sowieso alles im Vollbild laufen soll
Gruss Rainer
Anzeige
AW: ...oder alternativ...
05.12.2005 10:09:35
Gerhard
Hallo Rainer!
Herzlicen Dank für deine Hilfe.
Funktioniert von allem was ich bis jetzt probiert habe am besten und ist am einfachsten geschrieben! Aber hat noch einen Schönheitsfehler!
Habe folgenden Code jetzt in der UserForm

Private Sub UserForm_Activate()
Select Case Application.WindowState
Case xlMaximized
Me.Height = Application.Height - 5 'Korrrektur für Taskleiste = 5
Me.Width = Application.Width - 5   'Korrektur  schmäler = 5
Me.Left = 0
Me.Top = 0
End Select
End Sub

Das bringt die UserForm auf die Bildschirmgrösse aber die Elemente in der UserForm bleiben davon unberührt. Jetzt ist es so dass auf den meisten Bildschirmen die UserForm nach rechts vergrössert wird die Element wie Text od Listbox u. Schaltflächen bleiben gleich. ist das möglich dass die User Form nich nur recht grösser wird sonder links und rechts gleich, so das die Elemente in der UserForm in die Bildschirmmitte rücken.
Habe mir das auch auf den Link angeschaut denn Du mir mitgeschickt hast, funktioniert aber auch nicht anders.
Gruss
Gerhard
Anzeige
AW: ...oder alternativ...
05.12.2005 12:04:54
Ramses
Hallo
Dann bleibt nur noch die ZOOM-Funktion für die UF.
Die musst du dann allerdings abhängig von der Bildschirmgrösse im Verhältnis zur normalen Grösse berechnen
Gruss Rainer
AW: ...oder alternativ...
05.12.2005 17:13:22
Gerhard
Hallo Rainer!
Hab jetzt folgendes gemacht:

Private Sub UserForm_Activate()
Dim LoWidth  As Long        ' Größe der Userform laut Programm
Dim LoHeight As Long        ' der Userform laut Programm
Dim UserWidth As Long
Dim UserHeight As Long
LoWidth = 1280
LoHeight = 1024
UserWidth = 768
UserHeight = 570.6
MsgBox "UserForm  " & Me.Width
MsgBox "UserForm  " & Me.Height
MsgBox "Width Erstellungsgrösse  " & LoWidth
MsgBox "Height Erstellungsgrösse " & LoHeight
Dim SystemW As Long
Dim SystemH As Long
SystemW = GetSystemMetrics(SM_CXSCREEN)
SystemH = GetSystemMetrics(SM_CYSCREEN)
MsgBox "SWidth  " & SystemW
MsgBox "SHeight  " & SystemH
Select Case Application.WindowState
Case xlMaximized
Me.Height = Application.Height - 5
Me.Width = Application.Width - 6
Me.Left = 0
Me.Top = 0
Me.Zoom = GetSystemMetrics(SM_CXSCREEN) / (LoHeight) * 100
End Select
End Sub

Funktioniert gut nur die Berechnung glaube ich ist noch nicht ganz ok.
Und das Problem mit den Elementen in der UserForm ist damit auch nicht gelöst
Die werden nicht zentriert am Bildschirm angezeigt.
Hänge eine Beispiel Datei an.
https://www.herber.de/bbs/user/28977.xls
Gruss
Gerhard
Anzeige
AW: ...oder ganz anders!
06.12.2005 10:45:32
Gerhard
Hallo Rainer!
Habe jetzt eine ganz andere Variante die super funktioniert bei jeder Auflösung.
Ganz einfach und passt genau; ganzer Bildschirm und alles in der Mitte!

Private Sub UserForm_Initialize()
'Bildschirmanpassung der UserForm
Dim MyControl As Object
For Each MyControl In Controls
MyControl.Top = MyControl.Top * Application.Height / UserForm1.Height
MyControl.Left = MyControl.Left * Application.Width / UserForm1.Width
MyControl.Width = MyControl.Width * Application.Width / UserForm1.Width
MyControl.Height = MyControl.Height * Application.Height / UserForm1.Height
Next
With UserForm1
.Height = Application.Height - 3
.Width = Application.Width - 4
Me.Left = 0
Me.Top = 0
End With
End Sub

Danke nochmals für deine Bemühungen
Gruss
Gerhard
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

UserForm-Größe in Excel anpassen


Schritt-für-Schritt-Anleitung

Um die Größe Deiner UserForm in Excel optimal an verschiedene Bildschirmgrößen anzupassen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Erstelle eine UserForm: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei)“, wähle „Einfügen“ und dann „UserForm“.

  3. Füge einen Button hinzu: Ziehe einen CommandButton auf die UserForm.

  4. Füge den folgenden Code in das Code-Fenster der UserForm ein:

    Private Sub CommandButton1_Click()
       Application.WindowState = xlMaximized
       With Me
           .Top = Application.Top
           .Left = Application.Left
           .Height = Application.Height
           .Width = Application.Width
       End With
    End Sub
  5. Verwende den Code für die Anpassung der Steuerelemente:

    Private Sub UserForm_Initialize()
       Dim MyControl As Object
       For Each MyControl In Controls
           MyControl.Top = MyControl.Top * Application.Height / UserForm1.Height
           MyControl.Left = MyControl.Left * Application.Width / UserForm1.Width
           MyControl.Width = MyControl.Width * Application.Width / UserForm1.Width
           MyControl.Height = MyControl.Height * Application.Height / UserForm1.Height
       Next
       With UserForm1
           .Height = Application.Height - 3
           .Width = Application.Width - 4
           Me.Left = 0
           Me.Top = 0
       End With
    End Sub
  6. Teste die UserForm: Starte die UserForm, um zu sehen, wie sie sich an die Bildschirmgröße anpasst.


Häufige Fehler und Lösungen

  • Fehler: UserForm wird nicht zentriert
    Lösung: Stelle sicher, dass die Breite und Höhe der Steuerelemente in der UserForm_Initialize-Prozedur korrekt angepasst werden.

  • Fehler: Elemente in der UserForm bleiben gleich groß
    Lösung: Verwende die oben genannten Anpassungscodes, um die Größe der Steuerelemente dynamisch zu ändern.


Alternative Methoden

Eine alternative Methode zur Anpassung der UserForm ist die Verwendung der Zoom-Eigenschaft. Hier ist ein Beispiel:

Private Sub UserForm_Activate()
    Me.Zoom = 100 * Application.Height / 570
End Sub

Diese Methode passt den Zoom der UserForm an die Bildschirmgröße an, sodass sie immer optimal dargestellt wird.


Praktische Beispiele

Hier sind einige praktische Beispiele, die Du in Deinen Projekten verwenden kannst:

  1. Zentrierte UserForm:

    Private Sub UserForm_Activate()
       Me.Left = (Application.Width - Me.Width) / 2
       Me.Top = (Application.Height - Me.Height) / 2
    End Sub
  2. Vollbild-Anpassung:

    Private Sub UserForm_Initialize()
       Me.WindowState = xlMaximized
    End Sub

Tipps für Profis

  • Verwende die GetSystemMetrics-Funktion: Diese Funktion kann Dir helfen, die tatsächlichen Bildschirmmaße zu ermitteln und die UserForm entsprechend anzupassen.
  • Berücksichtige die Taskleiste: Wenn Deine UserForm im Vollbildmodus läuft, reduziere die Höhe und Breite um einige Pixel, um die Taskleiste zu berücksichtigen.

FAQ: Häufige Fragen

1. Wie kann ich die UserForm dauerhaft maximieren?
Du kannst den Code Application.WindowState = xlMaximized in der UserForm_Initialize-Prozedur verwenden.

2. Warum funktionieren meine Steuerelemente nicht richtig?
Stelle sicher, dass Du die Größenanpassung in der UserForm_Initialize-Prozedur korrekt implementiert hast. Prüfe, ob die Berechnungen für die Steuerelemente stimmen.

3. Welche Excel-Version benötige ich für diese Techniken?
Die beschriebenen Techniken funktionieren in Excel 2000, XP und neueren Versionen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige