2016-07-11 4 views
0

特定のタイトルのみの列を選択しようとしていますが、他の列をすべて削除しようとしていますが、エラーが発生します。 Method 'Range' of object '_Global' failedであり、コードの第7行(Range(Cells(1, Col)).Select)が強調表示されます。 何か助けや助言をいただければ幸いです。一部の列を選択して他の列を削除するVBA

 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 
+1

はこれだけ '細胞(1、コル).Select'を使用し、' Range'を退治してみます。 –

+0

ありがとうございました! – reggie86

答えて

2

まず、1つのCell引数でRangeを呼び出すとエラーが発生します。 Cellが1つしかない場合は、CellにAddressプロパティを追加する必要があります。そのため、行はRange(Cells(1,col).Address).Select

である必要があります。第2に、このコードとは違うと思います実際にあなたが好きな方法を実行します。率直に言って、コード自体から何をしようとしているのかは分からないので、私の答えがエラーコールを修正することを予告してください。しかし、一度それを予測しているようには実行されない可能性が高いようです実行されます。

+0

少なくとも、このコードを実行するためのより効率的な方法があります。実際に実行しようとすると書かれている場合 – RGA

+1

ありがとうございます! さらに、問題に重点を置くように文字列を列名として挿入しましたが、それはちょっと混乱している可能性があります。 – reggie86

2

また、質問部分に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

+0

ああ、知っていると助かります - ありがとう! – reggie86

+1

10億回のif文を書く必要がありません。xD – lewisthegruffalo

関連する問題