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

Forumthread: UserForm mit Scrollbars

UserForm mit Scrollbars
24.04.2006 13:22:58
Mabus
Jetzt habe ich 1 Stunde lang im Netz gesucht: Vieles gefunden aber nicht das was ich suche...
Ich habe eine Userform programmiert in der über die gesamt Seite Werte in Text-Formen angezeigt werden. Die UserForm hat eine Höhe von 655.
Jetzt soll diese UserForm auch anderen Anwendern zur Verfügung gestellt werden. Da ich davon ausgehen kann, daß nicht alle Anwender die gleiche Bildschirm-Auflösung und/oder - Größe haben, möchte ich die UserForm mit Scrollbars versehen.
Über die Eigenschaft "KeepScrollBarsVisible" und "ScrollBars: 3" werden mir die Scrollbars auch angezeigt. Es findet sich aber kein "Schieber" um nach oben odet unten zu scrollen...
Wer kann mir bitte helfen ? Danke !
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: UserForm mit Scrollbars
24.04.2006 19:02:20
Ralf
Hi Mabus,
auch wenn Du verzweifelt bist, Anrede und ein kurzer Gruss gehören zum guten Umgangston.
Zu Deinem Problem. Wenn der Max-Wert der Scrollbar kleiner gleich Formmaße ist, was soll dann gescrollt werden? Im Übrigen halte ich Deine Lösung für ungünstig. Was, wenn der Nutzer eine noch kleinere Auflösung als Du benutzt? Dann sieht er evtl. nicht einmal die Scrollbalken. Und dann...?
Du musst also sowieso die Bildschirmauflösung ermitteln. Das machst Du so. Folgenden Code in ein Allgemeines Modul.


Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As LongAs Long
    'Konstanten für GetSystemMetrics
     Const Breite = 0        ' Konstante für Bildschirmbreite
     Const Hoehe = 1        ' Konstante für Bildschirmhöhe
   Public hoch As Long, breit As Long
Public Sub Ermitteln()
    breit = GetSystemMetrics(Hoehe)
    hoch = GetSystemMetrics(Breite)
'    MsgBox "Ihre Bildschirmauflösung ist: " & hoch & " mal " & breit
End Sub

In das Activate Ereignis der Form (noch anzupassen):


Static Start As Boolean
If Not Start Then
Ermitteln 'Aufruf obiger Funktion
Dim faktor As Double
If hoch = 640 Then
faktor = 0.8
ElseIf hoch = 720 Then
faktor = 0.9
ElseIf hoch = 848 Then
faktor = 1.06
ElseIf hoch = 1024 Then
faktor = 1.28
Else
faktor = 1
End If
Dim f1#
If breit = 480 Then
f1 = 0.8
ElseIf breit = 576 Then
f1 = 0.96
ElseIf breit = 768 Then
f1 = 1.28
ElseIf breit = 768 Then
Else
f1 = 1
End If
Dim x As Byte
frmName.Height = frmName.Height * faktor
frmName.Width = frmName.Width * f1
Dim obj As Control
For Each obj In Controls
'    MsgBox obj.Name
    obj.Left = obj.Left * f1
    obj.Top = obj.Top * faktor
    obj.Width = obj.Width * f1
If Left(obj.Name, 3) = "cmd" Then GoTo weiter  'Or Left(obj.Name, 2) = "lb"
    obj.Height = obj.Height * faktor
weiter:
Next
End If


Ist zwar nicht die optimalste aber wenigstens eine brauchbare Lösung auf die Schnelle.
Ciao, Ralf
Anzeige
AW: UserForm mit Scrollbars
26.04.2006 15:27:21
Mabus
Sorry Ralf.
Ist sonst nicht meine Art nicht zu grüßen.
Es drängte nur die Zeit...
Danke für die Lösung !
;
Anzeige
Anzeige

Infobox / Tutorial

UserForm mit Scrollbars in Excel VBA


