窗体设计例子

1.窗体的标题每隔1秒钟交替显示当前日期和当前时间。

窗体的属性表中的事件选项卡上,在事件过程中编辑弹出的VBE框和代码。

1
2
3
4
Private Sub Form_Load()
Me.Caption = Time#设置字幕为时间
#Caption为窗体Me的属性。
End Sub

然后将属性表中的“计时器间隔”属性设置为1000,然后设置计时器触发代码如下:

1
2
3
4
5
6
7
Private Sub Form_Timer()
If Me.caption = Date Then
Me.caption = Time
Else
Me.Caption = Date
End If
End Sub

注意If后面一定要接End If。

2.输入口令的判别过程

也就是一个输入口令的框,然后设置1个密码,2个按键,分别写入确认和退出函数。

确认函数如下:

1
2
3
4
5
6
7
8
9
Private Sub Command2_Click()
If Me.Text0.Value = "123456" Then
MsgBox "口令正确,欢迎进入!"#文本显示
Else
MsgBox "口令错误,请重新输入"#文本显示
Me.Text0.Value = ""#记得把文本部分重新置0
Me.Text0.SetFocus#让光标聚焦到文本框准备输入!
End If#这里注意If
End Sub

退出函数如下:

1
2
3
Private Sub Command3_Click()
DoCmd.Close
End Sub

3.统计字符个数

也就是给出两个文本行,第一行随便输入字符,第二行输入要统计的字符,然后结果输入统计出来字符的个数。

统计命令的事件代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Command4_Click()
Dim x, y, n#首先声明变量
x = Me.Text0.Value#这里的Text0和Text2表示我们的两个文本行,其value分别赋值给变量x,y
y = Me.Text2.Value
n = 0#这是我们用来统计字符个数的计数器
For i = 1 To Len(x)
If Mid(x, i, 1) = y Then
n = n + 1
End If
Next#注意For...Next是一个固定写法,只要想进行循环就要这样写,执行的时候里面就进行循环了,一直到所有字母都被统计完。
Me.Label5.Visible = True
Me.Label5.Caption = "在该字符串中包含" & n & "个" & y & "字符"
#这里注意label就是我们要显示的结果,首先设置为可见,然后把字符串用双引号引起来,变量n,y不要用引号!用连接号&连起来即可!
End Sub

4.查询学生政治面貌(这是一个查询实验)

窗体名称记为“学生政治面貌查询”。首先设计一个文本框写上“请输入政治面貌:”,然后添加一个列表控件List2,列表框附属标签标题为“学生信息查询:”。

然后添加命令按钮,标题”查找“,用来查找的。事件代码如下:

1
2
3
4
5
6
7
8
Private Sub Command4_Click()
Dim x
x = Me.Text0.value
Me.List2.RowSourceType="表/查询"
Me.List2.RowSource = "Select 学号, 姓名, 性别, 出生日期, 籍贯 From 学生 Where 政治面貌='" & x & "'"
Me.List2.ColumnCount = 5#因为上面一共有5列。
End Sub
#这里注意,引号很多,select表示选择表中的学号,姓名,性别,出生日期,籍贯等列,从“学生”这个表中。然后还要满足政治面貌=输入的x。但是SQL查询时,我们要将x用单引号引起来查询。所以"Select 学号, 姓名, 性别, 出生日期, 籍贯 From 学生 Where 政治面貌='"是第一部分,到左引号为止就结束了。然后连接x,然后再连接" ' "也就是左引号需要右引号进行闭合,这样才能在SQL语句的执行时成功将x框在里面。

VBA(Visual Basic for Applications)提供了大量的内置函数,这些函数覆盖了从数学计算到字符串处理,再到日期和时间操作等多种功能。以下是一些常用的VBA内置函数的介绍:

内置函数

数学函数

  • Abs(number):返回参数的绝对值。
  • Round(number, numdecimalplaces):将数字四舍五入到指定的小数位数。
  • Sqr(number):返回一个数的平方根。
  • Log(number):返回一个数的自然对数(以e为底)。
  • Exp(number):返回e的指定次方。
  • Cos(number):返回一个角度的余弦值。
  • Sin(number):返回一个角度的正弦值。
  • Tan(number):返回一个角度的正切值。

字符串函数

  • Left(string, length):从字符串的左侧提取指定长度的子字符串。
  • Right(string, length):从字符串的右侧提取指定长度的子字符串。
  • Mid(string, start[, length]):从字符串中提取子字符串,从指定位置开始,可选指定长度。
  • UCase(string):将字符串转换为大写。
  • LCase(string):将字符串转换为小写。
  • Trim(string):移除字符串两端的空格。
  • Len(string):返回字符串的长度。

日期和时间函数

  • Now():返回当前的日期和时间。
  • Date():返回当前的日期。#用的时候一般直接Date即可。
  • Time():返回当前的时间。#用的时候一般直接Time即可。
  • Year(date):提取日期的年份部分。
  • Month(date):提取日期的月份部分。
  • Day(date):提取日期的日部分。
  • Hour(time):提取时间的小时部分。
  • Minute(time):提取时间的分钟部分。
  • Second(time):提取时间的秒部分。

DoCmd使用方法

DoCmd是Microsoft Access VBA(Visual Basic for Applications)中一个非常有用的内置对象,它提供了一组方法和属性,用于执行各种与用户界面(UI)相关的操作,如打开窗体、报表、执行宏、运行命令等。DoCmd对象是Access VBA中Application对象的一个成员,因此可以通过Application.DoCmd来访问。

以下是DoCmd对象的一些常用方法和属性:

打开和操作窗体和报表

  • DoCmd.OpenForm(formname, view, filtername, wherecondition, windowmode)
    • 打开一个窗体。
    • 参数:
      • formname:窗体的名称。
      • view:窗体的视图(如acNormal, acDesign, acFormDS等)。
      • filtername:要应用的筛选器名称。
      • wherecondition:记录的条件筛选。
      • windowmode:窗体的窗口模式(如acWindowNormal, acWindowHidden等)。
  • DoCmd.OpenReport(reportname, view, windowmode)
    • 打开一个报表。
    • 参数:
      • reportname:报表的名称。
      • view:报表的视图(如acViewNormal, acViewPreview, acViewLayout等)。
      • windowmode:报表的窗口模式。

执行宏

  • ```
    DoCmd.RunMacro(macroname, parameters)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43

    - 执行一个宏。
    - 参数:
    - `macroname`:要执行的宏的名称。
    - `parameters`:传递给宏的参数(可选)。

    ### 应用筛选器和排序

    - `DoCmd.ApplyFilter`:
    - 应用当前筛选器。
    - `DoCmd.SetFilter filtername`:
    - 设置当前筛选器名称。
    - `DoCmd.Sort fieldNames, sortorder, [expression]`:
    - 对记录进行排序。
    - 参数:
    - `fieldNames`:要排序的字段名称或名称列表。
    - `sortorder`:排序顺序(`acAscending`或`acDescending`)。

    ### 导航记录

    - `DoCmd.GoToRecord(record, offset)`:
    - 导航到特定的记录。
    - 参数:
    - `record`:记录的类型(如`acNewRec`, `acFirstRecord`, `acLastRecord`等)。
    - `offset`:从当前记录开始的偏移量。
    - `DoCmd.Bookmark = bookmark`:
    - 跳转到书签指定的记录。

    ### 其他命令

    - `DoCmd.Close`:
    - 关闭当前打开的窗体或报表。
    - `DoCmd.Refresh`:
    - 刷新当前数据库窗口的数据。
    - `DoCmd.SetWarnings(warningstatus)`:
    - 启用或禁用警告消息。
    - 参数:
    - `warningstatus`:布尔值,`True`启用警告,`False`禁用。
    - `DoCmd.TransferSpreadsheet(spreadsheetname, spreadsheettype, databasepassword, hasusername, haspassword, username, password, drivername, servername, connectionstring)`:
    - 将数据转移到Excel电子表格。

    ### 示例代码

    复制
    ‘ 打开窗体
    DoCmd.OpenForm “Employees”, acNormal, , , acWindowNormal

‘ 执行宏
DoCmd.RunMacro “MyMacroName”

‘ 应用筛选器
DoCmd.ApplyFilter

‘ 导航到新记录
DoCmd.GoToRecord acNewRec

‘ 关闭当前窗体
DoCmd.Close

‘ 刷新数据
DoCmd.Refresh
```

DoCmd对象提供了一种快速、简便的方法来执行常见的Access操作,而无需编写复杂的VBA代码。通过使用DoCmd,你可以提高代码的可读性和维护性。