select定义的值后删除一组列

在一张纸上,我有一个表格/列,用户应该select是/否取决于哪些列保持/从哪个表中删除。
当用户select“是”时 ,由于列已经存在,所以不应该发生,但是如果他select“ ”,则必须移除其他页的列。

直到现在,我做了这个代码,但没有改变:

Option Explicit Option 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 

有人可以帮我纠正我的代码吗?

以下是适合我的解决scheme,与我开始的完全不同:

 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