【问题标题】:Error Initializing Array *Type Mismatch*初始化数组时出错*类型不匹配*
【发布时间】:2016-04-27 13:29:07
【问题描述】:

试图利用两个数组来遍历数据传输过程,方法是将单元格从一张表复制并粘贴到新创建的一张表中。下面的代码仅负责以正确的顺序将正确的数据从一张表复制和粘贴到新创建的一张。我在尝试初始化数组时收到类型不匹配。它发生在第一个数组上,但我还没有到第二个数组来测试它,所以它也可能是错误的。

注意事项: 1)firmLocationColumn 是long 类型。 2)存储在所述数组中的所有数据都是为了表示列号。它们是乱序的,所以我需要以正确的顺序将它们存储在数组中,这样更容易迭代它们,而不是一遍又一遍地编写相同的信息。

如果我遗漏了任何需要解释的内容,请告诉我,我将编辑我的问题:

Private Sub GetSpecificTradeDetails(ByVal masterListRow As Long, ByVal firmLocationColumn As Long, ByVal newExcelConfirmSheet As Worksheet, ByVal newExcelConfirmSheetLastRow As Long)

    Dim tradesMasterListColumnIndexArray() As Long
    Dim newExcelConfirmColumnIndexArray() As Long
    Dim arrayIndexCounter As Long

    'Sets array of columns for loop iteration through data sheet
    tradesMasterListColumnIndexArray() = [1,4,firmLocationColumn,(firmLocationColumn - 1),(firmLocationColumn + 3),15,16,10,11,8,19,18,17,(firmLocationColumn + 4),9,6,2]
    newExcelConfirmColumnIndexArray() = [1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18]

    Select Case firmLocationColumn

        Case 25

            'Sets confirm direction to "BUY"
            newExcelConfirmSheet.Cells((newExcelConfirmSheetLastRow + 1), 6) = "BUY"

        Case 27

            'Sets confirm direction to "SELL"
            newExcelConfirmSheet.Cells((newExcelConfirmSheetLastRow + 1), 6) = "SELL"

    End Select

    'Transfers trade details between the masterlist and the newly created confirm sheet
    With TradesMasterSheet

        For arrayIndexCounter = 0 To 17

            .Cells(masterListRow, tradesMasterListColumnIndexArray(arrayIndexCounter)).Copy _
                Destination:=newExcelConfirmSheet.Cells((newExcelConfirmSheetLastRow + 1), newExcelConfirmColumnIndexArray(arrayIndexCounter))

        Next

    End With


End Sub

【问题讨论】:

    标签: arrays vba excel


    【解决方案1】:

    VBA 不支持通过数组字面量初始化数组。但是,它确实有一个Array() 函数:

    Dim tradesMasterListColumnIndexArray As Variant
    Dim newExcelConfirmColumnIndexArray As variant
    
    tradesMasterListColumnIndexArray = Array(1,4,firmLocationColumn,(firmLocationColumn - 1),(firmLocationColumn + 3),15,16,10,11,8,19,18,17,(firmLocationColumn + 4),9,6,2)
    newExcelConfirmColumnIndexArray = Array(1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18)
    

    【讨论】:

    • 非常感谢这位约翰。我没有意识到您无法通过数组文字初始化数组。这解决了问题。非常感谢。我会尽快选择您的答案作为合适的答案。
    猜你喜欢
    • 2011-05-19
    • 2017-07-17
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多