If语句中的InStr

Jor*_*A57 2 excel vba excel-vba

我需要遍历工作簿中的所有工作表.如果工作表的名称包含文本"Benefits",那么我需要在该工作表上运行一个宏作为活动工作表,然后循环到下一个.

我有这个代码和(1)它以任何一种方式运行宏,(2)它不循环到下一张表.

我是VBA的新手并且无法解决这个问题.

Sub CheckSheets()
    Dim sh As Excel.Worksheet
    For Each sh In ActiveWorkbook.Sheets
        If InStr(sh.Name, "Benefits") <> 0 Then
            Call AddCheckBoxesRange
        End If
    Next sh
End Sub


Sub AddCheckBoxesRange()
'by Dave Peterson
'add Form checkboxes
Dim c As Range
Dim myCBX As CheckBox
Dim wks As Worksheet
Dim rngCB As Range
Dim strCap As String

Set wks = ActiveSheet
Set rngCB = wks.Range("B3:E3")
'Set rngCB = Selection
strCap = "Select Plan"

For Each c In rngCB
  With c
    Set myCBX = wks.CheckBoxes.Add _
      (Top:=.Top, Width:=.Width, _
       Height:=.Height, Left:=.Left)
  End With
  With myCBX
    .Name = "cbx_" & c.Address(0, 0)
    .LinkedCell = c.Offset(1, 0) _
        .Address(external:=True)
    .Caption = strCap
'    .OnAction = ThisWorkbook.Name _
'        & "!mycbxMacro"
  End With
Next c

End Sub
Run Code Online (Sandbox Code Playgroud)

小智 6

Sub CheckSheets()
    Dim sh As Excel.Worksheet
    For Each sh In ActiveWorkbook.Sheets
        If sh.Name Like "*benefits*" Then
            Call AddCheckBoxesRange(sh.Name)
        End If
    Next sh
End Sub


Sub AddCheckBoxesRange(sName)
    ActiveWorkbook.Sheets(sName).Activate
    'by Dave Peterson
    'add Form checkboxes
     Dim c As Range
     Dim myCBX As CheckBox
     Dim wks As Worksheet
     Dim rngCB As Range
     Dim strCap As String

     Set wks = ActiveSheet
     Set rngCB = wks.Range("B3:E3")
    'Set rngCB = Selection
     strCap = "Select Plan"

     For Each c In rngCB
         With c
             Set myCBX = wks.CheckBoxes.Add _
                 (Top:=.Top, Width:=.Width, _
                 Height:=.Height, Left:=.Left)
         End With
         With myCBX
             .Name = "cbx_" & c.Address(0, 0)
             .LinkedCell = c.Offset(1, 0) _
             .Address(external:=True)
             .Caption = strCap
             '.OnAction = ThisWorkbook.Name _
             ' & "!mycbxMacro"
         End With
     Next c
End Sub
Run Code Online (Sandbox Code Playgroud)