范围和数组在VBA转换时,他们想要的。 这是怎么回事?

VBA中的Range对象非常奇怪。 这是我的练习代码:

a = ActiveSheet.Range("A1:A3").Columns.Count b = ActiveSheet.Range("A1:A3") c = b.Columns.Count 
  • 一个给我1,没问题。
  • b给了我一个二维数组(这是烦恼的索引从1,1开始)而不是一个Range对象
  • c自然不起作用。

a如何调用范围对象和b是一个数组? 我需要一个范围对象来传入我的函数! *我试过把b声明为范围和范围(),这只是给了我一个错误。

如果您希望编译器进行适当的转换,则需要明确定义variables。 现在只是猜测你在做什么,因为你没有拼出来。

 Dim a as Integer Dim b as Range Dim c as Integer a = ... Set b = ... c = ... 

我并不积极,但是我认为你的variables是作为你真正想要避免的变体而出现的,因为这会导致你的头痛。

我强烈build议在你打算编写的任何代码上继续设置Option Explicit ,这样如果你尝试引用一个没有明确定义的variables,编译器就会抱怨。 您应该可以通过使用“选项”菜单进行操作,将IDE设置为在任何新模块上的默认设置。

编辑

请注意,只有对象需要Set语法,而基本数据types则不需要。 虽然明确定义两个维度是一个很好的经验法则。