个人博客 用于记载日常收集的一些技术文章 ...
Access : 生成序号:多字段 排序 Access : 生成序号:多字段 排序
Private Sub txtSeach_LostFocus()

aTxt = "":

If Len(txtSeach.Value) > 0 Then

aSplits = Split(txtSeach.Value, ","): '拆分条件

For Each aSplit In aSplits

If Len(aSplit) > 0 Then

aTxt = aTxt & IIf(aTxt = "", " where ", " and ") & "( ( nz(FPriceName) +' | '+ nz(FContent) +' | '+ nz(FUnit) +' | '+ Format(nz(FPrice),'0.######') +' | '+ nz(FCreaterName) +' | '+ nz(FCreateTime) ) like '*" & aSplit & "*' )"
End If
Next

End If


FSeq = "( select count(*) from (select * from v_PriceList " & aTxt & " ) as t2 where ( nz(t2.FPriceName) +' | '+ nz(t2.FContent) +' | '+ nz(t2.FUnit) +' | '+ Format(nz(t2.FPrice),'0.######') ) <= ( nz(t1.FPriceName) +' | '+ nz(t1.FContent) +' | '+ nz(t1.FUnit) +' | '+ Format(nz(t1.FPrice),'0.######') ) ) as FSeq " '计算序号

Sub1.Form.RecordSource = " select * ," & FSeq & " from (select * from v_PriceList " & aTxt & " ) t1 order by t1.FPriceName,t1.FContent,t1.FUnit,t1.FPrice ; " '排序


Sub1.Form.Requery

End Sub
郭少锋 创建 2025-06-13 11:47:17 Access
Access : 自动生成序号 Access : 自动生成序号 在 Access VBA 中,`RecordSource` 属性用于指定窗体或报表的数据源。你提供的 SQL 语句在 Access 中可能无法直接使用,因为 Access 的 SQL 语法与 SQL Server 或其他数据库的 SQL 语法有所不同。特别是 `row_number()` 函数在 Access 中并不支持。

如果你想要在 Access 中实现类似的功能,可以使用以下方法:

### 方法 1:使用子查询
你可以使用子查询来模拟 `row_number()` 的功能。以下是一个示例:

```vba
Sub1.Form.RecordSource = "SELECT TOP 500 * FROM (SELECT *, (SELECT COUNT(*) FROM v_ItemList AS T2 WHERE T2.FItemId >= T1.FItemId) AS FSeq FROM v_ItemList AS T1) ORDER BY FItemId DESC;"


FSeq = "( select count(*) from v_ItemList as t2 where t2.FItemNo <= t1.FItemNo " & aTxt & " ) as FSeq " '按 FItemNo 升序 计算序号

Sub1.Form.RecordSource = " select * ," & FSeq & " from v_ItemList t1 where 1=1 " & aTxt & " order by FItemNo ; " '按 FItemNo 升序 显示

```

### 方法 2:使用 DCount 函数
如果你需要在 Access 中生成行号,可以使用 `DCount` 函数来实现:

```vba
Sub1.Form.RecordSource = "SELECT TOP 500 *, DCount('FItemId', 'v_ItemList', 'FItemId >= ' & FItemId) AS FSeq FROM v_ItemList ORDER BY FItemId DESC;"

Sub1.Form.RecordSource = "select * ,DCount('FItemId', 'v_ItemList', 'FItemId >= ' & FItemId ) as FSeq from v_ItemList order by FItemId desc ; "
Sub1.Form.RecordSource = "select * ,DCount('FItemNo', 'v_ItemList', 'FItemNo >= ''' & FItemNo & '''') as FSeq from v_ItemList order by FItemNo desc; "
```

### 方法 3:使用 VBA 代码生成行号
如果你需要在 VBA 中生成行号,可以在加载数据后遍历记录集并添加行号:

