Vba 双击多个单元格区域以启动宏

Vba 双击多个单元格区域以启动宏,vba,excel,Vba,Excel,当有人双击某个单元格区域时,我正试图启动一个宏。我现在得到的完整潜艇是: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean) If Not Application.Intersect(Target, Range("F5")) Is Nothing Then cancel = True Dim GoogleMapsCheckLink As String GoogleMapsCheckL

当有人双击某个单元格区域时,我正试图启动一个宏。我现在得到的完整潜艇是:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)

If Not Application.Intersect(Target, Range("F5")) Is Nothing Then
cancel = True
Dim GoogleMapsCheckLink As String
GoogleMapsCheckLink = "https://www.google.nl/maps/place/" + Range("F5").Value + " " + Range("F6").Value + " " + Range("F7").Value
ActiveWorkbook.FollowHyperlink GoogleMapsCheckLink
GoogleMapsCheckYN.Show
End If


If Not Application.Intersect(Target, Range("B52, B61, D52, D61")) Is Nothing Then
    cancel = True
    macro


End If

End Sub
但每当我选择其中一个单元格(例如B52、B61、D52或D61)时,我都会收到一条编译错误消息:

编译错误:

参数数目错误或属性赋值无效

单词范围高亮显示

我的问题当然是我现在做错了什么

编辑:

将范围更改为后

Range("B52, B61, D52, D61")
我得到另一个错误:

运行时错误“1004”:

对象“”工作表“”的方法“范围”失败


顺便说一句,我还得到了其他宏,这些宏是通过双击某个单元格值激活的,这些宏可以工作。只有当我将多个单元格作为范围时才会发生错误…

按如下方式更改您的范围:

Range("B52, B61, D52, D61")

这现在是Excel中的有效范围引用。Range方法要么接受两个引用,然后引用中间的所有单元格,要么接受有效的范围名称。

使用Office 2010为我工作

如果目标在Sheet1中,则确保脚本在Sheet1模块中

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Not Application.Intersect(Target, Range("B52, B61, D52, D61")) Is Nothing Then

        Cancel = True

        Worked = "Yes"

        'Calling Macro would go here
        Call SomeModule.SomeMarco

    Else

        Worked = "No"

    End If


    MsgBox Worked

End Sub

我刚刚对它进行了调整,得到了以下错误:运行时错误“1004”:对象“工作表”的方法“范围”失败。我想你当时键入了错误的内容。是的,我已经测试过了,它是有效的。不要只对代码按ctrl-c+ctrl-v组合键,有时VBA中的引号与浏览器中的引号不同。尝试手动更改代码。只是这样做了,仍然会收到相同的错误消息。顺便说一句,我还得到了其他宏,这些宏是通过双击某个单元格值激活的,这些宏可以工作。只有当我有多个单元格作为范围时,错误才会发生……我很困惑,代码完全适合我。也许你的床单被保护了?或者有人对你施了一个黑暗的咒语。莫里斯,如果你编辑了这个问题,也请编辑由此产生的错误!你说错误发生在你选择单元格的时候?你是说当你双击的时候?那么?有什么好运气吗?在我的原始帖子中添加了完整的sub。因此,当我双击单元格F5时,应该称为的宏可以工作。但当我双击B52、B61、D52、D61时,我得到了错误消息。(正在调用的宏可以工作,所以我想这不是问题)我刚刚将您的代码复制粘贴到一个空工作簿中,它可以工作。您说过错误发生在
如果不是应用程序.Intersect(目标,范围(“B52,B61,D52,D61”)
部分,是吗?(我已经让它运行到GrossDebt1输入框,没有错误。)尝试将它放在其他工作簿中。我真的不知道,这应该行得通。你把它放在合适的潜艇里了吗?双击事件?因此,您找到了相同的解决方案。:)对于OP,它似乎不起作用。请参阅更新,我没有看到问题的双重剪辑部分。但我的最新答案非常有效。只要记住在调用它时引用模块和宏。例如调用模块1.1请再次阅读原始问题。对于Maurice,Range(“B52、B61、D52、D61”)会产生错误。是的,我也是,正如我们已经讨论过的。。。但不适合莫里斯。