arrays - MS Excel -> 2 列到二维数组中

标签 arrays excel vba

我来自一个 Unix 世界,我从来不需要用 VBA 为 Office 开发一些东西,我现在必须做一些,我很难过!请帮我! :)

所以我有 2 个 Excel 表(我们称它们为 Sheet1 和 Sheet2)和 2 个表单(Form1 和 Form2)来编辑/添加数据。

在 Sheet1 中,前两列是 MovieId 和 MovieName。我们不知道这些列中有多少行。
Form1 控制 Sheet1 中的数据,Form2... 在 Sheet2 中控制数据。

在 Form2 初始化时,我想创建一个类似于 (MovieId1,MovieName1;MovieId2,MovieName2;...,...;MovieIdN,MovieNameN) 的二维数组,其中该数据已从 Sheet1 中提取,如排序如果您愿意的话,可以使用 Java 中的 map ...

如果它是这样对我来说实际上没问题: (0,"MovieId0;MovieName0";1,"MovieId1,MovieName1";..,"..";N,"MovieIdN,MovieNameN")

我不知道如何使用变量最后一行编号创建数组,因为编译器似乎总是想要一个常量来初始化数组......

请赐教!

最佳答案

Value 方法Value2 房产 .

例如Range("$A$2:$B$4").Value2(1,1)或者Range("$A$2:$B$4").Value()(1,1)
数组的下界从 1 开始。lbound(Range("$A$2:$B$4").Value2, 1) - 行元素从ubound(Range("$A$2:$B$4").Value2, 2) - 行元素结束lbound(Range("$A$2:$B$4").Value2, 2) - 列元素从ubound(Range("$A$2:$B$4").Value2, 2) - 列元素结束

编辑:遍历数组的代码

Dim myAddress As String
Dim dataArray As Variant

Dim rowStart As Long, rowEnd As Long
Dim colStart As Long, colEnd As Long

Dim rowCtr As Long
Dim colCtr As Long

myAddress = "$A$2:$B$4"
dataArray = Range(myAddress).Value2

rowStart = LBound(dataArray, 1)
rowEnd = UBound(dataArray, 1)
colStart = LBound(dataArray, 2)
colEnd = UBound(dataArray, 2)

For rowCtr = rowStart To rowEnd
    For colCtr = colStart To colEnd
        Debug.Print rowCtr & ":" & colCtr, vbTab & dataArray(rowCtr, colCtr)
    Next
Next

EDIT2:在我的示例中,我假设地址为 $A$2:$B$4 .
您可以在其前面加上工作表名称。例如Sheet1!$A$2:$B$4Sheet2!$A$2:$B$4
附带说明,数组可以定义为动态的(如果它是一维的)。
例如 dim my1DArray() as Integer
二维数组见以下代码
Dim myArray
Dim dynamicRows As Integer
dynamicRows = 2

ReDim myArray(0 To dynamicRows, 0 To dynamicRows)
myArray(0, 0) = "hello"

dynamicRows = 20
ReDim myArray(0 To dynamicRows, 0 To dynamicRows)
MsgBox myArray(0, 0)
myArray(0, 0) = "hello"

ReDim Preserve myArray(0 To dynamicRows, 0 To dynamicRows)
MsgBox myArray(0, 0)

关于arrays - MS Excel -> 2 列到二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1796852/

相关文章:

php - 根据sql查询结果创建多维数组

excel - 如何在 vbscript 中检测文本文件 (EOF) 的结尾?

html - 单击 VBA 中图像的第二个按钮

python - 使用 Python 打印某个范围的总和值

sql-server-2008 - 在 Excel 中通过 ADODB.connection 连接到 SQL Server 2008 时出现错误 3709

c - 为什么使用不同的循环会得到不同的输出?

javascript - 为什么我的 for 循环从最后一项开始并在一次迭代后停止运行?

vba - 在 vba 中循环时更改原始集合

vba - 错误 运行时错误 '1004' 文档未保存。

c - 字符指针数组和二维数组有什么区别?