```vba
Dim rs As DAO.Recordset
Dim i As Integer

Set rs = CurrentDb.OpenRecordset("SELECT TOP 500 * FROM v_ItemList ORDER BY FItemId DESC;")

i = 1
Do While Not rs.EOF
rs.Edit
rs!FSeq = i
rs.Update
i = i + 1
rs.MoveNext
Loop

Sub1.Form.RecordSource = "SELECT * FROM v_ItemList ORDER BY FItemId DESC;"
```

### 方法 4:使用临时表
你还可以创建一个临时表来存储带有行号的数据:

```vba
Dim sql As String

' 创建临时表
CurrentDb.Execute "CREATE TABLE TempItemList (FSeq AUTOINCREMENT, FItemId LONG, OtherFields...);"

' 插入数据并生成行号
CurrentDb.Execute "INSERT INTO TempItemList (FItemId, OtherFields...) SELECT FItemId, OtherFields... FROM v_ItemList ORDER BY FItemId DESC;"

' 设置 RecordSource
Sub1.Form.RecordSource = "SELECT * FROM TempItemList;"
```

### 总结
Access 的 SQL 语法与其他数据库有所不同,特别是在处理行号时。你可以根据具体需求选择上述方法之一来实现类似的功能。如果你需要频繁使用行号,建议使用方法 3 或方法 4,这样可以更灵活地处理数据。
郭少锋 编辑 2025-06-13 11:32:14 创建 2025-03-15 16:03:24 Access
Access : 定位到子窗体的最后一行 Access : 定位到子窗体的最后一行
With Me.Sub1.Form '定位到子窗体的最后一行

.RecordsetClone.MoveLast
.Bookmark = .RecordsetClone.Bookmark
End With
郭少锋 创建 2025-05-08 21:41:54 Access
Access : 子窗体 调用 主窗体的事件 Access : 子窗体 调用 主窗体的事件 在 Microsoft Access 中,子窗体可以通过 VBA 代码调用主窗体的事件或方法。以下是几种常见的方法来实现这一功能:

---

### **方法 1:通过 `Parent` 属性引用主窗体**
子窗体可以通过 `Me.Parent` 引用其父窗体(主窗体),然后调用主窗体的公共方法或直接操作其控件。

#### **步骤:**
1. **在主窗体中创建公共方法**
在主窗体的 VBA 模块中定义一个公共方法(例如 `CallMainFormEvent`),用于触发事件逻辑:
```vba
' 主窗体的 VBA 模块
Public Sub CallMainFormEvent()
MsgBox "主窗体的事件被调用了!"
' 或在这里执行其他操作(如刷新数据、更新控件等)
End Sub
```

2. **在子窗体中调用主窗体的方法**
在子窗体的代码中通过 `Me.Parent` 调用主窗体的方法:
```vba
' 子窗体的 VBA 代码(例如按钮点击事件)
Private Sub CommandButton_Click()
If Not Me.Parent Is Nothing Then
Me.Parent.CallMainFormEvent ' 调用主窗体的方法
Else
MsgBox "未找到父窗体!"
End If
End Sub
```

---

### **方法 2:直接操作主窗体的控件**
如果主窗体上的某个控件(如文本框)需要更新,可以直接通过 `Me.Parent` 访问:
```vba
' 子窗体中修改主窗体的文本框
Me.Parent.TextboxName.Value = "新值"
```

---

### **方法 3:触发主窗体的事件(需间接实现)**
Access 的窗体事件(如 `OnClick`、`OnLoad`)不能直接通过代码触发,但可以通过以下方式间接实现:
1. 在主窗体中创建一个公共方法(如 `SimulateEvent`),将事件逻辑封装在方法中。
2. 在子窗体中调用该方法。

---

### **注意事项**
1. **确保主窗体已加载**
如果子窗体独立打开(非嵌入主窗体),`Me.Parent` 可能为 `Nothing`。此时需确保主窗体已加载或通过其他方式引用。

