如何在Visual Basic中将带有字符串的excel单元格分配给数组值?

时间:2013-11-05 17:57:03

标签: arrays excel-vba vba excel

我对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

每次弹出消息框时,它都是空白的,这意味着分配不起作用。这些坐标DO处的单元具有值。有线索吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

  1. 当你Dim List(5) As String时。数组中的最低元素是0而不是1。您可能希望将其更改为Dim List(1 to 5) As String,否则您的第一个元素将始终为数组中的空白。

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

  3. 试试此代码

    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
    

答案 2 :(得分: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

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