AccessVBA编程使用技巧大全.docx
《AccessVBA编程使用技巧大全.docx》由会员分享,可在线阅读,更多相关《AccessVBA编程使用技巧大全.docx(247页珍藏版)》请在冰豆网上搜索。
AccessVBA编程使用技巧大全
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
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=8290
Me.控件.Left=100
设置控件宽度/高度
Me.考生答案.Width=10000
Me.考生答案.Height=1000
标签等字体粗细:
Me.Label2.FontWeight=20000
控件边框颜色:
Me.Label2.BorderColor=0
控件边框线条
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
Setctl=Screen.ActiveControl
MsgBoxctl.Name
窗体:
如何让窗体的标题条闪烁以引起用户注意?
在窗体中放一个Timer控件Timer1,设置其Inteval=200
*API函数声明
Private Declare Function FlashWindow Lib "user32" (ByVal hwnd As Long, ByVal bInvert As Long) As Long
注释:
在窗体中写下如下代码:
Private Sub Timer1_Timer()
FlashWindow Me.hwnd, True
End Sub
窗体上如何使用windows的媒体播放器
插入MicrosoftMediaPlayer控件
插入控件后,在控件中属性中的几个主要选项:
FileName:
要播放的文件名,包括路径
AutoStrat:
是否自动播放
AutoRevind:
播放完后是否自动回到起点
指定当窗体上的命令按钮保持按下状态时,是否重复执行事件过程或宏
使用AutoRepeat属性可以指定当窗体上的命令按钮保持按下状态时,是否重复执行事件过程或宏
True、False
以隐藏方式打开一个窗体
me.visible=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:
数据表
vba如何獲取/設置在數據表方式下個列的寬度
一、Me.RowHeight=800
二、Me.子窗体名.Form.Controls("列名").ColumnWidth=400
允许分隔线
me.DividingLines =True 中译允许分隔线
其它:
true:
允许False:
不允许
允许打印版式
英文:
me.LayoutForPrint =True 中译允许打印版式
其它:
true:
允许False:
不允许
无最大最小化按钮
英文:
me.MinMaxButtons =0中译无最大最小化按钮
其它:
0:
无1:
最大化2:
最小化3:
两者都有
允许浏览按钮
英文:
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
判断窗体是否打开的方法
FunctionIsLoaded(strNameAsString,OptionalintObjectTypeAsInteger=
acForm)
IsLoaded=(SysCmd(acSysCmdGetObjectState,intObjectType,strName)<>0)
EndFunction
使用IsLoaded属性可以确定当前是否加载了AccessObject。
Boolean型,只读。
以下是一个示例:
IfCurrentProject.AllForms("frmMain").IsLoaded=TrueThen
Forms!
frmMain.Form.Visible=False
EndIf
窗体中组合框不在列表中示例
不在列表中事件代码:
PrivateSub名称_NotInList(NewDataAsString,ResponseAsInteger)
Response=acDataErrContinue
IfMsgBox("您输入的名称不在列表中,在列表中添加新记录吗?
",68,"银河酒业")=6Then
Me!
[名称]=Null
DoCmd.GoToControl"单价"
DoCmd.OpenForm"酒名列表",,,,acAdd,acNormal
Else
Me!
[名称]=Null
Me!
[名称].Dropdown
EndIf
EndSub
获得焦点事件代码:
PrivateSub名称_GotFocus()
Me!
[名称].Requery
EndSub
如何让窗体总在最前面?
*API函数声明
Declare Function SetWindowPos Lib "user32" ( ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
注释:
常量声明
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
注释:
在某个form里写:
SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOMOVE 注释:
或下面
SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOSIZE
用代码选择图表样式
"柱形图"
Me.graphnow.Object.ChartType=xlColumnClustered
"折线图"
Me.graphnow.Object.ChartType=xlLineMarkers
"饼形图"
Me.graphnow.Object.ChartType=xl3DPie
"条形图"
Me.graphnow.Object.ChartType=xlBarClustered
柱形图 簇状柱形图 xlColumnClustered
三维簇状柱形图 xl3DColumnClustered
堆积柱形图 xlColumnStacked
三维堆积柱形图 xl3DColumnStacked
百分比堆积柱形图 xlColumnStacked100
三维百分比堆积柱形图 xl3DColumnStacked100
三维柱形图 xl3DColumn
条形图 簇状条形图 xlBarClustered
三维簇状条形图 xl3DBarClustered
堆积条形图 xlBarStacked
三维堆积条形图 xl3DBarStacked
百分比堆积条形图 xlBarStacked100
三维百分比堆积条形图 xl3DBarStacked100
折线图 折线图 xlLine
数据点折线图 xlLineMarkers
堆积折线图 xlLineStacked
堆积数据点折线图 xlLineMarkersStacked
堆积百分比折线图 xlLineStacked100
百分比堆积数据点折线图 xlLIneMarkersStacked100
三维折线图 xl3DLine
饼图 饼图 xlPie
分离型饼图 xlPieExploded
三维饼图 xl3Dpie
三维分离型饼图 xl3DPieExploded
复合饼图 xlPieOfPie
复合柱饼图 xlBarOfPie
XY (散点图) 散点图 xlXYScatter
平滑线散点图 xlXYScatterSmooth
无数据点平滑线散点图 xlXYScatterSmoothNoMarkers
折线散点图 xlXYScatterLines
无数据点折线散点图 xlXYScatterLinesNoMarkers
气泡图 气泡图 xlBubble
三维气泡图 xlBubble3DEffect
面积图 面积图 xlArea
三维面积图 xl3DArea
堆积面积图 xlAreaStacked
三维堆积面积图 xl3DAreaStacked
百分比堆积面积图 xlAreaStacked100
三维百分比堆积面积图 xl3DAreaStacked100
圆环图 圆环图 xlDoughnut
分离型圆环图 xlDoughnutExploded
雷达图 雷达图 xlRadar
数据点雷达图 xlRadarMarkers
填充雷达图 xlRadarFilled
曲面图 三维曲面图 xlSurface
曲面图(俯视图) xlSurfaceTopView
三维曲面图(框架图) xlSurfaceWireframe
曲面图(俯视框架图) xlSurfaceTopViewWireframe
股价图 盘高-盘低-收盘图 xlStockHLC
成交量-盘高-盘低-收盘图 xlStockVHLC
开盘-盘高-盘低-收盘图 xlStockOHLC
成交量-开盘-盘高-盘低-收盘图 xlStockVOHLC
圆柱图 簇状柱形圆柱图 xlCylinderColClustered
簇状条形圆柱图 xlCylinderBarClustered
堆积柱形圆柱图 xlCylinderColStacked
堆积条形圆柱图 xlCylinderBarStacked
百分比堆积柱形圆柱图 xlCylinderColStacked100
百分比堆积条形圆柱图 xlCylinderBarStacked100
三维柱形圆柱图 xlCylinderCol
圆锥图 簇状柱形圆锥图 xlConeColClustered
簇状条形圆锥图 xlConeBarClustered
堆积柱形圆锥图 xlConeColStacked
堆积条形圆锥图 xlConeBarStacked
百分比堆积柱形圆锥图 xlConeColStacked100
百分比堆积条形圆锥图 xlConeBarStacked100
三维柱形圆锥图 xlConeCol
棱锥图 簇状柱形棱锥图 xlPyramidColClustered
簇状条形棱锥图 xlPyramidBarClustered
堆积柱形棱锥图 xlPyramidColStacked
堆积条形棱锥图 xlPyramidBarStacked
百分比堆积柱形棱锥图 xlPyramidColStacked100
百分比堆积条形棱锥图 xlPyramidBarStacked100
三维堆积柱形棱锥图 Color 属性
移动无边框窗体例子
模块:
DeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
DeclareFunctionReleaseCaptureLib"user32"()AsLong
PublicConstWM_NCLBUTTONDOWN=&HA1
PublicConstHTCAPTION=2
应用:
PrivateSubForm_Close()
DoCmd.RunCommandacCmdAppMaximize
EndSub
PrivateSubForm_Load()
DoCmd.RunCommandacCmdAppMinimize
EndSub
PrivateSubXPForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=1Then
ReleaseCapture
SendMessageMe.hwnd,WM_NCLBUTTONDOWN,HTCAPTION,0&
EndIf
EndSub
Pr