• 締切済み

VBAによる列削除について教えて下さい

VBA初心者です。いろいろと調べて見ましたが、「C列からアクティブセルの前列までを削除」する方法が分かりません。下の記述は「C列からX列」としていますが、X→「アクティブセルの前列」と読み替えるにはどうすればよろしいでしょうか。よろしくご指導下さい。 Sub 列削除() Columns("C:X").Select Selection.Delete Shift:=xlToLeft End Sub

みんなの回答

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.3

Sub 列削除() Range(Columns("C:C"), Columns(ActiveCell.Column - 1)).Select Selection.Delete Shift:=xlToLeft End Sub または、 Sub 列削除() Range(Columns(3), Columns(ActiveCell.Column - 1)).Select Selection.Delete Shift:=xlToLeft End Sub ActiveCellの列チェックあり Sub 列削除() If ActiveCell.Column > 3 Then Range(Columns(3), Columns(ActiveCell.Column - 1)).Select Selection.Delete Shift:=xlToLeft End If End Sub Select入れない場合 Sub 列削除() If ActiveCell.Column > 3 Then Range(Columns(3), Columns(ActiveCell.Column - 1)).Delete Shift:=xlToLeft End If End Sub Columns("C:X") X→「アクティブセルの前列」 と言う形式ならXは Left(ActiveCell.Offset(0, -1).Address(ColumnAbsolute:=False), 1) になるので、その形式がいいなら、 Sub 列削除() If ActiveCell.Column > 3 Then Range("C:" & Left(ActiveCell.Offset(0, -1).Address(ColumnAbsolute:=False), 1)).Delete Shift:=xlToLeft End If End Sub

balibali55
質問者

お礼

最後のAddress~のステートメントはなじみがなく、勉強してみます。 操作対象データは形式が決まっていて、列チェックの必要がないですが、 考え方が参考になりました。ありがとうございました。

すると、全ての回答が全文表示されます。
  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

Sub 列削除() Range(Columns("C"), Columns(ActiveCell.Column - 1)).Select Selection.Delete Shift:=xlToLeft End Sub でどうでしょうか。

balibali55
質問者

お礼

シンプルで分かりやすいご回答をありがとうございました。

すると、全ての回答が全文表示されます。
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Sub 列削除()   Select Case ActiveCell.Column   Case Is < 24     Range(ActiveCell.Offset(0,1), Range("X1"))_       .EntireColumn.Delete xlToLeft   Case Is > 24     Range(ActiveCell.Offset(0,-1), Range("X1"))_       .EntireColumn.Delete xlToLeft   End Selelct End Sub といった具合でしょう X列が選択されていた場合は 削除を行いません # インデントは 全角スペースです

balibali55
質問者

お礼

ご回答ありがとうございました。 select caseというステートメントを初めて知り、応用できそうです。

すると、全ての回答が全文表示されます。

関連するQ&A