0

我对 Visual Basic 还是很陌生,但是在将单元格值分配给数组成员时遇到了麻烦。基本上我正在做的是遍历一列并将每个单元格分配给数组的一个新部分。测试代码贴在下面:

Sub Test()
    Dim List(5) As String
    Dim celltext As String

    For i = 1 To 5
        celltxt = ActiveSheet.Range("K" & i).Text
        List(i) = celltext
        MsgBox List(i)
    Next i
End Sub

每次弹出消息框时,它都是空白的,这意味着分配没有工作。这些坐标处的单元格确实有值。有什么线索吗?

4

3 回答 3

2

您正在分配给“celltxt”,但从“celltext”中读取。

在每个模块的顶部添加Option Explicit——这将使这些类型的错误更加明显。

于 2013-11-05T18:00:08.580 回答
1
  1. 当你Dim List(5) As String. 数组中的最低元素 is0和 not 1。您可能希望将其更改为Dim List(1 to 5) As String否则您的第一个元素在数组中将始终为空白。

  2. 您正在使用ActiveSheet. 你确定它是正确的表吗?

试试这个代码

Sub Test()
    Dim List(1 To 5) As String
    Dim ws As Worksheet
    Dim i as Long

    Set ws = ThisWorkbook.Sheets("Sheet1")

    For i = 1 To 5
        List(i) = ws.Range("K" & i).Value
        MsgBox List(i)
    Next i
End Sub
于 2013-11-05T18:00:47.460 回答
1

您也可以尝试:

Dim List As Variant
Dim i As Long

List = ActiveSheet.Range("K1:K5")

For i = 1 To UBound(List)
    MsgBox List(i, 1)
Next i

这将通过仅从工作表读取一次而不是每次循环循环来提高性能。

于 2013-11-05T18:12:53.087 回答