Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Userform an einer bestimmten Zelle anzeigen
zurück: Userform am Mauszeiger anzeigen weiter: RELEASE: Stundenplantool Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Information Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Isabelle :-)
Menschin


Verfasst am:
21. Okt 2013, 23:01
Rufname:
Wohnort: Westlicher Spiralarm der Galaxis

Userform an einer bestimmten Zelle anzeigen - Userform an einer bestimmten Zelle anzeigen

Nach oben
       Version: Office 2k (2000)

Hallöchen,

dank der Methoden PointsToScreenPixelsX / PointsToScreenPixelsY ist es kein Problem die absolute Position einer Zelle auf dem Bildschirm zu berechnen. Damit unser Userform nicht außerhalb des sichtbaren Bereichs angezeigt wird, schieben wir die Zelle mit Hilfe der Goto-Methode aber erst noch in den sichtbaren Bereich.

Im folgenden Beispiel lassen wir die linke obere Ecke des Userforms in der linken oberen Ecke von Zelle C10 erscheinen.

Achtung, die Positionsberechnung klappt nicht, wenn du das Userform aus dem VBA-Editor startest.

Im Modul des Userforms:

Code:
Option Explicit

Private Declare Function FindWindowA Lib "user32.dll" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function MoveWindow Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal bRepaint As Boolean) As Long

Private Const GC_CLASSNAMEUSERFORM = "ThunderDFrame"

Private Sub CommandButton1_Click()
    Call Unload(Object:=Me)
End Sub

Private Sub UserForm_Initialize()

    Dim lngLeft As Long, lngTop As Long
    Dim lngWidth As Long, lngHeight As Long
    Dim lngHwnd As Long

    'Wenn das aktive Blatt eine Tabelle ist
    If TypeOf ActiveSheet Is Worksheet Then

        'Ganz nach oben links scrollen damit C10 sichtbar ist
        Call Application.Goto(Reference:=Cells(1, 1), Scroll:=True)

        'Zugriffsnummer des Userforms holen
        lngHwnd = FindWindowA(GC_CLASSNAMEUSERFORM, Caption)

        'Links- und Oben-Wert der Zelle C10 lesen, in Pixel umrechnen und
        'daraus die absolute Position der Zelle am Bildschirm berechnen
        With ActiveWindow
            lngLeft = CLng(.PointsToScreenPixelsX(Cells(10, 3).Left / 0.75))
            lngTop = CLng(.PointsToScreenPixelsY(Cells(10, 3).Top / 0.75))
        End With

        'Breite und Höhe des Userforms auslesen und in Pixel umrechnen
        lngWidth = CLng(Width / 0.75)
        lngHeight = CLng(Height / 0.75)

        'Startposition des Userforms auf manuell setzen
        StartUpPosition = 0

        'Userform an die berechnete Stelle schieben
        Call MoveWindow(lngHwnd, lngLeft, lngTop, lngWidth, lngHeight, True)

    End If
End Sub

_________________
LG Isi

Die Mitgliedschaft im Forum erhöht deine Chance auf eine Antwort von mir um 99,999%
Kuwe
Excel-Anwender mit VBA


Verfasst am:
22. Okt 2013, 15:03
Rufname: Uwe

AW: Userform an einer bestimmten Zelle anzeigen - AW: Userform an einer bestimmten Zelle anzeigen

Nach oben
       Version: Office 2k (2000)

Hallo Isi,

leider funktioniert das auch nur bei 100% Zoom.

_________________
Gruß Uwe
Isabelle :-)
Menschin


Verfasst am:
22. Okt 2013, 15:26
Rufname:
Wohnort: Westlicher Spiralarm der Galaxis


AW: Userform an einer bestimmten Zelle anzeigen - AW: Userform an einer bestimmten Zelle anzeigen

Nach oben
       Version: Office 2k (2000)

Hallöchen Uwe,

kein Problem. Wink

