VBA代码用于删除包含具有函数Cells的特定string的列

我正在编写一个代码来摆脱在单元格中包含特定string的列。 代码如下:

Dim i As Integer Dim j As Integer Dim state As String Dim num As Variant num = InputBox("Enter the state", "What stx is it?", "Enter x here") 'the & will combine them together state = "st" & num With ActiveSheet.UsedRange 'Uses all the columns in use due to the previous line For j = 2 To .Columns.Count If .Cells(2, j).Formula = state Then 'Do nothing Else Range(.Cells(1, j), .Cells(.Rows.Count, j)).Delete Shift:=xlToLeft End If Next j End With End Sub 

我从j=2开始,因为我不想擦除第一列。 这是我想要修改的数据片段。 但是,这不会删除包含特定单元格的所有列。 令我感到困惑的是,如果我更换

  Range(.Cells(1, j), .Cells(.Rows.Count, j)).Delete Shift:=xlToLeft 

 Range(.Cells(1, j), .Cells(.Rows.Count, j)).Interior.ColorIndex = 6 

它正确地突出显示所有我想要删除的单元格。

当用一个循环删除行时,你应该总是向后运行,因为当你删除一行时,j增加1,意味着你跳过一行。

更换

 For j = 2 To .Columns.Count 

对于

 For j = .Columns.Count To 2 Step -1