2. **命名一致性**
如果主窗体是子窗体的容器(如 `Form_SubformContainer`),可能需要通过 `Me.Parent.Parent` 访问(例如子窗体嵌套在导航窗体中)。

3. **错误处理**
始终检查 `Me.Parent` 是否存在,避免运行时错误。

---

### **完整示例**
假设主窗体名为 `frmMain`,子窗体名为 `frmSubform`,按钮点击时触发主窗体的事件:

#### 主窗体代码:
```vba
' frmMain 的 VBA 模块
Public Sub HandleChildEvent()
MsgBox "主窗体收到子窗体的调用!"
' 其他逻辑...
End Sub
```

#### 子窗体代码:
```vba
' frmSubform 的 VBA 代码
Private Sub btnCallParent_Click()
If Not Me.Parent Is Nothing Then
Me.Parent.HandleChildEvent ' 调用主窗体的方法
Else
MsgBox "错误:未找到父窗体!"
End If
End Sub
```

---

通过以上方法,子窗体可以灵活地与主窗体交互。如果需要更复杂的通信(如跨多个嵌套窗体),建议使用全局变量或模块级变量传递数据。
郭少锋 创建 2025-05-08 09:46:42 Access
Access : Format() 用法详解 Access : Format() 用法详解 Format[$] ( expr [ , fmt ] )
format 返回变体型
format$ 强制返回为文本