Code:
Private Sub UserForm_Initialize()

    Const CONVERSION_FACTOR As Single = 0.75 'Um Pixel in Point umzurechnen
   
    Dim lngLeft As Long, lngTop As Long
    Dim lngWidth As Long, lngHeight As Long
    Dim lngHwnd As Long

    'Wenn das aktive Blatt eine Tabelle ist
    If TypeOf ActiveSheet Is Worksheet Then

        'Ganz nach oben scrollen
        Call Application.Goto(Reference:=Cells(1, 1), Scroll:=True)

        'Zugriffsnummer des Userforms holen
        lngHwnd = FindWindowA(GC_CLASSNAMEUSERFORM, Caption)

        'Links- und Oben-Wert der Zelle C10 lesen, in Pixel umrechnen und
        'daraus die absolute Position der Zelle am Bildschirm berechnen
        With ActiveWindow
            lngLeft = CLng(.PointsToScreenPixelsX(Cells(10, 3).Left / CONVERSION_FACTOR * .Zoom / 100))
            lngTop = CLng(.PointsToScreenPixelsY(Cells(10, 3).Top / CONVERSION_FACTOR * .Zoom / 100))
        End With

        'Breite und Höhe des Userforms auslesen und in Pixel umrechnen
        lngWidth = CLng(Width / CONVERSION_FACTOR)
        lngHeight = CLng(Height / CONVERSION_FACTOR)

        'Startposition auf manuelle setzen
        StartUpPosition = 0

        'Userform an die berechnete Stelle schieben
        Call MoveWindow(lngHwnd, lngLeft, lngTop, lngWidth, lngHeight, True)

    End If
End Sub

_________________
LG Isi

Die Mitgliedschaft im Forum erhöht deine Chance auf eine Antwort von mir um 99,999%
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: erste Zeichen einer Zelle in andere kopieren 2 fisler0815 3067 11. Okt 2004, 15:37
fisler0815 erste Zeichen einer Zelle in andere kopieren
Keine neuen Beiträge Excel Formeln: Letzten drei Ziffern aus einer Zelle filtern?? 7 Ben 3398 23. Sep 2004, 13:39
Gast Letzten drei Ziffern aus einer Zelle filtern??
Keine neuen Beiträge Excel Formeln: Summe über bestimmten Bereich 4 simpson 5026 15. Sep 2004, 19:54
Arnim Summe über bestimmten Bereich
Keine neuen Beiträge Excel Formeln: Ergebnisse eines bestimmten Zeitbereichs anzeigen 1 Seppo110 583 03. Sep 2004, 12:58
fl618 Ergebnisse eines bestimmten Zeitbereichs anzeigen
Keine neuen Beiträge Excel Formeln: Wie kann ich Texte aus anderen Blättern anzeigen lassen? 18 docsneyder 1836 30. Aug 2004, 21:58
docsneyder Wie kann ich Texte aus anderen Blättern anzeigen lassen?
Keine neuen Beiträge Excel Formeln: Autom. Farbänderung einer Zelle. 1 Stefan 66 5197 19. Aug 2004, 14:51
fl618 Autom. Farbänderung einer Zelle.
Keine neuen Beiträge Excel Formeln: Einfärben einer Spalte bei bestimmten Vorzeichen 3 itmeli 813 16. Aug 2004, 13:25
itmeli Einfärben einer Spalte bei bestimmten Vorzeichen
Keine neuen Beiträge Excel Formeln: Auslesen mehrer Zahlen aus einer Zelle 7 coatin27 3379 11. Aug 2004, 15:18
Arnim Auslesen mehrer Zahlen aus einer Zelle
Keine neuen Beiträge Excel Formeln: Eigabe nur in einer Zelle zulassen 1 pkegelking 1645 11. Aug 2004, 10:42
icke Eigabe nur in einer Zelle zulassen
Keine neuen Beiträge Excel Formeln: Suche Zelle nach einem ähnlichem Wert ab... (wildcart) 2 Ranzi 2538 09. Aug 2004, 18:22
icke Suche Zelle nach einem ähnlichem Wert ab... (wildcart)
Keine neuen Beiträge Excel Formeln: Löschen des Zellinhaltes/von anderer Zelle 2 Gast 1962 07. Aug 2004, 23:32
Gast Löschen des Zellinhaltes/von anderer Zelle
Keine neuen Beiträge Excel Formeln: Einfügen des Datei- oder Tabellennamens in eine Zelle 5 Atomteilchen 5024 29. Jul 2004, 12:43
Atomteilchen Einfügen des Datei- oder Tabellennamens in eine Zelle
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Dreamweaver Forum