如何在excel中用鼠标左键点击NOT单元格来启动宏



我从两天起就在努力寻找如何在没有找到任何适合目标的情况下完成以下工作:

按顺序排列的步骤:

  1. 用户打开excel文件
  2. 他在以下两种选择中做出了选择:
  • 直接在工作表中粘贴图像(可能是有限的区域(
  • 激活工作簿中的一些视频(可能是用于启动的网络摄像头(
  1. 他用按钮选择以激活他的点击检测
  2. 他点击图片上的任何地方,我得到点击点的坐标

到目前为止,我已经看到ppl使用(并测试了自己(:

  • 鼠标事件==>;这不起作用,因为我需要知道他点击的东西的名字,这可能是他刚刚粘贴的的全新图片

  • BeforeDoubleClick(同样,我更喜欢避免双击,但即使这样,当我点击除单元格以外的其他内容时,它也不起作用(

  • 选择更改===>如果我不点击单元格,就不起作用

  • 将隐藏按钮放在我想要的区域上:如果按钮不可见,我就不能点击它,如果我将其设置为透明,当我点击它时,它就会变为可见

如果有人对此有想法。。。(注:我不是vba的专业人士,所以我可能错过了什么(

只是忘了:我的问题不是获取鼠标的坐标,它只是在我想要的时候触发宏,目前我正在尝试获取一个简单的消息框,看看触发器是否有效。

如果有人有任何想法,谢谢BR

不确定这是否符合您的需求(例如,无法用视频进行测试(。

a( 放置一个";按钮";你床单上的任何一种。我通常使用正方形,并稍微格式化(颜色、阴影、文本(。将子程序SetEvents分配给它。

b( 声明一个全局变量,记住点击激活是活动的

Option Explicit
Global EventCatchingActive As Boolean

c( 在按钮的事件例程中,为图纸的所有形状设置OnAction方法-请参阅例程setEvents。这样可以确保即使是新添加的图像也能处理单击事件。

Sub setEvents()
' This routine is called from the magic button.
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(1)  ' Set this to whatever sheet you need

Dim button As Shape
Set button = ws.Shapes(Application.Caller)

If EventCatchingActive Then
EventCatchingActive = False
button.TextFrame2.TextRange.Characters.Text = "Start Clicking"
Else
Debug.Print "Setting EventHandler"
Dim sh As Shape
For Each sh In ThisWorkbook.Sheets(1).Shapes
' Debug.Print sh.Name, sh.Type
If sh.Name <> button.Name Then sh.OnAction = "ClickedMe"
Next
EventCatchingActive = True
button.TextFrame2.TextRange.Characters.Text = "Stop Clicking"
End If
End Sub

d( 声明在单击任何形状时调用的例程。使用Application.Caller,您可以检查单击的内容。

Sub ClickedMe(Optional target As Range = Nothing)
If Not EventCatchingActive Then Exit Sub
If target Is Nothing Then
Debug.Print "I clicked on " & Application.Caller
Else
Debug.Print "I clicked on cell " & target.Address
End If
End Sub

(注意,步骤b(到d(的代码进入常规模块(

e( 如果您还想处理单元格上的单击,请将以下内容添加到正在处理的工作表的工作表模块中。

Private Sub Worksheet_SelectionChange(ByVal target As Range)
ClickedMe target
End Sub

相关内容

最新更新