相关疑难解决方法(0)

为什么我在将一个范围分配给变量数组时遇到问题

我遇到了一些非常简单的代码问题.让我详细说明事实,看看是否有其他人可以复制这种行为.如果有人可以复制,我想解释它为什么会发生.

因此,让我从一个非常简单的代码行开始:

Dim arr() As Variant
arr = Range("A1:A10")
Run Code Online (Sandbox Code Playgroud)

这按预期进行,arr赋值为A1:A10

现在为什么以下代码行不起作用?

Dim arr() As Variant
arr = WorkSheets("Sheet1").Range("A1:A10")
Run Code Online (Sandbox Code Playgroud)

我得到一个运行时错误'13'类型不匹配,即使成功分配给数组相同的范围,只是没有工作表值.

Dim arr As Variant
arr = Worksheets("Sheet1").Range("A1:A10")
Run Code Online (Sandbox Code Playgroud)

Dim arr() As Variant
arr = Application.Transpose(Application.Transpose(Worksheets("Sheet1").Range("A1:A10")))
Run Code Online (Sandbox Code Playgroud)

工作

在你回答之前,请让我给你一些更多的事实.

Dim arr() As Variant
arr = Worksheets(1).Range("A1:A10")
Run Code Online (Sandbox Code Playgroud)

不起作用

Sheets代替Worksheets所有人也给出了相同的错误.

通过使用下面Range("A1:A10").Worksheet.Name的工作代码确实它与活动引用表相同,它确实Sheet1在输出中说明了.

没有其他工作簿是打开的,所以它也不能引用另一个工作簿.

现在这最后一点代码只会增加我的困惑,因为它完全有效!

Dim arr() As Variant
Dim SampleRange As Range

Set SampleRange = Worksheets("Sheet1").Range("A1:A10")
arr = SampleRange
Run Code Online (Sandbox Code Playgroud)

因此,当我将其分配给范围变量时,使用相同方式在同一张纸上定义的相同方法现在可以正常工作.并使用它!正如预期的那样WorkSheets,Sheets无论我如何定义工作表,它都适用于和函数(我可以使用索引或工作表的名称,所有工作正常) …

arrays excel vba excel-vba

26
推荐指数
1
解决办法
2万
查看次数

VBA中变量名后的可能后缀是什么?

正如我已经想到的那样,至少有六个:!@#$%&.

这是剪辑:

Dim A!, B@, C#, D$, E%, F&
Debug.Print "A! - " & TypeName(A)
Debug.Print "B@ - " & TypeName(B)
Debug.Print "C# - " & TypeName(C)
Debug.Print "D$ - " & TypeName(D)
Debug.Print "E% - " & TypeName(E)
Debug.Print "F& - " & TypeName(F)

输出

A! - Single
B@ - Currency
C# - Double
D$ - String
E% - Integer
F& - Long

关于这种语法糖的文档在哪里?

还有哪些其他可能的后缀?

有一个日期?

vba

8
推荐指数
2
解决办法
7644
查看次数

标签 统计

vba ×2

arrays ×1

excel ×1

excel-vba ×1