Vba 使用工作表\u SelectionChange时出现Target.Name.Name错误

Vba 使用工作表\u SelectionChange时出现Target.Name.Name错误,vba,excel,Vba,Excel,全部, 传递到工作表\u选择更改事件的目标范围与传递到工作表\u更改事件的目标范围之间是否存在任何差异? 这个问题似乎很可笑,但我似乎无法从选择更改目标范围中获取目标.name.name,但我可以从更改目标范围中获取相关单元格的目标.name.name 我尝试过用userinterfaceonly参数设置为true来取消对工作表的保护,我尝试过完全取消对工作表的保护,但没有看到任何不同 注意:SelectionChangeTarget范围看起来有效,我可以从传入事件的参数中获取其他属性,如Tar

全部,

传递到
工作表\u选择更改
事件的
目标
范围与传递到
工作表\u更改
事件的
目标
范围之间是否存在任何差异? 这个问题似乎很可笑,但我似乎无法从
选择更改
目标
范围中获取
目标.name.name
,但我可以从
更改
目标
范围中获取相关单元格的
目标.name.name

我尝试过用
userinterfaceonly
参数设置为true来取消对工作表的保护,我尝试过完全取消对工作表的保护,但没有看到任何不同

注意:
SelectionChange
Target
范围看起来有效,我可以从传入事件的参数中获取其他属性,如
Target.row
Target.address
,而不是名称

有什么想法吗


编辑:有问题的单元格是一个合并的单元格,如果这有什么区别的话。

合并的单元格会对VBA代码造成不良影响。你可以找出它们,它们不是很直观。对于你的情况,你需要

Debug.Print Target.Cells(1).Name.Name

通常,当合并单元格出现错误时,您需要
.Cells(1)
.MergeArea
,但我不知道是哪一个,所以我尝试了两者。

问题可能还在于使用
Target.Name
假设
Target
有一个名称。但是,如果单击没有名称的单元格,
Target.name
返回错误。

SelectionChange
中,
Target
就是您刚才选择的单元格;在
Change
中,它是您刚刚更改的一个-通常与现在处于活动状态的一个不同。@Rory这是一个很好的区别。不过,我在测试时就知道了,所以我的问题仍然存在。但你就是这么问的?如果您没有选择一个命名的范围,您会得到一个错误。@Rory我在问传递到这两个事件中的范围有什么区别。假设我给合并的单元格
A1:B2
起了一个名称“产品批号”。为了测试
SelectionChange
,当选择了不同的单元格时,我点击了单元格
A1:B2
。为了测试
Change
事件,我在单元格
A1:B2
中键入了“123”。这两次所讨论的
目标
范围都是
A1:B2
。啊,我手机上的合并单元格位都没有找到。
SelectionChange
目标是您选择的整个范围,就像您一次更改多个单元格一样,更改事件的
target
是所有这些单元格。但是合并的单元格只将第一个单元格视为已更改,即使它将所有单元格视为已选中。谢谢!这就是事实。
工作表\u更改
目标
范围只是该合并范围的第一个单元格,而
工作表\u选择更改
目标
参数中传递整个合并范围。奇怪的东西,有趣。在Excel 2010中,我在Change和SelectionChange中都遇到了相同的错误。您应该获得双倍积分,因为
.MergeArea
已经在不同的问题上多次保存了我的皮肤!感谢您的努力,但问题不在于名称,因为
工作表\u更改
没有给我带来任何问题,但是
工作表\u选择更改
给我带来了问题。同一个细胞。