一,数组的下标
VBA里,一个数组是有一定的大小和维数的,而用来标识数组的这些属性的数字,就叫数组的下标,一般是用括号括起来,写在数组的右边
数组的一般表示方法是:
数组名称(下标1,下标2,下标3.....

在这里,每一个下标表示一个维度,用逗号分隔,下标个数代表数组维数
VBA数组最多可以定义60个维度,即后面可以跟60个下标
注意:数组是没有上标这个概念的

每个下标,都有一定范围,来指示该维度的大小
这个范围靠小的那边,称为这个下标的下界(最小下标);靠大的那边,称为这个下标的上界(最大下标)

下标的表示方式基本上有两种:

1. 单个大于等于0的整数表示下标,这时 

该维的下界(最小下标):默认为0 
该维的上界(最大下标):这个整数; 
该维的元素的个数:(这个整数+1); 

该数组元素的个数为:各维个数的乘积。 

arr(4) 
——表示这个数组只有一维,下标是4,下界是0,上界是4,数组的元素个数是

 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在视图菜单中调出本地窗口)
 Ubound函数返回数组的上界
 Lbound函数返回数组的下界

 Sub aa()
    Dim arr(4)
    MsgBox UBound(arr)
    MsgBox LBound(arr)
    Stop
 End Sub

 

arr(1,2) 
——表示这个数组有两维,第一维下标是1,下界是0,上界是1;第二维下标是2,下界是0
上界是2;该数组的元素个数是(1+1×2+1=6 

 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在视图菜单中调出本地窗口)
 Ubound函数返回数组的上界,后面的参数代表返回第几维
 Lbound函数返回数组的下界,后面的参数代表返回第几维

 Sub bb()
    Dim arr(1, 2)
    MsgBox UBound(arr) & "," & UBound(arr, 2)
    MsgBox LBound(arr) & "," & LBound(arr, 2)
    Stop
 End Sub



arr1,0,2) 
——表示该数组有三维,第一维下标是1,下界是0,上界是1;第二维下标是0,下界是0,上界是0;第三维下标是2,下界是0,上界是2;该数组的元素个数是(1+1×0+1×2+1=6 

 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在视图菜单中调出本地窗口)
 Ubound函数返回数组的上界,后面的参数代表返回第几维
 Lbound函数返回数组的下界,后面的参数代表返回第几维

 Sub cc()
    Dim arr(1, 0, 2)
    MsgBox UBound(arr) & "," & UBound(arr, 2) & "," & UBound(arr, 3)
    MsgBox LBound(arr) & "," & LBound(arr, 2) & "," & LBound(arr, 3)
    Stop
 End Sub



2,以区间表示下标,格式为 :(下界 to 上界),这时

该维的下界(最小下标):下界;
该维的上界(最大下标):上界;
该维的元素的个数:上界-下界+1


该数组元素的个数为:各维个数的乘积。

arr(1 to 3)
——表示这个数组只有一维,下标是“1 to 3”,下界是1,上界是3,数组的元素个数是(3-1+1=3
 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在视图菜单中调出本地窗口)
 Ubound函数返回数组的上界,后面的参数代表返回第几维
 Lbound函数返回数组的下界,后面的参数代表返回第几维

 Sub dd()
    Dim arr(1 To 3)
    MsgBox UBound(arr)
    MsgBox LBound(arr)
    Stop
 End Sub



arr(1 to 3,3 to 4, -1 to 1) 
—— 表示该数组有三维,第一维下标是“1 to 3”,下界是1,上界是3;第二维下标是“3 to 4”,下界是3,上界是4;第三维下标是“-1 to 1”,下界是-1,上界是1 该数组的元素个数是(3-1+1×4-3+1×1--1+1=18

 运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在视图菜单中调出本地窗口)
 Ubound函数返回数组的上界,后面的参数代表返回第几维
 Lbound函数返回数组的下界,后面的参数代表返回第几维

 Sub ee()
    Dim arr(1 To 3, 3 To 4, -1 To 1)
    MsgBox UBound(arr) & "," & UBound(arr, 2) & "," & UBound(arr, 3)
    MsgBox LBound(arr) & "," & LBound(arr, 2) & "," & LBound(arr, 3)
    Stop
 End Sub



二,数组元素的下标
数组的每个元素,也分别有自己的下标,当声明了一个固定范围的数组后,其每个元素的下标也同时确定了
元素的下标标识了元素在数组中的相对位置,要知道元素的绝对位置,必须要知道该维度的下界是多少,然后用下标减去下界,得出该元素在该维度的绝对位置
元素某维度的绝对位置 = 该维度的下标 - 该维度的下界 + 1
看上面最后一个例子,我们随便抽出一个元素来看,如arr(3,4,0)这个元素

3代表他在第一维的绝对位置是3,因为第一维的下界是1
4代表第二维的绝对位置是2,因为第儿维的下界为3
0代表第三维的绝对位置为2,因为第三维的下界是-1
Sub txt()
Dim arr As Variant, arrr(), A%
Close #1
Open ThisWorkbook.Path & "\" For Input As #1
A = 1
Do While Not EOF(1)
Line Input #1, arr
ReDim Preserve arrr(1 To A)
arrr(A) = arr
A = A + 1
Loop
Close #1
Range("h1").Resize(UBound(arrr), 1) = Application.WorksheetFunction.Transpose(arrr)
End Sub
Sub ExportTOTXT()
    Dim arr, i&, k%, str$
    Open ThisWorkbook.Path & "\" For Output As #1
    arr = [a1].CurrentRegion
    For i = 1 To UBound(arr)
        str = ""
        For k = 1 To UBound(arr, 2)
            str = str & "," & arr(i, k)
        Next
        str = Right$(str, Len(str) - 1)
        Print #1, str
    Next
    Close #1
    MsgBox "Export success!"
End Sub
1、打开文本文件
在对文件读或写之前,必须使用Open语句打开该文件。
open strFileFullPath [For mode] As As [#]intFileNumber
strFileFullPath 是文件全路径(路径+文件名),为字符串格式。
intFileNumber 是文件号,类型为整形Integer。其值为介于1 和 511 之间的整数。使用FreeFile函数可以返回一个可用的文件号。
形式: intFileNumber = FreeFile
mode 有 Input、Output、Append方式。
Input:读取文件
Output:写文件
Append:写入现有文件的末尾
2、写入文本文件
Write语句产生一行由逗号分隔的值,并在日期的周围放上(#),在字符串的周围放上(")。
写入格式:Write #intFileNumber,str1,str2
Print能写入任何格式的文本文件。
写入格式:Print #intFileNumber,str1,str2
3、读取文本文件resize函数vba
Input语句认为数据如Write语句产生的那样并读取数据到变量列表中。
读取格式:Input #intFileNumber,str1,str2
Line Input方式将读取整行字符串。
读取格式:Line Input # iniFileNumber,strLine
4、关闭文本文件
Close #intFileNumber
vbCr                                Chr(13)                                        回车符。
vbCrLf                              Chr(13) & Chr(10)                      回车符与换行符。
vbFormFeed                          Chr(12)                            换页符;在 Microsoft Windows 中不适用。
vbLf                                Chr(10)                                      换行符。
vbNewLine                          Chr(13) & Chr(10) 或 Chr(10)  平台指定的新行字符;适用于任
何平台。
vbNullChar                        Chr(0)                          值为 0 的字符。
vbNullString 值为 0 的字符串                                          与零长度字符串 ("") 不同;用于调用外部过程。 vbTab                              Chr(9)                                        水平附签。
vbVerticalTab                Chr(11)                                    垂直附签;在 Microsoft Windows 中不用

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。