sab*_*iri 0 excel controls vba excel-vba
我正在尝试从Excel工作表中的范围添加选项按钮.
For Each Value In OptionList
Set opt = UserForm3.Controls.Add("Forms.OptionButton.1", "radioBtn" & i, True)
opt.Caption = Value
opt.Top = opt.Height * i
opt.GroupName = "Options"
UserForm3.Width = opt.Width
UserForm3.Height = opt.Height * (i + 2)
i = i + 1
Next
Run Code Online (Sandbox Code Playgroud)
我想创建一个事件处理程序,以便radiobtn1在从用户运行代码时选择if .虽然我得到了很多答案,但这些是用于工作表用户表单的.
我的目的是处理VBA用户表单.请帮我解决一下你的想法.
只有一种类型的用户形式,但是对于Excel可用的两种类型的控件存在[永恒]混淆- 不同的在线资源使用的对比术语加剧了这种混淆. (只有关于ActiveX控件的部分才适用于用户表单.) 也许我可以通过将其放在帮助我理解的单词中来帮助解决问题. ☺
有两种类型的控件:表单控件和ActiveX控件:
这两种类型的控件可以在工作表上使用,但只的ActiveX控件可以使用用户窗体.
表单控件是Shapes集合的一部分(就像绘图对象一样),因此被称为:
Properties或点击F4),因为ActiveX控件具有更多更简单的表单控件的选项.
选项按钮和复选框可以绑定在一起(因此可以从组中选择一次只能选择一个选项),方法是将它们放在共享的组框中.
选择组框控件,然后Ctrl在选择要分组的其他每个控件时按住.右键单击组框控件,然后选择
Grouping→Group.
下面的前两个链接是用于处理每种类型的选项按钮的单独指令集.
Click仅限活动)窗体控件事件只能对一个事件作出回应:该Click事件.(此处有更多信息.)请注意,本节不适用于用户表单,因为它们仅使用ActiveX控件.
要为Click事件添加过程:
右键单击该控件并选择 Assign Macro...
在"分配宏"对话框中:
选择现有过程,然后单击OK,或,
单击New...,或,在VBE中创建一个新过程
单击Record...,或,录制新宏
要删除指定的事件,Macro Name请从字段中删除其名称,然后单击OK.
要重命名,编辑或删除现有宏,请按Alt+ F8打开Macro界面:

ActiveX控件具有更广泛的事件列表,可以将它们设置为响应.
要将事件分配给ActiveX控件,请右键单击该控件并选择View Code.在VBE中,您可以粘贴代码,或从VBE窗口右上角的下拉列表中选择特定事件.
事件也可用于用户表单的控件.由于只能将ActiveX控件放置为用户表单,因此您将获得"更多编码+更多功能"的权衡.
ActiveX控件添加到用户表单的方式与添加到工作表中的方式相同.请记住,分配给用户表单本身的任何事件(即背景)将在控件覆盖的任何区域中"被阻止",因此您可能需要将相同的事件分配给控件和用户表单.
例如,为了使此userform响应MouseMove 表单上的任何位置,相同的事件代码应用于userform,textboxes,选项按钮和框架:
Sub formControl_add()
'create form control
Dim ws As Worksheet: Set ws = ActiveSheet
With ws.Shapes.AddFormControl(xlOptionButton, 25, 25, 100, 100)
.Name = "cOptionButton1" 'name control immediately (so we can find it later)
End With
End Sub
Sub formControl_modify()
'modify form control's properties
Dim ws As Worksheet: Set ws = ActiveSheet
ws.Shapes("cOptionButton1").Select
With Selection 'shapes must be Selected before changing
.Characters.Text = "wxyzabcd"
End With
End Sub
Sub formControl_delete()
'delete form control
Dim ws As Worksheet: Set ws = ActiveSheet
ws.Shapes("cOptionButton1").Delete
End Sub
Run Code Online (Sandbox Code Playgroud)
Sub activexControl_add()
'create ActiveX control
Dim ws As Worksheet: Set ws = ActiveSheet
With ws.OLEObjects.Add("Forms.CommandButton.1")
.Left = 25
.Top = 25
.Width = 75
.Height = 75
.Name = "xCommandButton1" 'name control immediately (so we can find it later)
End With
End Sub
Sub activexControl_modify()
' modify activeX control's properties
Dim ws As Worksheet: Set ws = ActiveSheet
With ws.OLEObjects("xCommandButton1").Object
.Caption = "abcxyz"
.BackColor = vbGreen
End With
End Sub
Sub activexControl_delete()
' delete activeX control
Dim ws As Worksheet: Set ws = ActiveSheet
ws.OLEObjects("xCommandButton1").Delete
End Sub
Run Code Online (Sandbox Code Playgroud)
Sub ComboBox_addRemoveItems_FormControl()
Dim ws As Worksheet: Set ws = ActiveSheet
'add item to form control combo box
ActiveWorkbook.Sheets("Sheet1").Shapes("Drop Down 1").ControlFormat.AddItem "abcd"
'remove all items from from form control combo bo
ActiveWorkbook.Sheets("Sheet1").Shapes("Drop Down 1").ControlFormat.RemoveAllItems
End Sub
Run Code Online (Sandbox Code Playgroud)
Sub ComboBox_addRemoveItems_ActiveXControl()
Dim ws As Worksheet: Set ws = ActiveSheet
'add items to ActiveX combo box
ActiveWorkbook.Sheets("Sheet1").ComboBox1.AddItem "abcd"
'remove all items from ActiveX combo box
ActiveWorkbook.Sheets("Sheet1").ComboBox1.Clear
End Sub
Run Code Online (Sandbox Code Playgroud)
Office.com:添加复选框或选项按钮(表单控件)
Office.com:添加复选框,选项按钮或切换按钮(ActiveX控件)
Office.com:工作表上的表单,表单控件和ActiveX控件概述
Office.com:通过选择控件(检查和列表框)启用选择
Office.com:使用数据表单添加,编辑,查找和删除行
MSDN:VBA形状成员
Exceldemy:如何在Excel中使用表单控件
Microsoft TechNet:嵌入在Office文档中的ActiveX控件的行为
| 归档时间: |
|
| 查看次数: |
3066 次 |
| 最近记录: |