Schritt-für-Schritt-Anleitung

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

  2. Erstelle eine neue UserForm: Klicke mit der rechten Maustaste auf dein Projekt im Projekt-Explorer, wähle "Einfügen" und dann "UserForm".

  3. Füge eine Scrollbar hinzu: Ziehe eine Scrollbar aus der Toolbox auf die UserForm. Stelle sicher, dass die Eigenschaften ScrollBars auf 3 - fmScrollBarsVertical (für vertikale Scrollbars) und KeepScrollBarsVisible auf True gesetzt sind.

  4. Implementiere den Code: Füge den folgenden Code in das allgemeine Modul ein, um die Bildschirmauflösung zu ermitteln und die Größe der UserForm anzupassen:

    Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
    
    Const Breite = 0 ' Konstante für Bildschirmbreite
    Const Hoehe = 1  ' Konstante für Bildschirmhöhe
    
    Public hoch As Long, breit As Long
    
    Public Sub Ermitteln()
       breit = GetSystemMetrics(Hoehe)
       hoch = GetSystemMetrics(Breite)
    End Sub
  5. Nutze das Activate-Ereignis: In der UserForm kannst du das Activate-Ereignis verwenden, um die Größe je nach Bildschirmauflösung anzupassen.

    Private Sub UserForm_Activate()
       Static Start As Boolean
       If Not Start Then
           Ermitteln ' Aufruf obiger Funktion
           ' Hier folgt der Code zur Anpassung der Größe der UserForm
           Start = True
       End If
    End Sub

Häufige Fehler und Lösungen

  • Fehlender Schieber bei der Scrollbar: Überprüfe, ob der Max-Wert der Scrollbar korrekt gesetzt ist. Wenn der Max-Wert kleiner oder gleich der Höhe der UserForm ist, wird kein Schieber angezeigt.

  • Scrollbars sind nicht sichtbar: Achte darauf, dass KeepScrollBarsVisible auf True gesetzt ist, und stelle sicher, dass die UserForm die benötigte Höhe hat, sodass gescrollt werden kann.

  • Probleme mit der Bildschirmauflösung: Verwende die Funktion GetSystemMetrics, um die Bildschirmauflösung zu ermitteln und die UserForm entsprechend anzupassen.


Alternative Methoden

Eine alternative Methode zur Implementierung von Scrollbars in einer UserForm könnte die Verwendung von Frames sein. Du kannst ein Frame innerhalb der UserForm erstellen und die Steuerelemente darin platzieren. Dann fügst du Scrollbars hinzu, um das Frame zu scrollen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Funktionsweise einer UserForm mit Scrollbars zu demonstrieren:

Private Sub UserForm_Initialize()
    ' Erstelle Steuerelemente in der UserForm
    For i = 1 To 100
        Me.Controls.Add "Forms.Label.1", "Label" & i
        Me.Controls("Label" & i).Caption = "Label " & i
        Me.Controls("Label" & i).Top = i * 20
    Next i
End Sub

In diesem Beispiel werden 100 Labels in der UserForm erstellt. Wenn die Höhe der UserForm zu klein ist, kannst du die Scrollbar verwenden, um zu navigieren.


Tipps für Profis

  • Verwende dynamische Größenanpassung: Nutze die Bildschirmauflösung, um die Größe und Position der Steuerelemente in der UserForm dynamisch anzupassen. Das verbessert die Benutzerfreundlichkeit.

  • Nutze benutzerdefinierte Eigenschaften: Wenn du häufig mit Scrollbars in UserForms arbeitest, erwäge die Erstellung einer benutzerdefinierten Klasse, die die Logik für Scrollbars kapselt.

  • Erstelle eine einheitliche Benutzeroberfläche: Halte die Verwendung von Scrollbars und UserForms konsistent, um ein professionelles Aussehen zu gewährleisten.


FAQ: Häufige Fragen

1. Wie kann ich die Scrollbar in einer UserForm anpassen?
Du kannst die Eigenschaften der Scrollbar in den Eigenschaften der UserForm oder direkt im VBA-Code anpassen. Achte darauf, dass der Max-Wert der Scrollbar korrekt gesetzt ist.

2. Was mache ich, wenn die UserForm nicht richtig scrollbar ist?
Stelle sicher, dass der Inhalt der UserForm größer ist als die sichtbare Fläche der UserForm. Verwende die GetSystemMetrics-Funktion, um die Auflösung zu ermitteln und die Größe der UserForm anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige