Visual Basic Excel在代码中创建复选框

时间:2016-08-23 10:58:13

标签: excel excel-vba vba

我已经在Excel文件中添加了一个按钮,当单击该文件时,该文件会读取文本文件并使用文本文件中的行填充列。我需要在与某些行相邻的单元格中添加一个复选框,具体取决于该行所包含的内容。

我可以在代码中创建类似复选框的组件,如果是,那么如何?

任何回复都表示赞赏。

1 个答案:

答案 0 :(得分:1)

虽然@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
Sub runThisSub()

MsgBox "You clicked the checkbox " & Application.Caller _
            & Chr(10) & "in cell " & ThisWorkbook.Worksheets(1).CheckBoxes(Application.Caller).TopLeftCell.Address

End Sub

将两个潜艇复制到Module到您的Excel文件中并更改第一个子

  1. 导入文本的工作表(此处为Worksheet(1)),
  2. 可以找到条件的列(此处为A列),以及
  3. 条件是什么(此处A列中的值必须为need checkbox)。
  4. 现在,代码将查看工作表A中列Worksheet(1)中的所有单元格,并检查该值是否为need checkbox。如果是这样,代码会自动将复选框添加到该单元格旁边的列B中。

    如果您点击任何新创建的复选框,则第二个子会启动,并会在消息框中显示您已单击哪一行的复选框。