--------------------------------
数字类型的格式化
--------------------------------
固定格式参数:
General Number 普通数字,如可以用来去掉千位分隔号
format$("100,123.12","General Number") 返回值 100123.12
Currency 货币类型,可添加千位分隔号和货币符号
format$("100123.12","Currency") 返回值 ¥100,123.12
Fixed 格式为带两位小数的数字
format$("100123","Fixed") 返回值 100123.00
Standard 标准,即带千位分隔号和两位小数
format$("100123","Standard") 返回值 100,123.00
Percent 百分数
format$("100123","Percent") 返回值 10012300.00%
Scientific 科学记数法
format$("100123","Scientific") 返回值 1.00E+05
Yes/No 当值为0时返回 NO,否则返回 YES
format$("100123","Yes/No") 返回值 Yes
True/False 当值为0时返回 False,否则返回 True
format$("100123","True/False") 返回值 True
On/Off 当值为0时返回 Off,否则返回 On
format$("100123","Yes/No") 返回值 On
自定义格式参数
"" 不进行格式化 返回值 原值
0 占位格式化,不足补0
format$("100123","0000000") 返回值 0100123
# 占位格式化,不足时不补0
format$("100123","#######") 返回值 100123
. 强制显示小数点
format$("100123.12",".000") 返回值 100123.120
% 转化为百分数,一个%代表乘以100
format$("10.23","0.00%") 返回值 1023.00%
format$("10.23","0.00%%") 返回值 102300.00%%
, 以千为单位格化
format$("10.23",",") 返回值 0
format$("10010.23",",") 返回值 10
format$("10010.23",",0.00") 返回值 10.01
E- E+ e- e+ 显示为科学记数(要注意格式语句,否则会和E的其它含义相混)
Format$(12.5,"0.00E+00") 返回值 1.25E+01
$ 强制显示货币符号
format$("10.23","{threadcontent}.00") 返回值 ¥10.23
- + ( ) space 按位置显示本样
Format$("1234.56","-(0.00)") 返回值 -(1234.56)
/ 转义符,显示出特殊符号
Format$("1234.56","/#.00") 返回值 #1234.56
"ABC" 显示双引号 (" ") 之内的字符串。如在代码中想在 format 中包含一个字符串,必须用 Chr(34) 将文本括起来(34 为双引号 ("))
Format$(123.45,"TTT") 返回值 TTT
注:当双引号中的文本包含特殊的参数符号如e,要使用转义符"/",否则会按e的作用显示
; 类似多目运算符的作用。
当共有 四 部分时,
当大于0时,按第一部分进行格式化,
当小于0时按第二部分进行格式化,
当等于0时按第三部分进行格式化,
当为null值时,按第四部分进行格式化。如:
Format$(0,"0.00;负数;零;空") 返回值 零
当共有 三 部分时,
当大于0时,按第一部分进行格式化,
当小于0时按第二部分进行格式化,
当等于0时按第三部分进行格式化,如:
Format$(-10,"0.00;ttt;零") 返回值 ttt
当共有 两 部分时,
当大于或等于0时,按第一部分进行格式化,
当小于0时按第二部分进行格式化,
Format$(-123,"0.00;abc") 返回值 abc
Format$(123,"0.00;abc") 返回值 123.00
当共有 一 部分时,按分号左边进行格式化

---------------------------------
日期类型的格式化
---------------------------------
注意:在中文操作系统中,系统自动将月份输为如:五月,而非 May
固定格式参数
General Date 基本类型

Format(Date,"YYYY年MM月DD日")
'M 个位月只显示一位,
'MM 显示两位月,
'MMM显示英文月简称,
'MMMM显示英文全名

Format$(Now,"EEOA") “ 二○○六年五月二十六日”

Format$(Now,"General Date") 返回值 2006-5-25 14:56:15
Long Date 操作系统定义的长日期
Format$(Now,"Long Date") 返回值 2006年5月25日
Medium Date 中日期(yy/mmm/dd)
Format$(Now,"Medium Date") 返回值 06-5月-25
Short Date 操作系统定义的短日期
Format$(Now,"Short Date") 返回值 2006-5-25
Long Time 操作系统定义的长时间
Format$(Now,"Long Time") 返回值 15:06:36
Medium Time 带AM/PM的12小时制,不带秒
Format$(Now,"Medium Time") 返回值 03:08 PM
Short Time 24时制的时间,不带秒
Format$(Now,"Short Time") 返回值 15:08
自定义格式参数
: 用来标识时间字符的间隔
Format$(Time(),"hh:nn") 返回值 15:25
/ 用来标识日期字符的间隔
Format$(now,"yyyy/mm/dd") 返回值 2006-05-25
c 格式化为国标的日期和时间
Format$(Now,"c") 返回值 2006-5-25 14:56:15
y 一年中的第几天
Format$(Now,"y") 返回值 145
d 一个月中的第几天(1-366)
Format$(Now,"d") 返回值 25
dd 当小于10时前面带0的天数(01-31)
Format$("2006-1-7","dd") 返回值 07
ddd 周几
Format$(Now,"ddd") 返回值 周四
dddd 星期几
Format$(Now,"dddd") 返回值 星期四
ddddd 显示标准日期
Format$(Now,"ddddd") 返回值 2006-05-25
dddddd 长日期
Format$(Now,"dddddd") 返回值 2006年5月25日
w 一个星期中的第几天
Format$(Now,"w") 返回值 5
ww 一年中的第几周
Format$(Now,"ww") 返回值 21
m 月数(注:当用于时间时,也可以表时为分钟)
Format$(Now,"m") 返回值 5
Format$(Now,"h:m") 返回值 16:11
mm 当小于10时前面带0的月数(注:当用于时间时,也可以表时为带0的分钟)
Format$(Now,"m") 返回值 05
Format$(Now,"hh:mm") 返回值 16:09
mmm 月份
Format$(Now,"mmm") 返回值 五月
q 一年中的第几季(1-4)
Format$(Now,"q") 返回值 2
yy 两位数的年份(00-99)
Format$(Now,"yy") 返回值 06
yyyy 四位数的年份(0100-9999)
Format$(Now,"yyyy") 返回值 2006
h 一天中的第N小时(0-23)
Format$(Now,"h") 返回值 16
hh 当小于10时带0的小时数(00-23)
Format$("7:30:28","hh") 返回值 07
n 一小时的分钟数(0-59)
Format$("7:30:28","n") 返回值 30
nn 当小于10时带0的分钟数(00-59)
Format$("7:3:28","n") 返回值 03
s 一分钟中的秒数(0-59)
Format$("7:30:8","s") 返回值 8
ss 当小于10时带0的分钟数(00-59)
Format$("7:3:8","ss") 返回值 08
ttttt 标准时间,小时数当小于10时不带0,与h:mm:ss相同
Format$("7:3:28","ttttt") 返回值 7:03:28
AM/PM 显示当前为AM或为PM
Format$(Now,"AM/PM") 返回值 PM
A/P 显示当前为A或为P
Format$(Now,"A/P") 返回值 P
AMPM 对0至2359的数值进行判断是AM还是PM,可以看作是同等于对00:00至23:59的数字进行判断,如1000可以看作是10:00。
Format$(1000,"AMPM") 返回值 AM
联合格式化
m/d/yy Format$(Now,"m/d/yy") 返回值 5-25-06
d-mmm-yy Format$(Now,"d-mmm-yy") 返回值 25-5月-06
d-mmmm Format$(Now,"d-mmmm") 返回值 25-五月
mmmm-yy Format$(Now,"mmmm-yy") 返回值 五月-06
hh:mm AM/PM Format$(Now,"hh:mm AM/PM") 返回值 04:50 PM
h:mm:ss a/p Format$(Now,"h:mm:ss a/p") 返回值 4:51:38 p
h:mm Format$(Now,"h:mm") 返回值 16:51
h:mm:ss Format$(Now,"h:mm:ss") 返回值 16:51:38
m/d/yy h:mm Format$(Now,"m/d/yy h:mm") 返回值 5-25-06 16:54

----------------------------------
文本类型的格式化
----------------------------------
; 当两部分时,则第一部分为非空格式化,第二部分为null值或空值的格式化表达式
@ 匹配位置插入格式化文本,占位位置不存在时,显示空白(空字符串)
只有一个@符号时,是在最后面加上格式化文本
Format$("CHIN","@a") 返回值 CHINa
有多个@占位符,是按从右至左匹配,并在相应的位置上显示格式化文本
Format$("CHIN","@a@@") 返回值 CHaIN
当与 ! 配合时,则变为从左至右匹配
Format$("CHIN","[email=!@a]!@a[/email]@@") 返回值 CaHIN
当占位符比原文本字符串多时,刚在相应位置上添加空格
Format$("C","@@a@") 返回值 空白空白aC
& 字符占位符。除在当占位位置不存在时,不显示外,其余均与@相同
当占位符比原文本字符串多时,刚在相应位置上添加空格
Format$("C","&&a&") 返回值 aC
< 强制小写。将所有字符以小写格式显示。
Format$("I love you","<") 返回值 i love you
> 强制大写。将所有字符以大写格式显示。
Format$("I love you",">") 返回值 I LOVE YOU
! 强制由左而右填充字符占位符。缺省值是由右而左填充字符占位符。
Format$("CHIN","[email=!@a]!@a[/email]@@") 返回值 CaHIN

----------------------------------------
强制使用中文格式的日期时间
----------------------------------------
aaaa 星期
Format$(Now,"aaaa") 返回值 星期五
O 中文月份
Format$(Now,"O") 返回值 五月
o 单字节月份
Format$(Now,"o") 返回值 5月
A 中文日期
Format$(Now,"A") 返回值 二十六日
a 单字节日期
Format$(Now,"a") 返回值 26日
E 短中文年份
Format$(Now,"E") 返回值 六年
e 单单字节年份
Format$(Now,"e") 返回值 6年
EE 中文年份
Format$(Now,"EE") 返回值 二○○六年
ee 单字节年份
Format$(Now,"ee") 返回值 2006年

郭少锋 创建 2025-01-10 12:14:25 Access
Access : 常用的内置函数 Access : 常用的内置函数 Access提供了几种类型的函数,可将这些函数分为以下几类:

1. 转换函数

Str():返回从数字转换而来的字符串,它总是为加号保留(加上)一个打头的空格。
LCase() 返回被转换成小写的字符串。
UCase() 返回被转换成大写的字符串。
Val() 返回在字符串中数字值,直到字符串中 第一个非数字字符为止。
CDate() 将字符串转换成日期。
Format() 按照用户指定的格式返回一个表达式。

2. 日期/时间

年份: Format([交易时间],"yyyy")
季度: Format([交易时间],"q")
月份: Format([交易时间],"yyyy-mm")
日期: Format([交易时间],"yyyy-mm-dd")
时间: Format([交易时间],"hh:nn:ss")

CDate 将字符串转化成为日期 select CDate("2005/4/5")
Date 返回当前日期
DateAdd 将指定日期加上某个日期select dateAdd("d",30,Date())将当前日期加上30天,其中d可以换为yyyy或H等
DateDiff 判断两个日期之间的间隔 select DateDiff("d","2006-5-1","2006-6-1")返回31,其中d可以换为yyyy,m,H等
DatePart 返回日期的某个部分 select DatePart("d","2006-5-1")返回1,即1号,d也可以换为yyyy或m
Day 返回日期的d部分,等同于datepart的d部分
Hour 返回日期的小时
IsDate 判断是否是日期,是日期返回-1,不是日期返回0
Minute 返回日期的分钟部分
Month 返回日期的月份部分
Now 返回当前时间(完整时间,包括年月日 小时分秒)
Second 返回日期的秒部分
Time 返回当前的时间部分(即除去年/月/日的部分)
Weekday 返回某个日期的当前星期(星期天为1,星期一为2,星期二为3...),例如select weekday(now());
Year 返回某个日期的年份

3. 判断检查

IsEmpty 检测是否为空(不过经测试,不管什么情况,都返回0)
IsNull 检测是否为Null值,null值返回0,非null值返回-1
IsNumeric 检测是否为数字,是数字返回-1,否则返回0

IsDate 判断表达式是否为合法日期

IsMissing 确定变量是否被传递给了函数

4. 算术计算

Abs 绝对值
Atn 返正切值。
Cos 余弦值
Exp 返回 e 的给定次幂。
Fix 返回数字的整数部分(即小数部分完全截掉)
Int 将数字向下取整到最接近的整数。(其实等同于Fix)
Log 返回以E为底的对数值
Rnd 返回一个0到1之间的随机数值
Sgn 返回数字的正负符号(正数返回1,负数返回-1,0值返回0)
Sin 正弦值
Sqr 返回平方根值
Tan 正切值

5. 程序流程

Choose 根据第一参数,返回后面字符串组的值,Select Choose(1,"a","b","c")返回a,将1改成2后,返回b,改成3后,返回c(第一个参数也可以是某个字段)
IIF 根据表达式返回特定的值 Select IIF("3>1","OK","False"),返回OK

6. Sql合计函数

Avg 取字段平均值
Count 统计记录条数
Max 取字段最大值
Min 取字段最小值
StDev 估算样本的标准差(忽略样本中的逻辑值和文本)。
StDevP 计算以参数形式(忽略逻辑值和文本)给出的整个样本总体的标准偏差。
Sum 计算字段的总合
Var 估算样本方差(忽略样本中的逻辑值和文本)。
VarP 计算整个样本总体的方差(忽略样本总体中的逻辑值和文本)。7. 文本字符串操作

Asc 返回字母的Acsii值,select Asc("A")返回65
Chr 将ascii值转换到字符 select chr(65)返回"A"
Format 格式化字符串,Select Format(now(),'yyyy-mm-dd')返回类似于"2005-04-03" ,Select Format(3/9,"0.00")返回0.33
InStr 查询子串在字符串中的位置 select Instr("abc","a")返回1,select Instr("abc","f")返回0
LCase 返回字符串的小写形式
Left 左截取字符串
Len 返回字符串长度
LTrim 左截取空格
Mid 取得子字符串 select mid("123",1,2) as midDemo 返回12
Right 右截取字符串
RTrim 右截取空格
Space 产生空格 select Space(4)返回4个空格
StrComp 比较两个字符串是否内容一致(不区分大小写)select StrComp("abc","ABC")返回0,select StrComp("abc","123")返回-1
Trim 截取字符串两头的空格
UCase 将字符串转大写

8. 域函数

DAvg() 返回一组值的算术平均值。
DCount() 显示指定记录的数目。
DFirst() 需要任意值时,可从表或查询的字段中返回一条随机记录。
DLookUp() 从指定的记录中返回特定字段的值。
DMax() 返回一组值中的最大值。
DMin() 返回一组值中的最小值。
DSum() 返回指定记录集的总和。

郭少锋 编辑 2025-01-10 12:10:11 创建 2025-01-10 11:32:31 Access
Access : 选中行 Access : 选中行 Dim aSelTop As Long, aSelCount As Long


Private Sub 子窗体_Exit(Cancel As Integer)

aSelTop = Me.子窗体.Form.SelTop '从第n行 开始选中
aSelCount = Me.子窗体.Form.SelHeight '共选中x行

End Sub

Private Sub 追加_Click()

Dim i As Long, aControls As Controls, aControl As Control

Set aControls = Me.临时表子窗体.Form.Controls

Me.临时表子窗体.SetFocus


For i = 0 To aSelCount - 1 '逐行读取

Me.子窗体.Form.SelTop = aSelTop + i

If Me.临时表子窗体.Form.NewRecord <> True Then

DoCmd.RunCommand acCmdRecordsGoToNew '定位到 新增行
End If

For Each aControl In aControls

If aControl.ControlType <> acLabel Then

aControl.Value = Me.子窗体.Form.Controls(aControl.Name).Value '逐个字段赋值
End If

Next aControl

Me.临时表子窗体.Form.Recalc
Next

End Sub

郭少锋 创建 2025-01-08 15:42:05 Access
Access : For 循环 遍历数组 Access : For 循环 遍历数组 在VBA中,你可以使用For循环来遍历数组。以下是一个简单的例子,展示了如何在Access VBA中创建一个数组,并使用For循环来遍历它。

Sub LoopThroughArray()

Dim arr() As Variant
Dim i As Integer

arr = Array("Apple", "Banana", "Cherry") ' 初始化数组

For i = LBound(arr) To UBound(arr) ' 使用For循环遍历数组

Debug.Print arr(i) ' 输出数组元素到立即窗口
Next i
End Sub

在这个例子中,LBound函数用于获取数组的最小索引(即0,除非数组是以非零为起始的下标),而UBound函数用于获取数组的最大索引。For循环会在这个范围内迭代,并且Debug.Print语句用于将数组的当前元素打印到VBA编辑器的Immediate窗口(可以通过按Ctrl + G在VBA编辑器中打开)。
郭少锋 创建 2025-01-07 17:36:18 Access
Access : 取得 筛选条件 Access : 取得 筛选条件 '子窗体的筛选条件 发生变化,填写到 主窗体的【筛选条件】文本框

Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)

Me.Parent!筛选条件.Value = Me.Form.Filter
End Sub
郭少锋 创建 2025-01-06 18:07:13 Access
Access : 代码分行录入 Access : 代码分行录入 Public Function ReportSheet(rpt As Report, _
ByVal RowsOfPage As Integer, _
Optional ByVal Style As Integer = 0, _
Optional ByVal HasColumnHeader As Boolean = True)
郭少锋 编辑 2025-01-03 17:19:16 创建 2025-01-03 15:48:09 Access