Excel VBA(08)窗体和控件

基础部分

一、窗体的基本操作

1、窗体插入

2、运行窗体

  • 要么直接在窗体的界面点击运行按钮
  • 要么用代码调用窗体的 show 方法

3、关闭窗体

  • 代码关闭是 unload testform方法

4、显示设置

  • 窗体标题:caption
  • 背景色:backcolor
  • 背景图片:picture,代码里面可以使用loadpicture()方法进行加载

属性窗口里面可以查看

5、位置大小

  • top、left、height、width
  • startupPosition 启动显示位置

6、显示行为

  • showModal 的值就是 true 或者false 可以设置显示窗体的时候是否可以进行其他的操作

7、删除窗体

二、控件的基本操作

1、控件插入

Excel VBA(08)窗体和控件_第1张图片

2、删除

3、对齐

  • 菜单栏格式里面
  • 可以选中多个控件进行布局的操作

4、tab键相关

Excel VBA(08)窗体和控件_第2张图片

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

窗体事件

  • 和前面讲的工作表事件等是一样的,只需要特别注意一下键盘事件和鼠标事件
    Excel VBA(08)窗体和控件_第3张图片

一、键盘事件

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

Excel VBA(08)窗体和控件_第4张图片


单选、复选、框架、多页

一、单选、复选、框架

  • 单选和复选必须要通过框架才能成组
  • 不然对于单选框一个窗体的话只能有一个被选中
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

Excel VBA(08)窗体和控件_第5张图片

二、微调、滚动调节

  • 二者基本的使用都是一致的
  • 都包含 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

Excel VBA(08)窗体和控件_第6张图片

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

Excel VBA(08)窗体和控件_第7张图片

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控件


日期和进度条(略)


综合实例


命令栏操作(略)
功能区操作(略)
代码操作代码(略)

你可能感兴趣的:(其他)