Access数组函数 Array Split Join 常见用法示例
时 间:2016-11-02 13:24:09
作 者:张义成 ID:37928 城市:赤峰
摘 要:Access数组函数 Array Split Join 常见用法示例
正 文:
Option Explicit
Option Base 1
'---------------------------------------------------
'数组
'连续可索引的具有相同内在数据类型的元素所成的集合,数组中的每一元素具有唯一索引号。更改其中一个元素并不会影响其它元素。
'---------------------------------------------------
'Option Base 语句
'在模块级别中使用,用来声明数组下标的缺省下界。
'Option Base {0 | 1}
'由于下界的缺省设置是 0,因此无需使用 Option Base 语句。如果使用该语句,则必须写在模块的所有过程之前。
'一个模块中只能出现一次 Option Base,且必须位于带维数的数组声明之前。
'注意 Dim、Private、Public、ReDim 以及 Static 语句中的 To 子句提供了一种更灵活的方式来控制数组的下标。
'不过,如果没有使用 To 子句显式地指定下界,则可以使用 Option Base 将缺省下界设为 1。
'使用 Array 函数或 ParamArray 关键字创建的数组的下界为 0;Option Base 对 Array 或 ParamArray 不起作用。
'Option Base 语句只影响位于包含该语句的模块中的数组下界。
'---------------------------------------------------
'Array 函数
'返回一个包含数组的 Variant
'Array(arglist)
'所需的 arglist 参数是一个用逗号隔开的值表,这些值用于给 Variant 所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为 0 的数组。
'用来表示数组元素的符号由变量名。圆括号以及括号中的所需元素的索引号组成。
'在下面的示例中,第一条语句创建一个 Variant 的变量 A。第二条语句将一个数组赋给变量 A。最后一条语句将该数组的第二个元素的值赋给另一个变量。
'Dim A As Variant
'A = Array(10, 20, 30)
'B = A(2)
'使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定, 除非 Array 是由类型库(例如 VBA.Array )名称限定。
'如果是由类型库名称限定,则 Array 不受 Option Base 的影响。
'注意 没有作为数组声明的 Variant 也可以表示数组。除了长度固定的字符串以及用户定义类型之外,Variant 变量可以表示任何类型的数组。
'尽管一个包含数组的 Variant 和一个元素为 Variant 类型的数组在概念上有所不同,但对数组元素的访问方式是相同的。
'---------------------------------------------------
'LBound 函数
'返回一个 Long 型数据,其值为指定数组维可用的最小下标。
'---------------------------------------------------
'UBound 函数
'返回一个 Long 型数据,其值为指定的数组维可用的最大下标。
'---------------------------------------------------
'Split 函数
'返回一个下标从零开始的一维数组,它包含指定数目的子字符串。
'Split(expression[, delimiter[, limit[, compare]]])
'Split函数语法有如下命名参数:
'expression 必需的。包含子字符串和分隔符的字符串表达式 。
'如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。
'delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。
'如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。
'limit 可选的。要返回的子字符串数,–1表示返回所有的子字符串。
'compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。
'---------------------------------------------------
'Join 函数
'返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。
'Join(sourcearray[, delimiter])
'Join函数语法有如下命名参数:
'sourcearray 必需的。包含被连接子字符串的一维数组。
'delimiter 可选的。在返回字符串中用于分隔子字符串的字符。如果忽略该项,则使用空格(" ")来分隔子字符串。
'如果delimiter是零长度字符串(""),则列表中的所有项目都连接在一起,中间没有分隔符。
'---------------------------------------------------
'编者:张义成
'日期:2016-10-10
'功能:数组函数 Array Split Join 常见用法示例
'---------------------------------------------------
'使用 Array 函数或 ParamArray 关键字创建的数组的下界为 0;Option Base 对 Array 或 ParamArray 不起作用。
'使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定, 除非 Array 是由类型库(例如 VBA.Array )名称限定。
'以上引述两条说明,似有相互龃龉的感觉 !
'以下示例过程表明,Option Base 1 的语句,仅对 使用 Array 函数创建的数组的下界 产生影响 !
'---------------------------------------------------
Private Sub cbo项目_AfterUpdate()
On Error GoTo ErrorHandler
Dim arrSplit As Variant
Dim i As Long
Dim strQ As String
Dim strR As String
If Not IsNull(cbo项目) And cbo项目 <> "" Then
Text32 = "cbo项目.Column(0) = " & cbo项目.Column(0) & " cbo项目.Column(1) = " & cbo项目.Column(1)
For i = 0 To cbo项目.ListCount - 1
strQ = strQ & " " & cbo项目.ItemData(i)
Next i
strQ = Trim(strQ)
Text34 = strQ
arrSplit = Split(strQ, " ") '如果 strU 中的分隔符是空格(" "),那么 Split(strQ, " ") 可以简缩为 Split(strQ) 。
If Not IsArray(arrSplit) Then
MsgBox "代码错误:变量 arrSplit 不是数组 !", vbExclamation, "郑重提示"
Exit Sub
End If
strR = Join(arrSplit, "-")
Text36 = strR
Else
Text30 = Null
Text32 = Null
Text34 = Null
Text36 = Null
Text38 = Null
End If
ErrorHandlerExit:
Exit Sub
ErrorHandler:
MsgBox "Error No:" & Err.Number & " Description:" & Err.Description
Resume ErrorHandlerExit
End Sub
Private Sub cbo项目_GotFocus()
On Error GoTo ErrorHandler
cbo项目.Dropdown
ErrorHandlerExit:
Exit Sub
ErrorHandler:
MsgBox "Error No:" & Err.Number & " Description:" & Err.Description
Resume ErrorHandlerExit
End Sub
Private Sub Opt字段名称甲_Click()
On Error GoTo ErrorHandler
Dim arrArray As Variant
Dim arrSplit As Variant
Dim i As Long
Dim strU As String
Dim strV As String
Dim strW As String
If Opt字段名称甲 = True Then
arrArray = Array("序号", "链接", "编号", "名称", "年代", "级码", "级别", "件套", "数量", "品类", "质类", "质型", "质地", "完残", "状况")
If Not IsArray(arrArray) Then
MsgBox "代码错误:变量 arrArray 不是数组 !", vbExclamation, "郑重提示"
Exit Sub
End If
Text40 = "LBound(arrArray) = " & LBound(arrArray) & " UBound(arrArray) = " & UBound(arrArray)
For i = LBound(arrArray) To UBound(arrArray)
strU = strU & " " & arrArray(i)
Next
strU = Trim(strU)
Text42 = strU
arrSplit = Split(strU, " ") '如果 strU 中的分隔符是空格(" "),那么 Split(strU, " ") 可以简缩为 Split(strU) 。
If Not IsArray(arrSplit) Then
MsgBox "代码错误:变量 arrSplit 不是数组 !", vbExclamation, "郑重提示"
Exit Sub
End If
Text44 = "LBound(arrSplit) = " & LBound(arrSplit) & " UBound(arrSplit) = " & UBound(arrSplit)
strW = Join(arrSplit, "-")
Text46 = strW
Else
Text40 = Null
Text42 = Null
Text44 = Null
Text46 = Null
Text48 = Null
End If
ErrorHandlerExit:
Exit Sub
ErrorHandler:
MsgBox "Error No:" & Err.Number & " Description:" & Err.Description
Resume ErrorHandlerExit
End Sub
Private Sub Opt字段名称乙_Click()
On Error GoTo ErrorHandler
Dim arrSplit As Variant
Dim i As Long
Dim strH As String
Dim strJ As String
Dim strK As String
Dim fld As Field
Dim rst As DAO.Recordset
Set rst = Me.Recordset
If Opt字段名称乙 = True Then
For Each fld In rst.Fields
strH = strH & " " & fld.Name
Next
strH = Trim(strH)
Text50 = strH
arrSplit = Split(strH, " ") '如果 strH 中的分隔符是空格(" "),那么 Split(strH, " ") 可以简缩为 Split(strH) 。
If Not IsArray(arrSplit) Then
MsgBox "代码错误:变量 arrSplit 不是数组 !", vbExclamation, "郑重提示"
Exit Sub
End If
Text52 = "LBound(arrSplit) = " & LBound(arrSplit) & " UBound(arrSplit) = " & UBound(arrSplit)
For i = LBound(arrSplit) To UBound(arrSplit)
strK = strK & " " & arrSplit(i)
Next
strK = Trim(strK)
Text54 = strK
Else
Text50 = Null
Text52 = Null
Text54 = Null
Text56 = Null
End If
ErrorHandlerExit:
Exit Sub
ErrorHandler:
MsgBox "Error No:" & Err.Number & " Description:" & Err.Description
Resume ErrorHandlerExit
End Sub
Private Sub Opt控件名称_Click()
On Error GoTo ErrorHandler
Dim strA As String
Dim strB As String
Dim strC As String
Dim strD As String
Dim strL As String
Dim strM As String
Dim strN As String
Dim ctl As Control
Dim arrSplit As Variant
Dim i As Long
If Opt控件名称 = True Then
txt控件个数 = "Me.Controls.Count = " & Me.Controls.Count '简缩形式 Me.Count
For Each ctl In Me.Controls
With ctl
Select Case .ControlType
Case acLabel
strA = strA & " " & ctl.Name
Case acTextBox
strB = strB & " " & ctl.Name
Case acOptionButton
strC = strC & " " & ctl.Name
Case acComboBox
strD = strD & " " & ctl.Name
End Select
End With
Next ctl
strA = Trim(strA)
strB = Trim(strB)
strC = Trim(strC)
strD = Trim(strD)
strL = strA & " " & strB & " " & strC & " " & strD
txt控件名称甲 = strL
'For Each ctl In Me.Controls
'strM = strM & " " & ctl.Name
'Next ctl
'strM = Trim(strM)
'txt控件名称甲 = strM
For i = 0 To Me.Controls.Count - 1
strN = strN & " " & Me.Controls.Item(i).Name
Next
strN = Trim(strN)
txt控件名称乙 = strN
arrSplit = Split(strN, " ") '如果 strN 中的分隔符是空格(" "),那么 Split(strN, " ") 可以简缩为 Split(strN) 。
If Not IsArray(arrSplit) Then
MsgBox "代码错误:变量 arrSplit 不是数组 !", vbExclamation, "郑重提示"
Exit Sub
End If
txt控件界标 = "LBound(arrSplit) = " & LBound(arrSplit) & " UBound(arrSplit) = " & UBound(arrSplit)
Else
txt控件个数 = Null
txt控件界标 = Null
txt控件名称甲 = Null
txt控件名称乙 = Null
End If
ErrorHandlerExit:
Exit Sub
ErrorHandler:
MsgBox "Error No:" & Err.Number & " Description:" & Err.Description
Resume ErrorHandlerExit
End Sub
附 件:
图 示:
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)