具有最大范围 Excel VBA 列上的顺序数字

Gab*_*yes 3 arrays excel vba

我对 VBA 完全陌生,我一直在尝试解决基本问题来练习。我只想用从 1 到 N 的序列号填充一列。 N 号将是特定单元格上的值。

所以 N 值在 C4 单元格上,例如是 5 ,我想从 B2 输出 - BN = 1,2,3,4,5 我有这个代码基于有点类似的问题和我的周期知识,但我可以'让它工作...



Sub ejemplo()

Dim total() As Variant


maximo = Range("C4").Value

For i = 1 To maximo
total(i) = i
Next i

total = Application.WorksheetFunction.Transpose(total)
Range("B7:B").Value = total





End Sub

Run Code Online (Sandbox Code Playgroud)

有时弹出的错误是 total(i) = i 行上的“超出范围”,我真的不知道发生了什么......

VBa*_*008 5

数组到工作表

  • 在所有三种情况下,For i = ...您都可以使用:
    For i = LBound(total) To UBound(total).
  • Transpose限制为最多65536项目,因此请研究不使用它的第三个解决方案。

编码

Option Explicit

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Purpose:      Writes the numbers from 1 to "maximo" to the column range
'               starting with cell "B7".
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 1D array (0-based, 'one-row')
Sub ejemplo1()

    Dim total() As Variant
    Dim maximo As Long
    Dim i As Long

    maximo = Range("C4").Value
    ReDim total(maximo - 1)

    For i = 0 To maximo - 1
        total(i) = i + 1
    Next i

    total = Application.Transpose(total)

    Range("B7").Resize(UBound(total)).Value = total

End Sub

' 1D array (1-based, 'one row')
Sub ejemplo2()

    Dim total() As Variant
    Dim maximo As Long
    Dim i As Long

    maximo = Range("C4").Value
    ReDim total(1 To maximo)

    For i = 1 To maximo
        total(i) = i
    Next i

    total = Application.Transpose(total)

    Range("B7").Resize(UBound(total)).Value = total

End Sub

' 2D array (1-based, 'one column')
Sub ejemplo3()

    Dim total() As Variant
    Dim maximo As Long
    Dim i As Long

    maximo = Range("C4").Value
    ReDim total(1 To maximo, 1 To 1)

    For i = 1 To maximo
        total(i, 1) = i
    Next i

    Range("B7").Resize(UBound(total)).Value = total

End Sub
Run Code Online (Sandbox Code Playgroud)