Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
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
Labelerstellen an definierter Position
18.10.2016 09:38:07
Uwili
Hallo Liebe Leute.
Ich versuche in einer Userform per Mausklick ein Label zu setzen. An genau die gleiche Stelle, wie der Mauszeiger.
Leider scheinen die - nennen wir es mal - "Einheiten" der Werte der Cursorposition nicht mit den "Einheiten" zusammen zu passen, die ich für das Erstellen des Labels nutze. Folglich erscheint das Label nicht an der Mauszeigerposition sondern sondern - je weiter ich in Y und X von der linken oberen Ecke wegklicke umso weiter nach rechts und unten versetzt...
Um welche Einheiten handelt es sich: Pixel? mm? Inch? Excelintern? und wie kann ich diese Umrechen?
Hier der Code zum Ermitteln der Cursorposition:
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type 
Sub mousemove()
Dim pTargetPoint As POINTAPI
Dim lRetVal As Long
If main.Left  0 And main.Top  0 Then
main.Left = 0
main.Top = 0
main.Repaint
End If
lRetVal = GetCursorPos(pTargetPoint)
main.lbl_posx.Caption = pTargetPoint.X
main.lbl_posy.Caption = pTargetPoint.Y
posx = pTargetPoint.X
posy = pTargetPoint.Y
End Sub

Und hier der Code zum setzen des Labels:
Private Sub lbl_transparent_Click()
Dim thema As msforms.Label
Set thema = Me.Controls.Add("Forms.Label.1")
With thema
.Left = posx
.Top = posy
.Caption = "Mein Label"
End With
End Sub

Hat jemand eine Idee?
VG Uwe

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

Betreff
Datum
Anwender
Anzeige
AW: Labelerstellen an definierter Position
18.10.2016 11:07:19
Mullit
Hallo,
probiers mal so:
Option Explicit

Private Declare Function GetCursorPos Lib "user32.dll" ( _
    lpPoint As POINTAPI) As Long
    
Private Type POINTAPI
    X As Long
    Y As Long
End Type

Private Sub UserForm_Click()
Static slngCount As Long
Dim udtCursorPos As POINTAPI
Call GetCursorPos(udtCursorPos)
slngCount = slngCount + 1
With Me.Controls.Add(bstrProgID:="Forms.Label.1", Name:="Label" & slngCount, Visible:=True)
    .Left = udtCursorPos.X * 0.75 - Left
    .Top = udtCursorPos.Y * 0.75 - Top
    .Caption = "Label" & slngCount
    .BackColor = IIf(slngCount Mod 2, vbRed, vbBlue)
End With
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit
Anzeige
AW: Labelerstellen an definierter Position
18.10.2016 12:22:05
Daniel
Hi
welches Event nutzt du denn um den Mausklick und seine Postion auszulesen?
wenn du das MouseUp-Event der Userform verwendest, müsste dieses dir die X- und Y-Koordinaten des Mausklicks zur Vefügung stellen.
Diese Koordinaten haben die Linke obere Ecke der Userform als 0-Punkt und sollten ohne Umrechnung als Koordinaten für dein Label verwendet werden können

Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, _
ByVal Y As Single)
Dim thema As msforms.Label
Set thema = Me.Controls.Add("Forms.Label.1")
With thema
.Left = X
.Top = Y
.Caption = "Mein Label"
End With
End Sub
Gruß Daniel
Anzeige

145 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige