arrays - 具有最大范围Excel VBA的列上的序号

标签 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


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

最佳答案

数组到工作表

  • 在所有三种情况下,而不是 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
    

    关于arrays - 具有最大范围Excel VBA的列上的序号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62056271/

    相关文章:

    c - 将动态变化的数组的值保存到指针 C 中

    java - 为什么要乘而不是求和

    javascript - 使用 fetch 进行 React-native 数组数据分配

    excel - 如何阻止 Excel 提示重新打开工作簿?

    c# - 你调用的对象是空的

    excel - 获取 charcode 值大于十六进制 `FFFF` 的 Unicode 字符

    python - 使用 xlrd 访问 Python 中 Excel 电子表格命名范围交集的值?

    vba - CurrentDb.OpenRecordset 在 VBA 中的使用

    excel - 在设置属性之前是否有任何理由检查它是否已设置?

    c# - 如何使用电子表格工具在 Excel 中添加下拉列表?