Visual Basic Excel在代码中创建复选框
我在Excel文件中添加了一个按钮,当单击该按钮时,它将读取文本文件并用文本文件中的行填充列。我需要在与某些行相邻的单元格中添加一个复选框,具体取决于该行包含的内容 我可以在代码中创建复选框之类的组件吗?如果可以,如何创建Visual Basic Excel在代码中创建复选框,excel,vba,Excel,Vba,我在Excel文件中添加了一个按钮,当单击该按钮时,它将读取文本文件并用文本文件中的行填充列。我需要在与某些行相邻的单元格中添加一个复选框,具体取决于该行包含的内容 我可以在代码中创建复选框之类的组件吗?如果可以,如何创建 欢迎任何回复 虽然@Siva提供的链接肯定是有效的,但我更希望得到关于StackOverflow的答案,而不是外部链接。因此,以下是您可能正在寻找的解决方案: Option Explicit Public Sub tmpSO() Dim i As Long Dim chk
欢迎任何回复 虽然@Siva提供的链接肯定是有效的,但我更希望得到关于StackOverflow的答案,而不是外部链接。因此,以下是您可能正在寻找的解决方案:
Option Explicit
Public Sub tmpSO()
Dim i As Long
Dim chk As CheckBox
With ThisWorkbook.Worksheets(1)
.CheckBoxes.Delete
For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A").Value2 = "need checkbox" Then
Set chk = .CheckBoxes.Add(Left:=.Cells(i, "B").Left, Top:=.Cells(i, "B").Top, Width:=.Cells(i, "B").Width, Height:=10)
chk.OnAction = "runThisSub"
chk.Name = "CheckBowInRow" & i
chk.Caption = "CheckBowInRow" & i
End If
Next i
End With
End Sub
将两个子模块复制到
模块中
到Excel文件中,并在第一个子模块中进行更改
工作表(1)
)A
),以及A
中的值必须是need复选框
)工作表(1)
中A列中的所有单元格,并检查该值是否为need checkbox
。如果是这样,代码将自动在该单元格旁边的列B
中添加一个复选框
如果您单击任何新创建的复选框,则第二个子框将启动,并在消息框中显示已单击的行中的复选框。我想这就是您所需要的,非常棒,非常感谢!请问“Option Explicit”的作用是什么?Option Explicit
被认为是编码最佳实践。要了解更多信息,请阅读以下内容:并且(如果您希望阅读Microsoft在这方面的想法)
Sub runThisSub()
MsgBox "You clicked the checkbox " & Application.Caller _
& Chr(10) & "in cell " & ThisWorkbook.Worksheets(1).CheckBoxes(Application.Caller).TopLeftCell.Address
End Sub