如何填充存储在数组中的范围地址

时间:2017-10-03 12:54:55

标签: vba excel-vba excel

我编写用于添加存储在数组中的两个单元格和单元格地址的代码。下面的部分代码显示错误 - 如何从数组中检索单元格地址并添加这些单元格 - 请建议更正

Sub test()

    Dim A1add(1 To 100) As String
    lrw = ThisWorkbook.ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row

    A1add(1) = ThisWorkbook.ActiveSheet.Sheets(1).Range("A2")
    A1add(2) = ThisWorkbook.ActiveSheet.Sheets(1).Range("b2")
    Set add1 = ThisWorkbook.ActiveSheet.Sheets(1).Range("C2")


    Select Case 2

    Case 2

        With add1.Resize(lrw)
            .NumberFormat = "0"
            .Formula = "= ( " & A1add(1).Address(False, False) & "+" & A1add(2).Address(False, False) & " )"
        End With

    End Select

End Sub

1 个答案:

答案 0 :(得分:1)

  

A1add(1) = ThisWorkbook.ActiveSheet.Sheets(1).Range("A2")

将数组的值放在数组中,而不是范围或地址范围。该信息不存储在数组中。

ActiveSheet.Sheets(1).指的是两张纸。删除一个。

在这种情况下,您需要:

  

A1add(1) = ThisWorkbook.ActiveSheet.Range("A2").Address(0,0)

然后公式就会单独使用它。

  

"= ( " & A1add(1) & "+"

所以:

Sub test()

    Dim A1add(1 To 100) As String
    Dim lrw As Long
    Dim Add1 As Range

    lrw = ThisWorkbook.ActiveSheet.Range("A:A").SpecialCells(xlCellTypeLastCell).Row

    A1add(1) = ThisWorkbook.ActiveSheet.Range("A2").Address(0, 0)
    A1add(2) = ThisWorkbook.ActiveSheet.Range("B2").Address(0, 0)
    Set add1 = ThisWorkbook.ActiveSheet.Range("C2")


    Select Case 2

    Case 2

        With add1.Resize(lrw - 1)
            .NumberFormat = "0"
            .Formula = "= ( " & A1add(1) & "+" & A1add(2) & " )"
        End With

    End Select

End Sub