Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
704to708
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
704to708
704to708
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige