VBA设计技巧.docx
- 文档编号:8394685
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:25
- 大小:29.89KB
VBA设计技巧.docx
《VBA设计技巧.docx》由会员分享,可在线阅读,更多相关《VBA设计技巧.docx(25页珍藏版)》请在冰豆网上搜索。
VBA设计技巧
VBA技巧(代码大全)
一句话代码:
1、组合框的循环选择
在双击事件中加入,也可用在键盘按上下箭头事件中:
Screen.ActiveControl.ListIndex=(Screen.ActiveControl.ListIndex+1)ModScreen.ActiveControl.ListCount
2、窗体单击及移动记录时选定记录(反黑显示)
在成为当前事件中加入:
DoCmd.RunCommandacCmdSelectRecord
3、组合框获得焦点后自动张开
在获得焦点事件中加入:
Combo0.Dropdown
4、文本框获得焦点后光标自动移动到文本的末尾
在获得焦点事件(如有必要也在鼠标释放事件)中加入:
Text0.SelStart=Len(Text0)
5、随机抽取指定数量记录的查询
在查询语句中Rnd([编号])的编号为表中的自动编号字段名:
SelectTOP10* FROM表1orDERBYRnd([编号]);
6、打印窗体中筛选显示的记录
报表的记录源药与窗体的相同,在窗体的打印按钮单击事件中:
DoCmd.OpenReport"报表名",acViewPreview,,Me.Filter
7、去除窗体及子窗体的筛选及排序
跟“记录”菜单中的“取消筛选/排序”作用相同:
DoCmd.ShowAllRecords
8、数据更改后提醒是否保存
在窗体的更新后事件中(Form_BeforeUpdate):
IfNot(Cancel=(MsgBox("数据已更改,是否保存?
",vbOKCancel+vbQuestion)=vbCancel))ThenDoCmd.DoMenuItemacFormBar,acEditMenu,acUndo,,acMenuVer70
9、选定一个选项,自动把与选项相关信息辅助录入(即一拖几)
在选项的更改事件中,用Dlookup函数查找相关信息并辅值给当前记录:
供货商=DLookup("公司名称","供货商资料","[供货商编号]='"&Me!
[供货商编号]&"'")
10、设置字段的默认值为当前表的最后一条记录的值(或序号加1)
在窗体的成为当前事件中,用Dlast函数查找最后记录相关值并辅值给字段的默认值:
成绩.DefaultValue="'"&DLast("成绩",Me.RecordSource)&"'"
11、删除重复记录(字段)
表中要有自动编号字段(ID),可建立删除查询或执行RunSql语句(其中[ ]填写对应的表名、重复字段名、关键字段名):
Delete*FROM[表]WhereDCount("[字段]","[表]","[字段]='"&[字段]&"'")>1AND[ID]>DLookUp("[ID]","[表]","[字段]='"&[字段]&"'")or[字段]IsNull;
12、班级成绩排名查询
可根据年级、班级和不同科目替换查询中的相应字段名:
Select*,[英语]+[数学]+[语文]AS总分,DCount("*","成绩表","[年级]='"&[年级]&"'and([英语]+[数学]+[语文])>"&[英语]+[数学]+[语文])+1AS年级名次FROM成绩表orDERBY成绩表.年级,[英语]+[数学]+[语文]DESC;
13、防止公式文本框引起窗体抖动
如果窗体中使用了计算公式作为文本框的数据源,这可能会导致窗体一打开或者移动鼠标等引起窗体刷新时,窗体不停的抖动,这可在窗体的加载事件中加入:
Me.Recalc
14、查找与该控件匹配的记录
如何使窗体转到组合框或文本框中输入的指定记录,用组合框的向导中可以自动生成语句,也可在控件的更新后事件中使用下面一句语句:
Me.Recordset.FindFirst"[ID]="&Str(Nz(Me!
[Combo1],0))
ACCESS-VBA编程第一章控件
常量控件
acBoundObjectFrame绑定对象框
acCheckBox复选框
acComboBox组合框
acCommandButton命令按钮
acCustomControlActiveX(自定义)控件
acImage图像
acLabel标签
acLine线条
acListBox列表框
acObjectFrame未绑定对象框或图表
acOptionButton选项按钮
acOptionGroup选项组
acPage页
acPageBreak分页符
acRectangle矩形
acSubform子窗体/子报表
acTabCtl选项卡
acTextBox文本框
acToggleButton切换按钮
在VB中对窗体控件的引用
键入包含控件的窗体或报表的标识符,后面紧接!
运算符和控件的名称。
例如,下列标识符将引用“订单”窗体上“订单ID”控件值:
Forms!
[订单]!
[订单ID]
引用子窗体或子报表上的控件,不必使用“窗体”或“报表”属性为窗体或报表指定完整的标识符。
例如,可以使用下列标识符来引用“订单”子窗体上的“数量”控件:
Forms!
[订单]!
[订单子窗体]!
[数量]
判断窗体或报表中控件的数目,然后将该数目赋给一个变量。
DimintFormControlsAsInteger
DimintReportControlsAsInteger
intFormControls=Forms!
Employees.Count
intReportControls=Reports!
FreightCharges.Count
设置控件可见性
Dimi,iiAsInteger
Forii=3To10
Me.Controls.Item(ii).Visible=True
Next
Fori=11To22
Me.Controls.Item(i).Visible=False
Next
按特殊名在VBA中设置控件的可见性:
Fori=27To47
IfMe.Controls.Item(i).NameLike"A*"Then
3
access与VBA
Me.Controls.Item(i).Visible=False
EndIf
Next
指定一个控件能否接受焦点
Enabled属性:
me.控件.Enabled=true'能
=false'不能
指定一个控件能否被编辑:
locked
如:
me.控件.Locked=true
me.控件.Locked=false
设置控件标题显示的文字
Me.控件.Caption="显示窗体"
设置标签颜色:
Me.LabelColor=200
获得焦点及失去焦点时字段变更颜色。
如果你的控件是文本框,名称为“txt字段”,写如下代码:
PrivateSubtxt字段_GotFocus()
Me.txt字段.BackColor=12632256
EndSub
当中“12632256”是灰色,你可以自己选择希望的颜色,如果想在失去焦点时改为原来的颜色,写如下代码:
PrivateSubtxt字段_LostFocus()
Me.txt字段.BackColor=16777215
EndSub
使标签闪烁以引人注意
设置窗体的TimerInterval值为1000(1秒).
formsOnTimer加入代码:
SubForm_Timer()
YourTextLabel.Visible=NotYourTextLabel.Visible
End_Sub
设置标签字体颜色:
Me.Label1.ForeColor=
设置文本框颜色:
Me.TextColor=300
设置文本框字体颜色:
Me.TextFontColor=500
标签等左边距离:
Me.Label2.Left=2200
定位控件
Me.控件.Top=8290VBA编程
Me.控件.Left=100
标签等字体粗细:
Me.Label2.FontWeight=20000
控件边框颜色:
Me.Label2.BorderColor=0
ACCESS-VBA编程第一章控件
控件边框线条
BorderStyle属性使用以下设置:
透明0(仅对于标签、图表和子报表而言是默认值)透明的
实线1(默认值)实线
虚线2虚线
短虚线3短虚线
点线4点线
稀疏点线5点距较宽的点线
点划线6虚线与点线组合的点划线
点点划线7虚线-点线-点线组合的点点划线
双实线8双实线
指定控件的边框宽度
使用BorderWidth属性可以指定控件的边框宽度
取值:
0或1-6
指定控件是否透明
使BackStyle属性可以指定控件是否透明。
True、False
解除子窗体锁定
Me.进_子窗体.Locked=False'解除子窗体锁定
将窗体上所有控件的输入法关掉!
来源:
不祥
PrivateSubForm_Open(CancelAsInteger)
DimctlAsaccess.Control
ForEachctlInMe.Controls
Debug.Printctl.Name&ctl.ControlType
Ifctl.ControlType=acTextBoxThen
ctl.IMEMode=2
EndIf
Next
EndSub
上述代码控制文本框,你还可以控制其他的,只要copy进窗体就可以了
列表框的值的引用
如果是单选的列表框,用me.[列表框名]来引用;如果要引用不是结合型列的值,可以用me.[列表框名].column(n)(第一列n=0,第二列n=1…)
引用多列组合框或列表框中特定的列或列与行的组合
用0引用第一列,用1引用第二列,依此类推。
用0引用第一行,用1引用第二行,依此类推。
例如在含有一列客户ID和一列客户名称的列表框中,可以使用如下方式引用第二列、第五行的客户名称:
Forms!
Contacts!
Customers.Column(1,4)
可以使用Column属性将组合框或列表框的内容指定给另一控件,如文本框。
例如,若要将文本框的ControlSource属性设为列表框第二列中的值,可以使用以下表达式:
=Forms!
Customers!
CompanyName.Column
(1)
如果引用了组合框或列表框中的列,但用户未做选择,则Column属性设置将为Null。
可以使用IsNull函数来确定是否进行了选择,示例如下:
IfIsNull(Forms!
Customers!
Country)
ThenMsgBox"Noselection."
EndIf
显示获得焦点的控件的Name:
ctlAsControl
5
access与VBA
Setctl=Screen.ActiveControl
MsgBoxctl.Name
ACCESS-VBA编程第二章窗体
指定当窗体上的命令按钮保持按下状态时,是否重复执行事件过程或宏
使用AutoRepeat属性可以指定当窗体上的命令按钮保持按下状态时,是否重复执行事件过程或宏
True、False
允许添加
me.AllowAdditions=True
记录不锁定
me.RecordLocks=1
是否自动居中
AutoCenter=True,False
是否自动调整
AutoResize=True,False
窗体边框样式
me.BorderStyle=1中译:
无
其它
1无
2细边框
3可调边框
4对话框边框
设置窗体、页眉、页脚颜色:
Me.Section(0).BackColor=200
Me.Section
(1).BackColor=200
Me.Section
(2).BackColor=200
窗体标题
me.Caption="中国ACCESS软件网"中译:
窗体标题为"中国access软件网"(不含引号)
关闭按钮
me.CloseButton=True中译允许关闭按钮
其它:
true:
允许False:
不允许
控制框
me.ControlBox=True允许
其它:
true:
允许False:
不允许
默认视图
me.DefaultView=0为单一窗口
其它:
0:
单一窗口1:
连续窗体2:
数据表
允许分隔线
me.DividingLines=True中译允许分隔线
其它:
true:
允许False:
不允许
允许打印版式
英文:
me.LayoutForPrint=True中译允许打印版式
其它:
true:
允许False:
不允许
无最大最小化按钮
英文:
me.MinMaxButtons=0中译无最大最小化按钮
其它:
0:
无1:
最大化2:
最小化3:
两者都有
7
access与VBA
允许浏览按钮
英文:
me.NavigationButtons=True中译允许浏览按钮
其它:
true:
允许False:
不允许
滚动条
me.ScrollBars=0二者均无
其它:
0:
二者均无1:
只垂直2:
只水平3:
二者都有
允许/不允许添加
me.AllowAdditions=True/False
允许/不允许删除
me.AllowDeletions=True/False
允许/不允许编辑
me.AllowEdits=True/False
指定是否允许打开绑定窗体进行数据输入
使用DataEntry属性可以指定是否允许打开绑定窗体进行数据输入。
DataEntry属性不决定是否可以添加记录,只决定是否显示已有的记录。
Boolean型,可读/写。
True、False
允许/不允许筛选
me.AllowFilters=True/False
Filter="筛选内容"筛选
应用与/否筛选
FilterOn=True/False
将MyForm窗体的BackColor属性,改成ColorCode参数指定的色彩。
使用QBColor函数将MyForm窗体的BackColor属性,改成ColorCode参数指定的色彩。
QBColor可接受0到15的整型值。
SubChangeBackColor(ColorCodeAsInteger,MyFormAsForm)
MyForm.BackColor=QBColor(ColorCode)
EndSub
窗体真正居中显示
如下代码可以做到真正居中显示
PrivateSubForm_Load()
DoCmd.EchoFalse
Dimx,yAsInteger
DoCmd.Maximize
x=Me.WindowWidth
y=Me.WindowHeight
DoCmd.Restore
DoCmd.EchoTrue
Move(x-Me.WindowWidth)/2,(y-Me.WindowHeight)/2
EndSub
隐藏窗体[学生名册]数据表视图中的性别字段
Table!
学生名册!
性别.ColumnHidden=-1
显示获得焦点窗体的Name属性设置:
使用ActiveForm属性(和Screen对象一起)可以标识或引用获得焦点的窗体。
DimdqhdctAsForm
Setdqhdct=Screen.ActiveForm
MsgBoxdqhdct.Name
ACCESS-VBA编程第九章VBA使用技巧
显示窗体“第n条记录共m条记录”的函数
调用方法:
=RecordNumber("第",me)'me指当前窗体
可在文框的控件来源中写:
=RecordNumber("第",forms!
当前窗体名)
在代码的窗体成为当前事件中写:
me.文本框=RecordNumber("第",Me)
结果虽相同,但在代码中的要快!
但是,在代码的窗体成为当前事件中写:
Me.标签.Caption=RecordNumber("第",Me)
用标签,速度明显要比前两个用法还要快!
FunctionRecordNumber(pstrPreFixAsString,pfrmAsForm)AsString
OnErrorGoToRecordNumber_Err
Dimrst
DimlngNumRecordsAsLong
DimlngCurrentRecordAsLong
DimstrTmpAsString
Setrst=pfrm.RecordsetClone
rst.MoveLast
rst.Bookmark=pfrm.Bookmark
lngNumRecords=rst.RecordCount
lngCurrentRecord=rst.AbsolutePosition+1
strTmp=pstrPreFix&""&lngCurrentRecord&"页,"&"共"&lngNumRecords&""&"页"
RecordNumber_Exit:
OnErrorResumeNext
RecordNumber=strTmp
rst.Close
Setrst=Nothing
ExitFunction
RecordNumber_Err:
SelectCaseErr
Case3021
strTmp="NewRecord"
ResumeRecordNumber_Exit
CaseElse
strTmp="#"&Error
ResumeRecordNumber_Exit
EndSelect
EndFunction
获取access错误号与对应的中文解释
SubMMM()
Fore=1To100
Debug.Printe;"-";Error(e)
Next
EndSub
执行上述代码将显示如下结果:
1-应用程序定义或对象定义错误
2-应用程序定义或对象定义错误
3-无GoSub返回
4-应用程序定义或对象定义错误
5-无效的过程调用或参数
6-溢出
7-内存溢出
对话框返回文本框内容
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
InputBox函数的语法具有以下几个命名参数:
Prompt:
必需的。
作为对话框消息出现的字符串表达式。
prompt的最大长度大约是1024个字符,由所用字符的宽度决定。
如果prompt包含多个行,则可在各行之间用回车符(Chr(13))、换行符(Chr(10))或回车换行符的组合(Chr(13)&Chr(10))来分隔。
Title:
可选的。
显示对话框标题栏中的字符串表达式。
如果省略title,则把应用程序名放入标题栏中。
Default:
可选的。
显示文本框中的字符串表达式,在没有其它输入时作为缺省值。
如果省略default,则文本框为空。
Xpos:
可选的。
数值表达式,成对出现,指定对话框的左边与屏幕左边的水平距离。
如果省略xpos,则对话框会在水平方向居中。
Ypos:
可选的。
数值表达式,成对出现,指定对话框的上边与屏幕上边的距离。
如果省略ypos,则对话框被放置在屏幕垂直方向距下边大约三分之一的位置。
Helpfile:
可选的。
字符串表达式,识别帮助文件,用该文件为对话框提供上下文相关的帮助。
如果已提供helpfile,则也必须提供context。
Context:
可选的。
数值表达式,由帮助文件的作者指定给某个帮助主题的帮助上下文编号。
如果已提供context,则也必须要提供helpfile。
示例:
本示例说明使用InputBox函数来显示用户输入数据的不同用法。
如果省略x及y坐标值,则会自动将对话框放置在两个坐标的正中。
如果用户单击“确定”按钮或按下“ENTER”按键,则变量MyValue保存用户输入的数据。
如果用户单击“取消”按钮,则返回一零长度字符串。
DimMessage,Title,Default,MyValue
Message="Enteravaluebetween1and3"'设置提示信息。
Title="InputBoxDemo"'设置标题。
Default="1"'设置缺省值。
'显示信息、标题及缺省值。
MyValue=InputBox(Message,Title,Default)
'使用帮助文件及上下文。
“帮助”按钮便会自动出现。
MyValue=InputBox(Message,Title,,,,"DEMO.HLP",10)
'在100,100的位置显示对话框。
MyValue=InputBox(Message,Title,Default,100,100)
根据屏幕分辨率自动调整窗体大小:
OptionCompareDatabase
PrivateDeclareFunctionGetSystemMetricsLib"user32"(ByValnIndexAsLong)AsLong
PrivateConstSM_CXSCREEN=0
PrivateConstSM_CYSCREEN=1
PrivateSubForm_Open(CancelAsInteger)
DimxAsLong,yAsLong,aAsLong,bAsLong
x=GetSystemMetrics(SM_CXSCREEN)
y=GetSystemMetrics(SM_CYSCREEN)
a=10000/800*x
b=7000/600*y
DoCmd.MoveSize1134,1134,a,b
EndSub
获得系统的屏幕区域大小
PrivateDeclareFunctionGetSystemMetricsLib"user32"(ByValnI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 设计 技巧