首页
学习
活动
专区
圈层
工具
发布

Events的
EN

Stack Overflow用户
提问于 2021-07-02 14:20:26
回答 1查看 210关注 0票数 1

在此之前,我已经知道如何创建该代码,以确定要在其中实现函数的特定数组:

代码语言:javascript
复制
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not Intersect(Target, Range("A1:O7000")) Is Nothing Then
  MsgBox "Hi"
 End If
End Sub

因此,只有当我在 Range函数中编写时,才能在这里使用。我不想决定整个数组。当我想按照这个形状来开发这个代码时:

代码语言:javascript
复制
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim SafeTbl As ListObject
  Set SafeTbl = ListObjects("Safe")
   If Not Intersect(Target, SafeTbl.Range.Address) Is Nothing Then
    MsgBox "Hi"
   End If
End Sub

我发现这个Type mismatch编译错误:

我不知道为什么这个错误存在。当我看到我的开发和以前的代码一样时。,因为这段代码只确定数组有数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-02 15:02:13

正如注释中所建议的,.Address是一个字符串。Intersect要求范围作为参数,而不是当前提供的范围地址的文本。

Type mismatch编译错误告诉您“变量或属性不是正确的类型”(https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/type-mismatch-error-13)

微软说:

Application.Intersect方法(Excel)返回一个Range对象,该对象表示两个或多个区域的矩形相交。

为了明确起见,这意味着您的代码需要更改为:

代码语言:javascript
复制
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim SafeTbl As ListObject
  Set SafeTbl = ListObjects("Safe")
   If Not Intersect(Target, SafeTbl.Range) Is Nothing Then
    MsgBox "Hi"
   End If
End Sub

有关Intersect的更多信息,请在这里阅读:https://learn.microsoft.com/en-us/office/vba/api/excel.application.intersect

还有更多关于Range属性的信息:https://learn.microsoft.com/en-us/office/vba/api/excel.range.range

更新

正如@BigBen正确指出的那样,在您的示例中,我们实际上是指ListObject.Range属性,因此有关此属性的进一步信息如下:https://learn.microsoft.com/en-us/office/vba/api/excel.listobject.range

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68226790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档