基础部分
一、窗体的基本操作
1、窗体插入
2、运行窗体
- 要么直接在窗体的界面点击运行按钮
- 要么用代码调用窗体的 show 方法
3、关闭窗体
- 代码关闭是
unload testform
方法
4、显示设置
- 窗体标题:caption
- 背景色:backcolor
- 背景图片:picture,代码里面可以使用
loadpicture()
方法进行加载
属性窗口里面可以查看
5、位置大小
- top、left、height、width
- startupPosition 启动显示位置
6、显示行为
- showModal 的值就是 true 或者false 可以设置显示窗体的时候是否可以进行其他的操作
7、删除窗体
二、控件的基本操作
1、控件插入
2、删除
3、对齐
- 菜单栏格式里面
- 可以选中多个控件进行布局的操作
4、tab键相关
5、控件循环
- 所有控件集合 controls
controls(index) controls("name")
可以选定具体的控件
6、控件类型判断
- typename 判断控件类型
Private Sub UserForm_Click()
For i = 0 To Controls.Count - 1
If TypeName(Controls(i)) = "TextBox" Then
MsgBox Controls(i).Value
End If
Next i
End Sub
窗体事件
- 和前面讲的工作表事件等是一样的,只需要特别注意一下键盘事件和鼠标事件
一、键盘事件
1、keydown
- keyCode 唯一,shift 参数不同的值分别代表ctrl、shift、alt
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
''''''''''''''code
End Sub
2、keyup
Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
''''''''''''''code
End Sub
3、keypress
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
''''''''''''''code
End Sub
keydown keypress 都是按键按下,但是一般使用keydown,功能更加强大
二、鼠标事件
1、mousedown
- button不同的值分别代表左右和中键
- shift 也是和上面一样
- x 和 y 就是鼠标的位置坐标
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
End Sub
2、mouseup
Private Sub UserForm_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
End Sub
3、mousemove
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
End Sub
vba一行的代码很长的话可以使用空格加下划线然后enter的方式进行换行
标签和按钮
一、按钮
1、快捷键设置
- 就是设置 Accelerator 属性,然后通过 alt 键加设置的键就可以激活按钮的 click 事件
2、enter 和 esc 响应
- 就是 default 和 cancel 属性都设置为true,然后窗体显示并且焦点在按钮上的时候按 esc 和 enter 就会激发按钮的 click 事件
二、标签
- label 标签基本就是用来显示一定的提示内容
- 具体的属性使用的时候可以通过属性窗口进行摸索
文字框
- maxLength 和 autoTab 属性可以实现输入多少个字符自动切换
- 基本的事件也是可以通过名字完全看懂的,不多说
- 其他的使用基本上也是琢磨属性窗口的内容
列表和组合框
- 这两个的用法基本是一致的,就是下拉框比一般的列表更加节省空间而已
- 选项的填充可以使用 additem 方法,可以用数组赋值给 list 属性,可以直接引用单元格区域赋值到RowSource 属性
- 选项的移除使用 removeitem 方法
一、combobox
- listIndex 代表当前选中项的索引:
ComboBox1.List(ComboBox1.ListIndex, 2)
- list 可以获取到具体的某个行列的值,第一个参数是行数,后一个是列数
二、listbox
- multiselect 设置是否可以选中多行
- selected 方法可以判断选项是否选中
Private Sub ComboBox1_Change()
Label1.Caption = "选中项的返回值是:" & ComboBox1.Value
End Sub
Private Sub CommandButton1_Click()
Dim arr
arr = Sheets(1).Range("a8:e15")
ComboBox1.ColumnCount = 5 '设置下拉框显示的列数
ComboBox1.BoundColumn = 3 '设置选中返回的列的数据
ComboBox1.TextColumn = 3 '设置选中下拉框的显示列
ComboBox1.List = arr
End Sub
Private Sub CommandButton2_Click()
ListBox1.RowSource = "Sheet1!A8:E12"
ListBox1.ColumnCount = 5
ListBox1.ColumnHeads = True
ListBox1.BoundColumn = 3
ListBox1.TextColumn = 2
End Sub
Private Sub CommandButton3_Click()
MsgBox ComboBox1.List(ComboBox1.ListIndex, 2)
End Sub
Private Sub CommandButton4_Click()
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
MsgBox ListBox1.List(i, 2)
End If
Next i
End Sub
单选、复选、框架、多页
一、单选、复选、框架
- 单选和复选必须要通过框架才能成组
- 不然对于单选框一个窗体的话只能有一个被选中
Private Sub Frame1_Click()
If 男.Value Then sr = "you sex:" & 男.Caption
If 女.Value Then sr = "you sex:" & 女.Caption
If 中.Value Then sr = "you sex:" & 中.Caption
TextBox1.Value = sr
End Sub
Private Sub Frame2_Click()
Dim sr As String
sr = "爱好:"
If 唱歌.Value Then sr = sr & 唱歌.Caption & Chr(10)
If 跳舞.Value Then sr = sr & 跳舞.Caption & Chr(10)
If 篮球.Value Then sr = sr & 篮球.Caption & Chr(10)
TextBox2.Value = sr
End Sub
二、微调、滚动调节
- 二者基本的使用都是一致的
- 都包含 max 、min最大最小值属性
- 滚动条支持步长 smallChange 和 largeChange 属性,微调只支持前者
- 对滚动条来说 smallChange 设置的是点击箭头按钮的该表量,largeChange 是设置直接点击滚动条的改变量
Private Sub ScrollBar1_Change()
ScrollBar1.SmallChange = 2
ScrollBar1.LargeChange = 10
ScrollBar1.Min = 10
ScrollBar1.Max = 80
TextBox4.Value = ScrollBar1.Value
End Sub
Private Sub SpinButton1_Change()
SpinButton1.SmallChange = 2
TextBox3.Value = SpinButton1.Value
End Sub
vba 中的
Me
变量代表代码所在的对象,如果是工作表代码就代表该工作表,如果是窗体代码就代表窗体
三、多页
1、图片控件
Private Sub Image1_Click()
f = Dir("C:\Users\user\Desktop\*.jpg")
Do
ListBox1.AddItem f
f = Dir
Loop While (Len(f) <> 0)
End Sub
Private Sub ListBox1_Click()
Dim path As String
path = "C:\Users\user\Desktop\" & ListBox1.Value
Image1.Picture = LoadPicture(path)
End Sub
2、多页
- 选项卡的索引是从 0 开始的
- style 属性设置为 2 可以隐藏上面的 tab 卡
Private Sub Label1_Click()
MultiPage1.Style = 2
End Sub
Private Sub MultiPage1_Change()
MsgBox MultiPage1.Value
MultiPage1.Value = 3
End Sub
ListView控件
TreeView控件
日期和进度条(略)
综合实例
命令栏操作(略)
功能区操作(略)
代码操作代码(略)