VBA设计技巧.docx

上传人:b****5 文档编号:8394685 上传时间:2023-01-31 格式:DOCX 页数:25 大小:29.89KB
下载 相关 举报
VBA设计技巧.docx_第1页
第1页 / 共25页
VBA设计技巧.docx_第2页
第2页 / 共25页
VBA设计技巧.docx_第3页
第3页 / 共25页
VBA设计技巧.docx_第4页
第4页 / 共25页
VBA设计技巧.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

VBA设计技巧.docx

《VBA设计技巧.docx》由会员分享,可在线阅读,更多相关《VBA设计技巧.docx(25页珍藏版)》请在冰豆网上搜索。

VBA设计技巧.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1