Удаление набора столбцов после выбора определенного значения

В листе у меня есть таблица листов / столбцов, где пользователь должен выбрать ДА / НЕТ в зависимости от того, какие столбцы сохранить / удалить с какого листа.
Когда пользователь выбирает ДА, ничего не должно происходить, поскольку столбцы уже существуют, но если он выбирает NO, столбцы других листов должны быть удалены.

До сих пор я делал этот код, но ничего не менялось:

Опция Явная опция Base 1 Const TEMPLATE_SHE As String = "TemplateSHE"

Sub GenerateSHE() Dim ws, wsh As Worksheet, Cel1 As Range Dim Var1 As String Dim Col_num As Integer Dim Col_name As String Dim MyRange As Range Set ws = Worksheets(4) For Each Cel1 In ws.UsedRange If (Cel1.Value = "NO") Then For Each wsh In ActiveWorkbook.Sheets With wsh.Name <> TEMPLATE_SHE Col_num = .Range("A1").End(xlToRight).Column Set MyRange = .Range(.Cells(1, 1), .Cells(1, Col_num)).Cells.Find(Col_name) If Left(MyRange, 3) = "LEW" Then Columns("AY:BC").Delete Shift:=xlToLeft ElseIf Left(MyRange, 3) = "RMS" Then Columns("AT:AX").Delete Shift:=xlToLeft ElseIf Left(MyRange, 3) = "AMS" Then Columns("AR:AS").Delete Shift:=xlToLeft ElseIf Left(MyRange, 2) = "MM" Then Columns("AM:AQ").Delete Shift:=xlToLeft ElseIf Left(MyRange, 2) = "QM" Then Columns("AH:AL").Delete Shift:=xlToLeft ElseIf Left(MyRange, 3) = "TEM" Then Columns("AC:AG").Delete Shift:=xlToLeft ElseIf Left(MyRange, 3) = "LMM" Then Columns("X:AB").Delete Shift:=xlToLeft End If End With Next wsh End If Next Set ws = Nothing End Sub 

Может кто-то, пожалуйста, помогите мне исправить мой код?

Вот решение, которое работает для меня, оно полностью отличается от того, с чего я начал:

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [B2:E5]) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub If Target.Value = "YES" Then Exit Sub Call Del_Colns(Target.EntireRow.Cells(1, 1).Value, _ Target.EntireColumn.Cells(1, 1).Value) End Sub Private Sub Del_Colns(sheeet As String, colns As String) Dim i As Long With Worksheets(sheeet).UsedRange.Rows(1) For i = .Cells.Count To 1 Step -1 If InStr(1, .Cells(1, i).Formula, colns) = 1 Then .Cells(1, i).EntireColumn.Delete End If Next i End With End Sub 
  • используйте более 30 аргументов в функции sum в excel
  • Прочитайте конкретные Coloumns из файлов Excel с помощью C #
  • Замена существующего листа в Excel 2007 с использованием VBA
  • Выбор диапазона столбцов Excel VBA, выбор неправильных столбцов
  • C # Ошибка чтения файла Excel с помощью OleDbDataAdapter
  • Шаблон Excel: импорт CSV в пакетном режиме
  • Если затем цикл с поиском в Excel
  • Excel, как найти значения в 1 столбце, существует в диапазоне значений в другом
  • Вывод кодового выхода с использованием Excel VBA
  • Диаграммы не обновляются автоматически при изменении данных
  • Использование DateTime при ссылке на ячейку с помощью SUMIFS ()
  • Давайте будем гением компьютера.