一,数组的下标
在VBA里,一个数组是有一定的大小和维数的,而用来标识数组的这些属性的数字,就叫数组的下标,一般是用括号括起来,写在数组的右边
数组的一般表示方法是:
在VBA里,一个数组是有一定的大小和维数的,而用来标识数组的这些属性的数字,就叫数组的下标,一般是用括号括起来,写在数组的右边
数组的一般表示方法是:
数组名称(下标1,下标2,下标3.....)
在这里,每一个下标表示一个维度,用逗号分隔,下标个数代表数组维数
VBA数组最多可以定义60个维度,即后面可以跟60个下标
注意:数组是没有“上标”这个概念的
每个下标,都有一定范围,来指示该维度的大小
这个范围靠小的那边,称为这个下标的下界(最小下标);靠大的那边,称为这个下标的上界(最大下标)
下标的表示方式基本上有两种:
1. 单个大于等于0的整数表示下标,这时
该维的下界(最小下标):默认为0;
在这里,每一个下标表示一个维度,用逗号分隔,下标个数代表数组维数
VBA数组最多可以定义60个维度,即后面可以跟60个下标
注意:数组是没有“上标”这个概念的
每个下标,都有一定范围,来指示该维度的大小
这个范围靠小的那边,称为这个下标的下界(最小下标);靠大的那边,称为这个下标的上界(最大下标)
下标的表示方式基本上有两种:
1. 单个大于等于0的整数表示下标,这时
该维的下界(最小下标):默认为0;
该维的上界(最大下标):这个整数;
该维的元素的个数:(这个整数+1);
该数组元素的个数为:各维个数的乘积。
arr(4)
——表示这个数组只有一维,下标是4,下界是0,上界是4,数组的元素个数是5
运行以下代码,在本地窗口显示数组的元素组成(Alt+F11调出VBE编辑器,然后在“视图”菜单中调出本地窗口)
Ubound函数返回数组的上界
Lbound函数返回数组的下界
Sub aa()
Dim arr(4)
该维的元素的个数:(这个整数+1);
该数组元素的个数为:各维个数的乘积。
arr(4)
——表示这个数组只有一维,下标是4,下界是0,上界是4,数组的元素个数是5
运行以下代码,在本地窗口显示数组的元素组成(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,
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
运行以下代码,在本地窗口显示数组的元素组成(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
arr(1,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
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
二,数组元素的下标
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
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) 平台指定的新行字符;适用于任
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 中不用
vbNullChar Chr(0) 值为 0 的字符。
vbNullString 值为 0 的字符串 与零长度字符串 ("") 不同;用于调用外部过程。 vbTab Chr(9) 水平附签。
vbVerticalTab Chr(11) 垂直附签;在 Microsoft Windows 中不用
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论