/ / Як видалити всі прапорці в діапазоні осередків - excel, excel-vba, vba

Як видалити всі прапорці у діапазоні комірок - excel, excel-vba, vba

У мене є код, щоб видалити прапорець у певній комірці, але мені потрібно, щоб видалити всі прапорці в діапазоні, який я вибрав. Нижче наведено код, який я вилучаю у певній комірці.

Columns("B:B").Select
Selection.Find(What:="FIELD SERVICES", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(1, -1).Select
Dim CB8 As CheckBox
For Each CB8 In ActiveSheet.CheckBoxes
If CB8.TopLeftCell.Address = ActiveCell.Address Then CB8.Delete
Next

Далі, як я намагався змінити його, щоб видалити клітини в діапазоні мені потрібно, але він тільки видаляє прапорець в першій комірці діапазону.

Columns("B:B").Select
Selection.Find(What:="FIELD SERVICES", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
Range(ActiveCell.Offset(1, -1), ActiveCell.Offset(8, 0).Select
Dim CB8 As CheckBox
For Each CB8 In ActiveSheet.CheckBoxes
If CB8.TopLeftCell.Address = ActiveCell.Address Then CB8.Delete
Next

Будь-які поради дуже вдячні.

Відповіді:

2 для відповіді № 1
Dim f as Range, cbRange as range
Dim CB8 As CheckBox


Set f = Columns("B:B").Find(What:="FIELD SERVICES", After:=ActiveCell, _
LookIn:=xlFormulas, LookAt:=xlPart)

if not f is Nothing then
set cbRange = f.parent.range(f.Offset(1, -1), f.Offset(8, 0))
For Each CB8 In ActiveSheet.CheckBoxes
If not application.intersect(CB8.TopLeftCell, cbRange) is nothing Then CB8.Delete
Next
end if