精华内容
下载资源
问答
  • vba_获取使用行数和列数,vba_获取使用行数和列数,vba_获取使用行数和列数
  • 原来的问题和代码 Sub ponyma1() Dim arr1() '和arr1()下面赋值要一致?要么都arr? j = 0 '生成数组 arr1() = Range("a1" &...'注意数组写法 arr(1,2)是个2维数组 '从 excel 的 range 读的内...

     

    原来的问题和代码

     

    Sub ponyma1()
    
    Dim arr1() '和arr1()下面赋值要一致?要么都arr?
    j = 0
    
    '生成数组
    arr1() = Range("a1" & ":" & "a" & Range("a65535").End(xlUp).Row)
    '注意数组写法 arr(1,2)是个2维数组
    '从 excel 的 range 读的内容,一定是二维数组
    '特殊的是1列,是2维数组,但可以当成1维数组用?
    'arr1()动态数组,维数未确定,或未显示,未知
    Debug.Print arr1(1, 1)
    
    For Each i In arr1()
    '  Debug.Print arr1(i)
      Debug.Print j, i
      j = j + 1
    Next i
    
    '上面j只是个循环计数,并不是真实的index
    '这样可以取到真实的数组index范围,但还没有对应起来
    Debug.Print LBound(arr1), UBound(arr1)
    '如果是2维等 lbound(arr,2)
    
    
    
    '如果想取到每个array里的元素的index呢?
    
    For Each i In arr1()
       Debug.Print WorksheetFunction.Match(i, arr1, 0), i
    Next
    
    
    End Sub
    

     

    改颜色

    一步一步的解决

    先来一维数组

     

     

    再来二维数组

    Sub ponyma1()
    
    Dim arr1(2, 2)
    
    arr1(0, 0) = 1
    arr1(0, 1) = 2
    arr1(0, 2) = 3
    arr1(1, 0) = 4
    arr1(1, 1) = 5
    arr1(1, 2) = 6
    arr1(2, 0) = 7
    arr1(2, 1) = 8
    arr1(2, 2) = 9
    
    
    For Each i In arr1()
       Debug.Print i
    Next
    
    Debug.Print ""
    
    For i = 0 To 2
        For j = 0 To 2
            Debug.Print arr1(i, j)
        Next
    Next
    
    Debug.Print ""
    
    
    For Each i In arr1()
       Debug.Print Application.Match(i, arr1(), 0), i
    Next
    
    
    
    End Sub
    

     

     

    展开全文
  • VBA 获取二维数组的行数和列数

    千次阅读 2013-01-22 13:11:00
    Dim arr As Variant ReDim arr(3, 4) Dim row As Long Dim col As Long row = UBound(arr, 1) col = UBound(arr, 2) 转载于:https://www.cnblogs.com/nchxmoon/archive/2013/01/22/2871208.html...

      Dim arr As Variant
      ReDim arr(3, 4)
        Dim row As Long
        Dim col As Long
        row = UBound(arr, 1)
        col = UBound(arr, 2)

    转载于:https://www.cnblogs.com/nchxmoon/archive/2013/01/22/2871208.html

    展开全文
  • 获得数组的行数和列数

    千次阅读 2018-03-30 10:19:34
    array1.GetLength(0) 获得第一维的长度(行数),array1.GetLength(1)获得第二维的长度(列数)。如:int [,]array1=new int[,]{{1,2,3},{4,5,6}};int[,] array = new int[2, 3];array .GetLength(0) = 2array ....

    array1.GetLength(0) 获得第一维的长度(行数),array1.GetLength(1)获得第二维的长度(列数)。
    如:

    int [,]array1=new int[,]{{1,2,3},{4,5,6}};

    int[,] array = new int[2, 3];
    array .GetLength(0) = 2
    array .GetLength(1) = 3

    展开全文
  • 数组不改变值的情况下只能增加,如果要增加行,只能先转置,再增加,然后转置还原; 如果数组存储了null,则不能被转置,因此在存入空值时需要过滤; 经过多次实验证明:VBA数组起始标只能以1开始,否则...

    应用场景:

    从数据库获取数据暂存,多表汇总,数据分析等,因为数组是存在于内存的,所以运行速度会非常快。

    一、先总结数组的特性

    1. 数组转置必须在同过程或同函数内redim  否则报无效 redim;
    2. 起始标必须为1,不能大于1也不能小于1,否则报类型不匹配错误;  
    3. 数组不改变值的情况下只能增加列的数,如果要增加行,只能先转置,再增加,然后转置还原;
    4. 如果数组存储了null,则不能被转置,因此在存入空值时需要过滤; 
    5. 经过多次实验证明:VBA的数组起始标只能以1开始,否则无法转置

    二、列表设计思路

    1. 利用类模块,当成对象开发;
    2. 生成数组是二维数组,每个维度的长度都可以通过参数设置;
    3. 通过行标列表添加数据;
    4. 直接最后一行后默认加入一行数据;
    5. 可以获取行和列的长度;
    6. 注意:如果是空值则不存入数组,否则数组将无法转置,将导致无法动态变动。

    三、代码实现

           定义私有变量

    Private qh_row_count
    Private qh_cloumn_count
    Private qh_row_star
    Private qh_cloumn_star
    Private qh_array
    
    Private qh_array_bool As Boolean
    Private qh_XieRu_msg As String         '阙_写入数据
    Private qh_XieRu_flag As Boolean          '阙_写入数据
    Private qh_MoJiaHang_msg As String     '阙_末行后增加数据
    Private qh_MoJiaHang_flag As Boolean    '阙_末行后增加数据

           设置传入行列的长度

    Property Let 阙_行长度(qh_data)
    qh_row_count = qh_data
    End Property
    Property Let 阙_列长度(qh_data)
    qh_cloumn_count = qh_data
    End Property

         创建二维数组

    Property Get 阙_创建数组()
    
    '默认值  阙辉
    If qh_row_count = "" Then qh_row_count = 1
    If qh_cloumn_count = "" Then qh_cloumn_count = 1
    If qh_row_star = "" Then qh_row_star = 1
    If qh_cloumn_star = "" Then qh_cloumn_star = 1
    
    qh_row_star = 1
    qh_cloumn_star = 1
    
    '创建数组  阙辉
    ReDim qh_array(qh_row_star To qh_row_count, qh_cloumn_star To qh_cloumn_count)
    
    qh_array_bool = True  '如果为真表示数组已创建,否则没创建
    '阙_创建数组 = qh_array
    
    End Property
    

         按行列写入数值(可获取写入的状态和返回的消息)

    Property Get 阙_写入数据(qh_row, qh_cloumn, qh_value)
    Dim qh_row_flag As Boolean
    Dim qh_cloumn_flag As Boolean
    
    '初始化默认值
    qh_XieRu_flag = False
    qh_row_flag = False
    qh_cloumn_flag = False
    qh_XieRu_msg = ""
    qh_msg = ""
    
    qh_row_last = UBound(qh_array, 1)
    qh_row_star = LBound(qh_array, 1)
    qh_cloumn_last = UBound(qh_array, 2)
    qh_cloumn_star = LBound(qh_array, 2)
    
    '如果行不在行标中则qh_row_flag为真
    If qh_row >= qh_row_star And qh_row <= qh_row_last Then
        qh_row_flag = True
        qh_msg = "行不在范围,QH!"
    End If
    qh_XieRu_msg = qh_msg
    
    '如果行不在列标中则qh_cloumn_flag为真
    If qh_cloumn >= qh_cloumn_star And qh_cloumn <= qh_cloumn_last Then
        qh_cloumn_flag = True
        qh_msg = "列不在范围,QH!"
    End If
    If qh_XieRu_msg <> "" Then
        qh_XieRu_msg = qh_XieRu_msg & "_" & qh_msg
    Else
        qh_XieRu_msg = qh_msg
    End If
    
    '防止行标和列标越界  越界则不写入数据,且不会报错,在写程序时建议先预制检验行列是否在范围内
    If qh_row_flag And qh_cloumn_flag Then
        If qh_value <> "" Then  '空值写入数组后是null,会导致数组无法转置
            qh_array(qh_row, qh_cloumn) = qh_value
            qh_XieRu_flag = True   '返回真
            qh_XieRu_msg = "成功写入数组,QH!"
        End If
    End If
    阙_写入数据 = qh_array
    End Property
    
    Property Get 阙_写入数据_消息()   '应紧跟阙_写入数据后面获取,否则消息被更新
        阙_写入数据_消息 = qh_XieRu_msg
    End Property
    Property Get 阙_写入数据_状态()   '应紧跟阙_写入数据后面获取,否则状态被更新
        阙_写入数据_状态 = qh_XieRu_flag
    End Property

           默认在最后添加行

    Property Get 阙_末行后增加数据(qh_array_data)    '不改变数组结构情况下,在最后一行添加数据
    Dim qh_LBound_XiuZheng
    
    qh_MoJiaHang_flag = False
    qh_MoJiaHang_msg = ""
    qh_add_count = 1   '默认增加一行
    
    qh_cloumn_star_n = LBound(qh_array, 2)    '结果数组的起始列标
    qh_array_data_cloumn_star_n = LBound(qh_array_data)    '传入数组的数组的起始列标
    
    
    qh_array_data_l = qh_len_arr(qh_array_data)
    qh_array_l = qh_len_arr_duo(qh_array)(1)
    
    If qh_cloumn_star_n = qh_array_data_cloumn_star_n Then
        qh_LBound_XiuZheng = 0
    Else
        qh_LBound_XiuZheng = qh_array_data_cloumn_star_n - qh_cloumn_star_n
    End If
    
    
    qh_array = qh_add_row(qh_array, qh_add_count)
    qh_row_last = UBound(qh_array, 1)
    
    If qh_array_l >= qh_array_data_l Then   '判断写入的列数是否小于二维数组的列数
        For qh_i = qh_cloumn_star_n To qh_array_l
            qh_row_array = qh_array_data(qh_i + qh_LBound_XiuZheng)
            If qh_row_array <> "" Then
                qh_array(qh_row_last, qh_i) = qh_array_data(qh_i + qh_LBound_XiuZheng)
                qh_MoJiaHang_flag = True
                qh_MoJiaHang_msg = "成功写入数组,QH!"
            End If
        Next
    End If
    
    阙_末行后增加数据 = qh_array
    
    End Property

            获取列表的属性值

    Property Get 阙_起始行标()
    qh_row_star = LBound(qh_array, 1)
    阙_起始行标 = qh_row_star
    End Property
    Property Get 阙_最末行标()
    qh_row_last = UBound(qh_array, 1)
    阙_最末行标 = qh_row_last
    End Property
    Property Get 阙_起始列标()
    qh_cloumn_star = LBound(qh_array, 2)
    阙_起始列标 = qh_cloumn_star
    End Property
    Property Get 阙_最末列标()
    qh_cloumn_last = UBound(qh_array, 2)
    阙_最末列标 = qh_cloumn_last
    End Property
    Property Get 阙_行的长度()
    qh_len = qh_len_arr_duo(qh_array)(0)
    阙_行的长度 = qh_len
    End Property
    Property Get 阙_列的长度()
    qh_len_2 = qh_len_arr_duo(qh_array)(1)
    阙_列的长度 = qh_len_2
    End Property

         以上功能需要调用通用函数方法

    Private Function qh_add_row(qh_array_new0, qh_add_count0)   '增加二维数组行函数
    
    '1.数组转置必须在同过程或同函数内redim  否则报无效 redim  阙辉
    '2.起始标必须为1,不能大于1也不能小于1,否则报类型不匹配错误    阙辉
    '3.数组不改变值的情况下只能增加列的数,如果要增加行,只能先转置,再增加,然后转置还原
    '4.如果数组存储了null,则不能被转置,因此在存入空值时需要过滤   阙辉
    
    Dim qh_array_new
    Dim qh_array_new_new
    
    qh_array_new = qh_array_new0
    qh_add_count = qh_add_count0   '传入需要增加的行
    
    'qh_row_last_n = UBound(qh_array_new, 1)
    'qh_row_star_n = LBound(qh_array_new, 1)
    'qh_cloumn_last_n = UBound(qh_array_new, 2)
    'qh_cloumn_star_n = LBound(qh_array_new, 2)
    
    qh_len = qh_len_arr_duo(qh_array_new)(0)
    qh_len_2 = qh_len_arr_duo(qh_array_new)(1)
    
    ReDim qh_array_new_new(1 To qh_len, 1 To qh_len_2)
    qh_array_new_new = qh_array_new
    'qh_array_new = qh_array_new0
    
    
    
    'qh_array_new = qh_array_new0   '传入的数组
    
    qh_array_new_row = qh_len + qh_add_count
    'MsgBox qh_array_new_row
    
    qh_array_new_new = Application.Transpose(qh_array_new_new)
    ReDim Preserve qh_array_new_new(1 To qh_len_2, 1 To qh_array_new_row)
    qh_array_new_new = Application.Transpose(qh_array_new_new)
    
    qh_add_row = qh_array_new_new
    
    End Function
    Private Function qh_add_cloumn(qh_array_new0, qh_add_count0)   '增加二维数组列函数
    
    '1.数组转置必须在同过程或同函数内redim  否则报无效 redim  阙辉
    '2.起始标必须为1,不能大于1也不能小于1,否则报类型不匹配错误    阙辉
    '3.数组不改变值的情况下只能增加列的数,如果要增加行,只能先转置,再增加,然后转置还原
    '4.如果数组存储了null,则不能被转置,因此在存入空值时需要过滤   阙辉
    
    Dim qh_array_new
    Dim qh_array_new_new
    
    qh_array_new = qh_array_new0
    qh_add_count = qh_add_count0   '传入需要增加的列
    
    'qh_row_last_n = UBound(qh_array_new, 1)
    'qh_row_star_n = LBound(qh_array_new, 1)
    'qh_cloumn_last_n = UBound(qh_array_new, 2)
    'qh_cloumn_star_n = LBound(qh_array_new, 2)
    
    qh_len = qh_len_arr_duo(qh_array_new)(0)
    qh_len_2 = qh_len_arr_duo(qh_array_new)(1)
    
    ReDim qh_array_new_new(1 To qh_len, 1 To qh_len_2)
    qh_array_new_new = qh_array_new
    'qh_array_new = qh_array_new0
    
    
    
    'qh_array_new = qh_array_new0   '传入的数组
    
    qh_array_new_cloumn = qh_len_2 + qh_add_count
    'MsgBox qh_array_new_row
    
    'qh_array_new_new = Application.Transpose(qh_array_new_new)
    ReDim Preserve qh_array_new_new(1 To qh_len, 1 To qh_array_new_cloumn)
    'qh_array_new_new = Application.Transpose(qh_array_new_new)
    
    qh_add_row = qh_array_new_new
    
    End Function
    Private Function qh_len_arr_duo(qh_array0)    '计算数组的长度  作者:阙辉   2021.02.24
    Dim qh_array
    Dim qh_array_1, qh_array_2
    
    qh_array = qh_array0
    qh_array_1 = UBound(qh_array, 1) - LBound(qh_array, 1) + 1
    qh_array_2 = UBound(qh_array, 2) - LBound(qh_array, 2) + 1
    
    
    
    qh_len_arr_duo = Array(qh_array_1, qh_array_2)
    End Function
    Function qh_len_arr(qh_array0)    '计算数组的长度  作者:阙辉   2021.02.24
    Dim qh_array
    Dim qh_array_l
    
    qh_array = qh_array0
    qh_array_l = UBound(qh_array) - LBound(qh_array) + 1
    
    qh_len_arr = qh_array_l
    
    End Function
    
    

    四、完整的代码展示

    '经过多次实验证明:VBA的数组起始标只能以1开始,否则无法转置
    Private qh_row_count
    Private qh_cloumn_count
    Private qh_row_star
    Private qh_cloumn_star
    Private qh_array
    
    Private qh_array_bool As Boolean
    Private qh_XieRu_msg As String         '阙_写入数据
    Private qh_XieRu_flag As Boolean          '阙_写入数据
    Private qh_MoJiaHang_msg As String     '阙_末行后增加数据
    Private qh_MoJiaHang_flag As Boolean    '阙_末行后增加数据
    Property Let 阙_行长度(qh_data)
    qh_row_count = qh_data
    End Property
    Property Let 阙_列长度(qh_data)
    qh_cloumn_count = qh_data
    End Property
    'Property Let 阙_行起始(qh_data)
    'qh_row_star = qh_data
    'End Property
    'Property Let 阙_列起始(qh_data)
    'qh_cloumn_star = qh_data
    'End Property
    Property Get 阙_创建数组()
    
    '默认值  阙辉
    If qh_row_count = "" Then qh_row_count = 1
    If qh_cloumn_count = "" Then qh_cloumn_count = 1
    If qh_row_star = "" Then qh_row_star = 1
    If qh_cloumn_star = "" Then qh_cloumn_star = 1
    
    qh_row_star = 1
    qh_cloumn_star = 1
    
    ''修正长度值  阙辉
    'If qh_row_star = 0 Then
    '    qh_row_count = qh_row_count - 1
    'ElseIf qh_row_star > 1 Then
    '    qh_row_count = qh_row_count + qh_row_star
    'ElseIf qh_row_star < 0 Then
    '    qh_row_count = qh_row_count + qh_row_star - 1
    'End If
    'If qh_cloumn_star = 0 Then
    '    qh_cloumn_count = qh_cloumn_count - 1
    'ElseIf qh_cloumn_star > 1 Then
    '    qh_cloumn_count = qh_cloumn_count + qh_cloumn_star
    'ElseIf qh_cloumn_star < 0 Then
    '    qh_cloumn_count = qh_cloumn_count + qh_cloumn_star - 1
    'End If
    
    '创建数组  阙辉
    ReDim qh_array(qh_row_star To qh_row_count, qh_cloumn_star To qh_cloumn_count)
    
    qh_array_bool = True  '如果为真表示数组已创建,否则没创建
    '阙_创建数组 = qh_array
    
    End Property
    Property Get 阙_起始行标()
    qh_row_star = LBound(qh_array, 1)
    阙_起始行标 = qh_row_star
    End Property
    Property Get 阙_最末行标()
    qh_row_last = UBound(qh_array, 1)
    阙_最末行标 = qh_row_last
    End Property
    Property Get 阙_起始列标()
    qh_cloumn_star = LBound(qh_array, 2)
    阙_起始列标 = qh_cloumn_star
    End Property
    Property Get 阙_最末列标()
    qh_cloumn_last = UBound(qh_array, 2)
    阙_最末列标 = qh_cloumn_last
    End Property
    Property Get 阙_行的长度()
    qh_len = qh_len_arr_duo(qh_array)(0)
    阙_行的长度 = qh_len
    End Property
    Property Get 阙_列的长度()
    qh_len_2 = qh_len_arr_duo(qh_array)(1)
    阙_列的长度 = qh_len_2
    End Property
    Property Get 阙_写入数据(qh_row, qh_cloumn, qh_value)
    Dim qh_row_flag As Boolean
    Dim qh_cloumn_flag As Boolean
    
    '初始化默认值
    qh_XieRu_flag = False
    qh_row_flag = False
    qh_cloumn_flag = False
    qh_XieRu_msg = ""
    qh_msg = ""
    
    qh_row_last = UBound(qh_array, 1)
    qh_row_star = LBound(qh_array, 1)
    qh_cloumn_last = UBound(qh_array, 2)
    qh_cloumn_star = LBound(qh_array, 2)
    
    '如果行不在行标中则qh_row_flag为真
    If qh_row >= qh_row_star And qh_row <= qh_row_last Then
        qh_row_flag = True
        qh_msg = "行不在范围,QH!"
    End If
    qh_XieRu_msg = qh_msg
    
    '如果行不在列标中则qh_cloumn_flag为真
    If qh_cloumn >= qh_cloumn_star And qh_cloumn <= qh_cloumn_last Then
        qh_cloumn_flag = True
        qh_msg = "列不在范围,QH!"
    End If
    If qh_XieRu_msg <> "" Then
        qh_XieRu_msg = qh_XieRu_msg & "_" & qh_msg
    Else
        qh_XieRu_msg = qh_msg
    End If
    
    '防止行标和列标越界  越界则不写入数据,且不会报错,在写程序时建议先预制检验行列是否在范围内
    If qh_row_flag And qh_cloumn_flag Then
        If qh_value <> "" Then  '空值写入数组后是null,会导致数组无法转置
            qh_array(qh_row, qh_cloumn) = qh_value
            qh_XieRu_flag = True   '返回真
            qh_XieRu_msg = "成功写入数组,QH!"
        End If
    End If
    阙_写入数据 = qh_array
    End Property
    Property Get 阙_写入数据_消息()   '应紧跟阙_写入数据后面获取,否则消息被更新
        阙_写入数据_消息 = qh_XieRu_msg
    End Property
    Property Get 阙_写入数据_状态()   '应紧跟阙_写入数据后面获取,否则状态被更新
        阙_写入数据_状态 = qh_XieRu_flag
    End Property
    Property Get 阙_末行后增加数据(qh_array_data)    '不改变数组结构情况下,在最后一行添加数据
    Dim qh_LBound_XiuZheng
    
    qh_MoJiaHang_flag = False
    qh_MoJiaHang_msg = ""
    qh_add_count = 1   '默认增加一行
    
    qh_cloumn_star_n = LBound(qh_array, 2)    '结果数组的起始列标
    qh_array_data_cloumn_star_n = LBound(qh_array_data)    '传入数组的数组的起始列标
    
    
    qh_array_data_l = qh_len_arr(qh_array_data)
    qh_array_l = qh_len_arr_duo(qh_array)(1)
    
    If qh_cloumn_star_n = qh_array_data_cloumn_star_n Then
        qh_LBound_XiuZheng = 0
    Else
        qh_LBound_XiuZheng = qh_array_data_cloumn_star_n - qh_cloumn_star_n
    End If
    
    
    qh_array = qh_add_row(qh_array, qh_add_count)
    qh_row_last = UBound(qh_array, 1)
    
    If qh_array_l >= qh_array_data_l Then   '判断写入的列数是否小于二维数组的列数
        For qh_i = qh_cloumn_star_n To qh_array_l
            qh_row_array = qh_array_data(qh_i + qh_LBound_XiuZheng)
            If qh_row_array <> "" Then
                qh_array(qh_row_last, qh_i) = qh_array_data(qh_i + qh_LBound_XiuZheng)
                qh_MoJiaHang_flag = True
                qh_MoJiaHang_msg = "成功写入数组,QH!"
            End If
        Next
    End If
    
    阙_末行后增加数据 = qh_array
    
    End Property
    Private Function qh_add_row(qh_array_new0, qh_add_count0)   '增加二维数组行函数
    
    '1.数组转置必须在同过程或同函数内redim  否则报无效 redim  阙辉
    '2.起始标必须为1,不能大于1也不能小于1,否则报类型不匹配错误    阙辉
    '3.数组不改变值的情况下只能增加列的数,如果要增加行,只能先转置,再增加,然后转置还原
    '4.如果数组存储了null,则不能被转置,因此在存入空值时需要过滤   阙辉
    
    Dim qh_array_new
    Dim qh_array_new_new
    
    qh_array_new = qh_array_new0
    qh_add_count = qh_add_count0   '传入需要增加的行
    
    'qh_row_last_n = UBound(qh_array_new, 1)
    'qh_row_star_n = LBound(qh_array_new, 1)
    'qh_cloumn_last_n = UBound(qh_array_new, 2)
    'qh_cloumn_star_n = LBound(qh_array_new, 2)
    
    qh_len = qh_len_arr_duo(qh_array_new)(0)
    qh_len_2 = qh_len_arr_duo(qh_array_new)(1)
    
    ReDim qh_array_new_new(1 To qh_len, 1 To qh_len_2)
    qh_array_new_new = qh_array_new
    'qh_array_new = qh_array_new0
    
    
    
    'qh_array_new = qh_array_new0   '传入的数组
    
    qh_array_new_row = qh_len + qh_add_count
    'MsgBox qh_array_new_row
    
    qh_array_new_new = Application.Transpose(qh_array_new_new)
    ReDim Preserve qh_array_new_new(1 To qh_len_2, 1 To qh_array_new_row)
    qh_array_new_new = Application.Transpose(qh_array_new_new)
    
    qh_add_row = qh_array_new_new
    
    End Function
    Private Function qh_add_cloumn(qh_array_new0, qh_add_count0)   '增加二维数组列函数
    
    '1.数组转置必须在同过程或同函数内redim  否则报无效 redim  阙辉
    '2.起始标必须为1,不能大于1也不能小于1,否则报类型不匹配错误    阙辉
    '3.数组不改变值的情况下只能增加列的数,如果要增加行,只能先转置,再增加,然后转置还原
    '4.如果数组存储了null,则不能被转置,因此在存入空值时需要过滤   阙辉
    
    Dim qh_array_new
    Dim qh_array_new_new
    
    qh_array_new = qh_array_new0
    qh_add_count = qh_add_count0   '传入需要增加的列
    
    'qh_row_last_n = UBound(qh_array_new, 1)
    'qh_row_star_n = LBound(qh_array_new, 1)
    'qh_cloumn_last_n = UBound(qh_array_new, 2)
    'qh_cloumn_star_n = LBound(qh_array_new, 2)
    
    qh_len = qh_len_arr_duo(qh_array_new)(0)
    qh_len_2 = qh_len_arr_duo(qh_array_new)(1)
    
    ReDim qh_array_new_new(1 To qh_len, 1 To qh_len_2)
    qh_array_new_new = qh_array_new
    'qh_array_new = qh_array_new0
    
    
    
    'qh_array_new = qh_array_new0   '传入的数组
    
    qh_array_new_cloumn = qh_len_2 + qh_add_count
    'MsgBox qh_array_new_row
    
    'qh_array_new_new = Application.Transpose(qh_array_new_new)
    ReDim Preserve qh_array_new_new(1 To qh_len, 1 To qh_array_new_cloumn)
    'qh_array_new_new = Application.Transpose(qh_array_new_new)
    
    qh_add_row = qh_array_new_new
    
    End Function
    Private Function qh_len_arr_duo(qh_array0)    '计算数组的长度  作者:阙辉   2021.02.24
    Dim qh_array
    Dim qh_array_1, qh_array_2
    
    qh_array = qh_array0
    qh_array_1 = UBound(qh_array, 1) - LBound(qh_array, 1) + 1
    qh_array_2 = UBound(qh_array, 2) - LBound(qh_array, 2) + 1
    
    
    
    qh_len_arr_duo = Array(qh_array_1, qh_array_2)
    End Function
    Function qh_len_arr(qh_array0)    '计算数组的长度  作者:阙辉   2021.02.24
    Dim qh_array
    Dim qh_array_l
    
    qh_array = qh_array0
    qh_array_l = UBound(qh_array) - LBound(qh_array) + 1
    
    qh_len_arr = qh_array_l
    
    End Function
    
    

    五、调用测试

    Sub testarray()
    Dim qh_arr As New 阙_数组_DataFrame
    'qh_arr.阙_行起始 = 2
    'qh_arr.阙_列起始 = 2
    qh_arr.阙_行长度 = 1
    qh_arr.阙_列长度 = 3
    aa = qh_arr.阙_创建数组
    
    aa = qh_arr.阙_写入数据(1, 2, 12)
    qh_q1 = qh_arr.阙_写入数据_消息
    qh_q2 = qh_arr.阙_写入数据_状态
    a = qh_arr.阙_起始行标
    b = qh_arr.阙_最末行标
    c = qh_arr.阙_起始列标
    d = qh_arr.阙_最末列标
    
    aa = qh_arr.阙_末行后增加数据(Array(2, "quehui", 3))
    
    
    g = qh_arr.阙_列的长度
    
    End Sub

     

    展开全文
  • PHP还是比较常用的,于是我研究了一下PHP二维数组。在处理php数组的时候,有一种需求特别的频繁,如下二维数组: ...1:最简单的,foreach遍历数组: foreach ($arr as $key => $value) { $arr2[] = $value['n
  • VBA数组

    千次阅读 2019-05-03 01:49:57
    VBA数组详解
  • 动态数组使用: https://zhidao.baidu.com/question/1432222709706721499.html 使用Redim动态数组即可。 1 2 3 4 5 6 7 8 Subtest1() Dima()AsInteger,iRowAsLong,iAsInteger iRow=C...
  • Excel-VBA-数组-02-数组遍历

    千次阅读 2020-05-30 07:55:26
    今天说说如何获取数组的每一个元素 Part 1:实现内容 依然针对1维和2维数组进行讲解 示例结构如下 数组1:1维数组,包含3个元素 数组2:2维数组,包含6个元素 目标在于打印输出数组中的每一个元素,下文提供了...
  • VBA 数组 巧用

    万次阅读 2012-04-24 16:21:03
    数组是一个相当好的变量集合,里面可以存放许多按实际要求但是不可意料其值的值!  要使用数组,首先要定义数组,方能使用,如何定义,在上一篇已做了说明,在此不再阐述!  数组根据不同的需求,可分为静态数组...
  • Excel VBA将某数值存入一个数组

    万次阅读 2016-11-27 23:54:58
    Sub test() Dim arr() As String '定义动态数组 Dim n As Long Dim i As Integer n = Application.WorksheetFunction.CountA(Range("A:A")) '确定A非空数据数量 ReDim arr(1 To n) As String
  • 将数据源的两列数据对应成两个数组,分别读入到数组中,再使用输入单元格的数值和数组数值对比,如果相等,则返回第二个数组的对应值。 Sub test2() '合并,速度更快 Dim i '用于数组的索引,如果数据量很大,用int...
  • 1 数组的不同定义方式,会导致 index的起点不同 总结,简单的说,就是VBA里的数值,index默认从0 开始,而从工作表来源的函数,默认index从1开始 用VBA的数值array() 或者 dim 或者 redim 这几种方法,默认index从...
  • excel数据生成对象元素数组 VBA

    千次阅读 2019-05-15 13:50:09
    现在想法是一列数复制进excel里点击生成对象元素数组导出txt文件直接可以用了。 以下为office2016的excel为例。 开发工具 打开excel。看菜单栏,看有没有开发工具,如果没有。点文件--选项--自定义功能区--右边,...
  • 由于该数据将原本的四信息合并至一个单元格中,现希望利用数组对该数据进行分列,将其分为四。 关键词;关注指数;升降幅度;升降位次 小胸钢托聚拢游泳衣;12;9%;13位 泳衣 女 三件套;32;13%;12位 泳衣 四...
  • 浅谈VBA中使用数组处理工作表数据

    千次阅读 2018-02-28 12:55:53
    这时经常用到的解决方法就是使用数组保存数据,在内存中进行数据处理和加工,最后一次行更新工作表,这样的操作方式往往会极大提升程序的运行效率。 读取数据 声明变量 首先如何声明用于保存单元格内容的...
  • 第五篇数组和引用 01 设置动态计算区域OFFSET函数 02 设置间接引用区域INDIRECT函数 03 什么是数组数组运算和数组公式 04 函数劳模SUMPRODUCT 05 一对多查询组合函数 06 动态信息CELL函数 07 筛选状态下的数据...
  • 1.利用自带的columns函数 ...按照字符"$"进行拆分得到数组,索引为2的就是我们需要的字母 Function ColLetter(Num As Long) As String ColLetter = Split(Columns(Num).Address, "$")(2) End Function ...
  • Ubound和Lbound函数获取数组的上下限 ForEach---Next循环遍历数组的注意事项 计算程序运行的时间 数组处理的极限 示例 如图所示,该表为某公司的产品销售记录。现需要根据规格型号建立汇总表,并根据单元格G2...
  •  vba是编程语言,宏是用vba代码保存下来的程序。录制的宏是vba里最简单的程序,正因为如此,录制宏存在许多缺陷:如无法进行判断和循环,不能显示用户窗体,不能进行人机交互……  解决录制宏的这些问题,需要...
  • VBA基础知识整理(事件,数组

    千次阅读 2019-05-13 11:27:03
    ' VBA数组是以变量形式存放的一个空间,它也有行有,也可以是三维空间。 '1) 常量数组 'array(1,2) 'array(array(1,2,4),array("a","b","c")) '2) 静态数组 'x(4) '有5个位置,编号从0~4 'arr(1 to 10) '...
  • vba数组dim 介绍 (Introduction) Within many development languages, there is a popular paradigm of using N-Dimensional arrays. They allow you to write numerical code that would otherwise require many ...
  • VBA中有一个集合对象(collection),Collection 对象是一组可称为“单元”的有序项目的集合,可以理解为可以随意增减数量的一维数组。 Collection对象提供了一种方便的方法,可以将相关的一组项目当作单个对象进行...
  • VBA编程过程中,经常会使用工作表函数Min来确立某组中的最小值。但是工作表函数Min无法适用于二维以上的数组,也无法适用于某一维的大小超过65536的数组。 码 编写含有两个参数的自定义函数,第1个参数为变体...
  • 1 把Excel某一区域的内容读入到数组中: Dim strArray() As Variant Dim wk_data As Variant Set wk_data = Sheets("Sheet1") strArray = wk_data.Range("A1:CV100").Value   2 把数组的内容写入到Excel中 ...
  • VBA判断某数据重复存在

    千次阅读 2017-07-22 21:59:05
    如果数据重复存在,则将重复数据标红色并打印到另一
  • 多条件查询并返回多数据,是在数据查询时经常会使用的功能,利用字典与数组结合,能够高效地实现此功能。数据源图如下。 现需要根据款号,编号两个条件,查询工艺、数量、报价信息,示例代码如下。 Function ...
  • 眼下"人工智能"是一个非常火的词,在抖音上,Phython编程也是被各路网培炒得火热,当然Phython也是有这个实力的....VBA里,所谓"数组",咱们可以理解为一种数据阵列,或者叫做数据矩阵,数组一定是成行...
  • Q:在VBA中如何将SQL得到的数据直接赋值到数组? A:可以利用RecordSet的GetRows方法获取数组。 Sub SQL2Arr() Dim AdoCN As Object Dim AdoRe As Object Dim SQL As String Dim ...
  • 有些时候,我们要将SQL查询得到的结果直接赋值到某数组中,或者要取得查询结果中某一的值。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,138
精华内容 455
关键字:

vba数组获取列数