mit einem Workaround
10.09.2020 17:20:56
Daniel
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