Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

an Position des Cursors Textbox einfügen

Betrifft: an Position des Cursors Textbox einfügen von: Henry
Geschrieben am: 10.09.2020 07:47:50

Hallo Zusammen,

ist es möglich, bei Doppelklick eine Textbox einzufügen,genau an dieser Stelle wo geklickt wurde?

Ich habe bisher nur etwas gefunden, wo man die Position des Cursors auf dem gesamten Bildschirm auslesen kann, nicht aber nur im Excel-Arbeitsblatt.
die eingefügten Textboxen stehen somit immer an anderen Positionen

Betrifft: AW: an Position des Cursors Textbox einfügen
von: ChrisL
Geschrieben am: 10.09.2020 08:00:42

Hi

Modul der betreffenden Tabelle:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=Target.Left, Top:=Target.Top, Width:=72, Height:=18).Select
End Sub
cu
Chris

Betrifft: AW: an Position des Cursors Textbox einfügen
von: Henry
Geschrieben am: 10.09.2020 10:11:23

Danke du hast mir meinen Tag gerettet!

Betrifft: AW: an Position des Cursors Textbox einfügen
von: Max
Geschrieben am: 10.09.2020 14:29:32

Ist es auch möglich den Code so abzuändern, dass das einfügen nicht von der Zelle abhängig ist?

Betrifft: Vermutlich ja...
von: ChrisL
Geschrieben am: 10.09.2020 16:35:00

aber hierzu habe ich auch keine Lösung bereit. Könnte etwas schwierig werden die Cursorposition auf die Position der Applikation (Excel muss ja nicht zwingend im Vollbildmodus geöffnet sein) und die Position innerhalb der Exceltabelle umzurechnen. Für eine zuverlässige Lösung müsste man vermutlich einiges an Zeit investieren.

Betrifft: mit einem Workaround
von: Daniel
Geschrieben am: 10.09.2020 17:20:56

geht das relativ einfach.
hierzu nutzt man folgendes aus:
1. ein Commandbutton kann auch transparent sein.
2. bei einem Commanbutton kann man über das MouseDown oder das MouseUp-Event zusätzlich ermitteln, an welcher Stelle über dem Button der Klick erfolgt ist.

der Trick ist, dass man beim ersten Klick auf den Button diesen Transparent macht und über den sichtbaren Tabellenbereich platziert.
beim nächsten Klick ermittelt man dann die Klickposition kann zusammen mit der Grundposition des Buttons auf die Tabellenbblattposition des Klicks schließen und dort die TextBox einfügen.

du musst also einfach nur einen ActiveX-Button anlegen mit diesem Eventmakro:
Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X  _
As Single, ByVal Y As Single)
Static alt_T As Single
Static alt_L As Single
Static alt_H As Single
Static alt_W As Single

With CommandButton1

Select Case .BackStyle
    Case fmBackStyleTransparent
        
        ActiveSheet.OLEObjects.Add ClassType:="Forms.TextBox.1", _
                                    Link:=False, _
                                    DisplayAsIcon:=False, _
                                    Left:=.Left + X, _
                                    Top:=.Top + Y, _
                                    Width:=72, _
                                    Height:=18
        
        
        .Top = alt_T
        .Left = alt_L
        .Height = alt_H
        .Width = alt_W
    Case fmBackStyleOpaque
        alt_T = .Top
        alt_L = .Left
        alt_H = .Height
        alt_W = .Width
        .Top = ActiveWindow.VisibleRange.Top
        .Left = ActiveWindow.VisibleRange.Left
        .Height = ActiveWindow.VisibleRange.Height
        .Width = ActiveWindow.VisibleRange.Width
End Select
.BackStyle = 1 - .BackStyle
        
End With
End Sub
direkt nach dem ersten Klick wird die Transparenzsschaltung nicht sofort wirksam, man muss mit der Maus erst nochmal in den Menübereich verfahren (aber dort nichts klicken), damit das Blatt unter dem Button sichtbar wird.

Gruß Daniel

Betrifft: AW: an Position des Cursors Textbox einfügen
von: Daniel
Geschrieben am: 12.09.2020 11:57:05

Hi

Am einfachsten müsste folgendes zu programmieren sein, wenn man sich mit diesem Ablauf anstelle des Doppelklicks anfreunden kann:

- Anklicken eines ActiveX-Commandbuttons auf dem Blatt
- bei gehaltener Maustaste zur geplanten Textboxposition fahren
- Maustaste loslassen

Dann reicht es aus, im MouseUp-Event den X-Wert zum .Left des Buttons und den Y-Wert zum .Top des Buttons hinzu zu addierte und man hat die Koordinaten zum erstellen der Textbox.

Beim MouseUp darf die Klickposition auch außerhalb des Buttons liegen.

Gruß Daniel

Beiträge aus dem Excel-Forum zum Thema "an Position des Cursors Textbox einfügen"