使用数组值分配新的Excel文件

时间:2018-03-01 19:04:39

标签: excel vba

我的VBA脚本基本上是从第三方转换我们的公司格式。 到目前为止我做了什么,我转换数据和存储字符串数组。现在我想打开新的excel文件并存储字符串数组。如何使用我的阵列分配新的excel文件?如果有人能帮助我,我真的很感激。

由于

if [ "$userSelection" -ne 1 ] && [ "$userSelection" -ne 2 ] && [ "$userSelection" -ne 3 ]
then 
    echo "Option selected not valid...please try again."
fi

3 个答案:

答案 0 :(得分:0)

以下是我认为你可以做的,在你打开新工作簿的子程序中传递你的数组。

Public Sub Test()
    Dim a(10) As Variant
    For i = 0 To UBound(arry, 1)
        a(i) = i * 2
    Next

    ParseArray a
  End Sub


Public Sub ParseArray(arrValues() As Variant)

    Dim wb As Workbook
    Set wb = Workbooks.Add

    For i = 0 To UBound(arrValues, 1)
        ActiveSheet.Cells(i + 1, 1) = arrValues(i)
    Next
End Sub

答案 1 :(得分:0)

您可以将整个数组分配到一个范围(它们必须匹配大小),但是一维数组是一行高多列,其中2 + D数组是行相关的。这应该将转置的数组写为1列,而不是数组中的行数

Dim RNG As Range
Set RNG = ActiveWorkSheet.Range("A1")
Set RNG = Destination.Resize(UBound(arrResult), 1)
RNG.Value = Application.Transpose(arrResult)

答案 2 :(得分:0)

下面是一些代码,演示如何创建数组,然后将其分配给新工作簿。您应该能够修改代码以使用此

请注意,创建的数组是2D

  • 第一个维度代表行
  • 第二个维度代表列

然后将此创建的数组传递给第二个Sub,这将添加一个新的工作簿(基于您的默认模板,尽管您可以更改它)

  • 请注意,目标范围的大小应与传递的数组
  • 相同
  • 请注意,只需一步即可将数组写入工作表。
Option Explicit
Sub CreateTestArray()
    Dim myArr() As Variant
    Dim I As Long, J As Long

ReDim myArr(1 To 10, 1 To 2)

For I = 1 To 10
    For J = 1 To 2
        myArr(I, J) = Int((999 - 100 + 1) * Rnd + 100)
    Next J
Next I

WriteToNewWB myArr    
End Sub

'-------------------------------------

Sub WriteToNewWB(arr)
    Dim WB As Workbook
    Dim R As Range

Set WB = Workbooks.Add

Set R = WB.Worksheets(1).Cells(1, 1)
Set R = R.Resize(rowsize:=UBound(arr, 1), columnsize:=UBound(arr, 2))

With R
    .Value = arr
    .EntireColumn.AutoFit
End With
End Sub