select某些列和删除其他VBA

我试图select只有某些标题的列,删除所有其他的,但我不断收到错误。 这是Method 'Range' of object '_Global' failed一个Method 'Range' of object '_Global' failed ,它强调了第七行代码( Range(Cells(1, Col)).Select )。 任何帮助或build议将不胜感激,谢谢!

  Dim Col As Integer Col = 1 Range("A1").Select While Selection.Value <> "" If Selection.Value = "A" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "B" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "D" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "E" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "F" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "H" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "J" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "M" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "N" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "P" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "R" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "S" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "T" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "V" Then Col = Col + 1 Range(Cells(1, Col)).Select ElseIf Selection.Value = "X" Then Col = Col + 1 Range(Cells(1, Col)).Select Else: ActiveCell.EntireColumn.Delete End If Wend 

首先,错误是由仅使用一个Cell参数调用Range引起的。 如果你只有一个单元格,你必须附加单元格的地址属性,所以行应该是Range(Cells(1,col).Address).Select

其次,从你所描述的你想要你的代码,我不认为这个代码将实际执行你想要的。 坦率地说,我真的不知道你甚至试图从代码本身做什么,所以要事先警告我的答案会修复错误调用,但它似乎不会像你期待的那样运行确实运行。

你也可以通过在你的问题部分包含or简单地缩短if语句。

 With Selection If .Value = "A" or "B" or... ...Then... Else... End If End With 

希望这可以帮助 – https://msdn.microsoft.com/en-us/library/752y8abs.aspx