Tag: 数组

如何在Excel VBA中切片数组?

Excel VBA中可以使用什么函数来切片数组?

为什么我有问题分配一个范围到一个variables数组

我有一些非常简单的代码行几个问题。 让我详细说明事实,看看是否有其他人可以复制这种行为。 如果任何人可以复制,我想解释为什么发生。 所以,让我从一个非常简单的代码行开始工作: Dim arr() As Variant arr = Range("A1:A10") 如预期的那样, arr被赋予A1:A10的值A1:A10 现在为什么不会有以下代码行? Dim arr() As Variant arr = WorkSheets("Sheet1").Range("A1:A10") 我得到了运行时错误'13'types不匹配,即使相同的范围已成功地分配给数组,即使没有工作表值。 但 Dim arr As Variant arr = Worksheets("Sheet1").Range("A1:A10") 和 Dim arr() As Variant arr = Application.Transpose(Application.Transpose(Worksheets("Sheet1").Range("A1:A10"))) 能工作吗? 现在,在你回答之前,请让我给你更多的事实。 Dim arr() As Variant arr = Worksheets(1).Range("A1:A10") 不起作用 并使用Sheets代替Worksheets也都给出了相同的错误。 我已经通过使用Range("A1:A10").Worksheet.Name确保它与活动参考图纸是一样的Range("A1:A10").Worksheet.Name在工作代码之后,它确实在输出中显示Sheet1 。 没有其他工作簿是开放的,所以它不能引用另一个工作簿。 现在,这最后一点的代码只会增加我的困惑,因为它完全有效! Dim arr() […]

VBA(Excel)无循环初始化整个数组

我对VBA相当陌生,所以这可能是一个简单的问题,但是这里有。 我想在VBA中初始化整数数组myArray ,比如整数。 我知道我可以通过一个简单的初始化来做到这一点: Dim myArray myArray = Array(1, 2, 4, 8) 但是,如果数组很大,这是很麻烦的,我想初始化所有元素到相同的值。 理想情况下,这将是这样的: myArray(:) = 0 我试过,但编译器抱怨。 然后我尝试myArray() = 0 ,它也抱怨。 任何人都可以解释如何做到这一点, 没有循环 ? 如果可能,我想在一个声明中这样做。 澄清 : 我想初始化数组中的每个元素到一些初始值。 所以,如果我有一个数组Dim myArray(300) As Integer 300整数的整数,例如,所有300个元素将保持相同的初始值(比如13)。 更澄清 我发现这个答案 ,说你可以这样做一个variables: Dim x As Double: x = 0 也许有一种方法稍微更新语法,使其适用于数组?