选择全部时,vba target.count = 1错误

时间:2018-12-12 12:32:08

标签: excel vba target selectionchanged

我有一张包含代码的工作表,该代码将根据选择的单元格触发一些VBA代码。 (单元格具有按钮的功能)。 由于用户可以选择包括多个单元格的范围,因此可以使用targe.count来限制该问题(当单元格包含在所选范围内时不触发vba代码,但它不是唯一的单元格) 当用户选择多个单元格(包括触发vba BUT的单元格)时,确实可以很好地工作,我想知道为什么当用户使用CTRL-A选择所有单元格时,它会给出错误消息

这是工作表背后的代码

Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
     run some code

如果我用contrl-A选择整个工作表,则会发生错误。

运行时错误6 溢出

更奇怪。该工作表包含一个表(listobject)如果我在表中执行ctrl-A,则整个表都被选中,并且不会发生错误。 如果我在表外执行ctrl-A,则会选中整个工作表,并且会发生错误。

对此行为有一些解释吗?

2 个答案:

答案 0 :(得分:2)

Target.Count属性替换Target.CountLarge

参考:http://msdn.microsoft.com/en-us/library/office/ff196838(v=office.15).aspx

答案 1 :(得分:1)

tldr; 。您正试图在Range.Count属性中检索太大的数字。

编写Range.Count属性以返回一个长整数,该整数被解析为range对象内单个单元格的总数。

  

Range.Count property (Excel)
  返回一个Long值,该值表示集合中对象的数量。

您收到Runtime error 6: Overflow是因为XLSX工作表上的单个单元格总数为1,048,576行×16,384(从A到XFD)。解析为17,179,869,184个单个单元格,这些单元格超过有符号长整数¹的最大允许值。


¹有符号长整数可以保留的最大值为2,147,483,647或&H7FFF,FFFF16。