gpt4 book ai didi

vba - 在 VBA Excel 中以编程方式将选项按钮添加到用户窗体

转载 作者:行者123 更新时间:2023-12-02 10:00:52 24 4
gpt4 key购买 nike

我对 VBA 编程非常陌生。我的情况是,我将获得一个字符串值列表,我需要使用小窗口上的单选按钮将这些值显示给用户,以便每当用户通过单击单选按钮选择任何值时,我应该能够获取该值在VBA代码中。我在互联网上搜索了在用户表单中添加选项按钮,我得到了一些使用 GUI 方法创建选项按钮的解决方案。但我需要通过程序来完成。我在 stackoverflow ( How can I dynamically add a radio button on a form using VBA ) 中找到了一个有用的线程,我使用了它,但仍然无法在用户表单上获取任何标签或按钮,将显示一个普通的用户表单。所以请任何人提供有关此的信息。

代码是:

Sub Button1_Click()
lResult As Variant ' this is a array which contains string vaues to be dispayed as radio button.

' Some operatin is done here to get the list of values in lResult

Dim rad As Variant
Set rad = UserForm1.Controls.Add("Forms.OptionButton.1", "radioFoo", True)
rad.Caption = "bar"
rad.Left = 10
rad.Width = 10
rad.Top = 10
End Sub

UserForm1 是我使用 VBA 菜单栏中的“插入”选项创建的用户窗体。我尝试在用户窗体上添加一个按钮。我没有在用户窗体上使用初始化函数。 excel 工作表 Button1 上有一个按钮,我在单击该按钮时调用此函数。

谢谢

最佳答案

如果您有一个名为 UserForm1 的表单,其中包含一个名为 CommandButton1 的按钮

UserForm



您可以设置用户窗体的初始化方法,以编程方式创建一组单选按钮

Private Sub UserForm_Initialize()
Dim OptionList(1 To 3) As String
Dim btn As CommandButton
Set btn = UserForm1.CommandButton1
Dim opt As Control
Dim s As Variant
Dim i As Integer

OptionList(1) = "Option 1"
OptionList(2) = "Option 2"
OptionList(3) = "Option 3"

For Each s In OptionList
Set opt = UserForm1.Controls.Add("Forms.OptionButton.1", "radioBtn" & i, True)
opt.Caption = s
opt.Top = opt.Height * i
opt.GroupName = "Options"

UserForm1.Width = opt.Width
UserForm1.Height = opt.Height * (i + 2)

i = i + 1
Next

btn.Caption = "Submit"
btn.Top = UserForm1.Height - btn.Height + (0.5 * opt.Height)
btn.Left = (UserForm1.Width * 0.5) - (btn.Width * 0.5)

UserForm1.Height = UserForm1.Height + btn.Height + (0.5 * opt.Height)
End Sub

Private Sub CommandButton1_Click()
Dim i As Integer

For i = 0 To UserForm1.Controls.Count - 1
If UserForm1.Controls(i) Then
SelectedOption = UserForm1.Controls(i).Caption
End If
Next

UserForm1.Hide
End Sub



如果您想从工作表中提取列表,您可以更改

Dim OptionList(1 To 3) As String

OptionList(1) = "Option 1"
OptionList(2) = "Option 2"
OptionList(3) = "Option 3"

从这样的范围中提取

Dim OptionList() as Variant
OptionList = Range("A1:A3")


在存储在模块中的“button_onclick()”过程中添加以下代码:

'This is set by the code in UserForm1
Public SelectedOption As String

Sub Button1_OnClick()
UserForm1.Show
MsgBox SelectedOption
End Sub



这会得到这个结果:

enter image description here

当您单击“提交”时,会弹出一个消息框,显示您选择了哪个选项

enter image description here

关于vba - 在 VBA Excel 中以编程方式将选项按钮添加到用户窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18000834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com