在VBA中声明和使用范围

澳门币

我对VBA还是很陌生,
今天开发宏时,我注意到了一些有趣的事情。

使用Range像这样的工作:

Dim rg As Range     
Set rg = ActiveSheet.Range("A1:B2")  

这样使用Range不起作用,并导致错误“未设置对象变量”:

Dim rg As Range   
rg = ActiveSheet.Range("A1:B2")  

但是这样使用Range是可行的:

Dim rg,rg2 As Range  
rg = ActiveSheet.Range("A1:B2")  

这怎么可能?

马修·金登(Mathieu Guindon)

您正在发现Variant对象引用。

ARange是一个对象-aVariant可以是任何东西, 包括一个对象。

这是正确的解决方法:

Dim rg As Range     
Set rg = ActiveSheet.Range("A1:B2")  

因为:

  1. 您明确声明rg是一个Range对象。
  2. 您正在使用Set关键字正确分配对象引用

如果不指定Set关键字,则使用VBA语法为分配分配对象引用,这是一个错误:

rg = ActiveSheet.Range("A1:B2") 

如果在同一条指令中声明多个变量,并且仅为最后一个变量指定类型,则此处rg为a Variant

Dim rg,rg2 As Range  ' this is like doing Dim rg As Variant, rg2 As Range
rg = ActiveSheet.Range("A1:B2")  

VBA会很乐意让您为a分配Variant几乎所有内容……但是事情会在运行时崩溃。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在VBA和Excel中使用范围

来自分类Dev

VBA使用范围可变

来自分类Dev

如何存储和使用范围滑块中的动态值?

来自分类Dev

Excel VBA在宏中使用范围

来自分类Dev

使用范围对象 VBA 自动填充

来自分类Dev

如何使用范围选择口才ORM中除(A和B)之外的所有行?

来自分类Dev

如何使用范围选择口才ORM中除(A和B)以外的所有行?

来自分类Dev

使用范围

来自分类Dev

使用范围for / in

来自分类Dev

Golang的使用范围

来自分类Dev

Excel VBA使用范围选择整个工作表

来自分类Dev

Excel VBA使用范围选择整个工作表

来自分类Dev

VBA宏使用范围查找重复项

来自分类Dev

使用范围作为消息框的VBA图表

来自分类Dev

Excel VBA:使用范围作为变量的评估匹配函数

来自分类Dev

使用VBA声明动态范围

来自分类Dev

搜索和使用范围内的字符

来自分类Dev

使用范围滑块和 JavaScript 更改 DiV 元素的宽度

来自分类Dev

如何使用范围值在多维数组中搜索数据

来自分类Dev

_type在ElasticSearch中的使用范围从5.5到7.7

来自分类Dev

使用范围抓取漂亮汤中的链接列表

来自分类Dev

如何使用范围在python中拆分列表?

来自分类Dev

如何使用范围值在多维数组中搜索数据

来自分类Dev

使用范围从两个表中获取数据

来自分类Dev

使用范围过滤 rails 5 中的结果

来自分类Dev

Python XLRD使用范围

来自分类Dev

如何在VBA中声明Excel范围?

来自分类Dev

如何使用范围“试验”和JUnit使用Maven和Eclipse正确

来自分类Dev

Word和Excel中的vba是否使用不同的声明?