0
シート名に「benefits」というテキストを含むワークシートにチェックボックスを追加する次のコードがあります。Loop内のCountA関数
行5にテキストが含まれている列ごとに、行3のチェックボックスが必要です。各ワークシートの列数は異なります。
次のコードは機能しますが、すべてのワークシートの最初のワークシートにcolumnCountを設定して使用します。
私は正しいコードを持っていると思いますが、間違った順序で配置されていますか?
'Checks for the text "Benefits" in the sheetname.
'If true then runs AddCheckBoxesRange Macro to add selection checkboxes for each plan.
Sub CheckSheets()
Dim sh As Worksheet
Application.ScreenUpdating = False
For Each sh In ActiveWorkbook.Sheets
If LCase$(sh.Name) Like "*benefits*" Then Call AddCheckBoxesRange(sh)
Next sh
Application.ScreenUpdating = True
End Sub
'Macro CheckSheets looks for the text benefits in sheetname, if it exists it calls this macro
Sub AddCheckBoxesRange(ws As Worksheet)
'add Form checkboxes
Dim c As Range
Dim myCBX As CheckBox
Dim rngCB As Range
Dim strCap As String
Dim columnCount As Integer
columnCount = WorksheetFunction.CountA(Range("5:5")) + 1
Set rngCB = ws.Range("B3", ws.Cells(3, columnCount))
strCap = "Select Plan"
For Each c In rngCB
With c
Set myCBX = ws.CheckBoxes.Add _
(Top:=.Top, Width:=.Width, _
Height:=.Height, Left:=.Left)
End With
With myCBX
.Name = "cbx_" & c.Address(0, 0)
.LinkedCell = c.Offset(37, 0) _
.Address(external:=True)
.Caption = strCap
End With
Next c
End Sub
に変更
columnCount = WorksheetFunction.CountA(Range("5:5")) + 1
!!説明をしてくれてありがとう。これを初めて知り、なぜ将来の仕事に役立つのか理解する。 – JordanCA57
良いと、答えを受け入れることに感謝 - 多くの人々はしないでください。 –