ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2443|回复: 0

ACCESS VBA编程(二)窗体

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-5-9 14:18 | 显示全部楼层 |阅读模式
窗体是一种文档,可以用来收集信息。它包括两部分,一部分是由窗体设计者输入的,填写窗体的人无法更改的文字或图形。窗体设计者可以插入希望得到回答的问题、选项列表、信息表格等。另一部分是由窗体填写者输入的,用于从填写窗体者处收集信息并进行整理的空白区域。窗体设计者可以在文档中插入窗体域或 ActiveX 控件,为窗体填写者提供用于收集数据的位置。
正 文:
指定当窗体上的命令按钮保持按下状态时,是否重复执行事件过程或宏   
使用 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:两者都有

允许浏览按钮   
英文: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 的整型值。
Sub ChangeBackColor (ColorCode As Integer, MyForm As Form)
     MyForm.BackColor = QBColor(ColorCode)
End Sub

窗体真正居中显示   
如下代码可以做到真正居中显示
Private Sub Form_Load()
DoCmd.Echo False
Dim x, y As Integer
DoCmd.Maximize
x = Me.WindowWidth
y = Me.WindowHeight
DoCmd.Restore
DoCmd.Echo True
Move (x - Me.WindowWidth) / 2, (y - Me.WindowHeight) / 2
End Sub

隐藏窗体[学生名册]数据表视图中的性别字段   
Table!学生名册!性别.ColumnHidden = -1

显示获得焦点窗体的 Name 属性设置:   
使用 ActiveForm 属性(和 Screen 对象一起)可以标识或引用获得焦点的窗体。
Dim dqhdct As Form
Set dqhdct = Screen.ActiveForm
MsgBox dqhdct.Name

判断窗体是否打开的方法
Function IsLoaded(strName As String, Optional intObjectType As Integer =
acForm)
IsLoaded = (SysCmd(acSysCmdGetObjectState, intObjectType, strName) <> 0)
End Function

使用 IsLoaded 属性可以确定当前是否加载了 AccessObject。Boolean 型,只读。   
以下是一个示例:
If CurrentProject.AllForms("frmMain").IsLoaded = True Then
Forms!frmMain.Form.Visible = False
End If

窗体中组合框不在列表中示例   
不在列表中事件代码:
Private Sub 名称_NotInList(NewData As String, Response As Integer)
     Response = acDataErrContinue
     If MsgBox("您输入的名称不在列表中,在列表中添加新记录吗?", 68, "银河酒业") = 6 Then
     
     Me![名称] = Null
     DoCmd.GoToControl "单价"
     
     DoCmd.OpenForm "酒名列表", , , , acAdd, acNormal
     Else
     Me![名称] = Null
     Me![名称].Dropdown
     End If
End Sub

获得焦点事件代码:   
Private Sub 名称_GotFocus()
Me![名称].Requery
End Sub

如何让窗体总在最前面?   
*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 属性

移动无边框窗体例子
模块:   
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function ReleaseCapture Lib "user32" () As Long
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2

应用:   
Private Sub Form_Close()
DoCmd.RunCommand acCmdAppMaximize
End Sub
Private Sub Form_Load()
DoCmd.RunCommand acCmdAppMinimize
End Sub
Private Sub XPForm_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = 1 Then
     ReleaseCapture
     SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
   End If
End Sub
Private Sub 命令20_Click()
DoCmd.Close
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 20:50 , Processed in 0.024883 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表