2017-12-23 7 views
0

私は、次のコードをしている:私は、マクロを実行するとVBAを使用して最後の列に基づいて指定した数の列を削除するにはどうすればよいですか?

Sub BlaBla() 
Dim LastCol As Long 

With ThisWorkbook.Sheets("Sheet1") 
    LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 
    .Columns(LastCol).Delete 
End With 
End Sub 

、最後の列が削除されます。しかし、私は、5つの列を最後から1つではなく始めて削除したいと考えています。これどうやってするの?

答えて

1

With ThisWorkbook.Sheets("Sheet1") 
    LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 
    .Range(.Cells(1, LastCol - 4), .Cells(1, LastCol)).EntireColumn.Delete 
End With 

...このようにそれを試してみてくださいまたはあなたが必要な場合は、変更することができ、削除する列の数を保持するためにConstant Variableを宣言することができます。

Const DelCnt As Integer = 5 
Sub BlaBla() 
Dim LastCol As Long 
With ThisWorkbook.Sheets("Sheet1") 
    LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 
    .Range(.Cells(1, LastCol - DelCnt + 1), .Cells(1, LastCol)).EntireColumn.Delete 
End With 
End Sub 

編集:シート上のセルから削除する列の数を制御したい場合は

、あなたがこのアプローチに従うことができます...

Sub BlaBla() 
Dim LastCol As Long 
Dim DelCnt As Integer 
DelCnt = Sheets("Sheet2").Range("E18").Value 
With ThisWorkbook.Sheets("Sheet1") 
    LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 
    If LastCol >= DelCnt Then 
     .Range(.Cells(1, LastCol - DelCnt + 1), .Cells(1, LastCol)).EntireColumn.Delete 
    End If 
End With 
End Sub 
+0

ありがとうございます、それは非常にうまく機能します。 Howver、LastCol - Valueを記述することが可能かどうかを知りたかったのですが、ここでValueは削除される列の正確な数です。現在の時点-1では、1ではなく2つの列が削除されます。ヘルプを評価してください! –

+0

私は別の解決策を追加しました。あなたの質問が面倒であるかどうか確認してください。 – sktneer

+0

ありがとう!それはとてもうまくいくようです!コンスタント変数を別のワークシートから調整できますか?例えばこれは実現可能でしょうか? ( "Sheet2")。範囲( "E18")としてConst DelCnt、またはそれは本当に一定にとどまるべきであり、私はSheet2を通してそれを変更できませんか? –

2

Iプレゼントしたいと思います...

Sub DeleteLast5() 
    With ThisWorkbook.Sheets("Sheet2") 
     With .Cells(1, .Columns.Count).End(xlToLeft) 
      If .Column > 5 Then 
       .Offset(0, -4).Resize(, 5).Delete 
      Else 
       .Columns("A:E").Delete 
      End If 
     End With 
    End With 
End Sub 
+0

@ YowE3Kありがとうございました。私は '.Columns(" A:E ")で矛盾した結果を得ていました。削除しますが、それが正しいと確信しています。 –

+0

ええ、AFAIKの 'Columns(" A:E ")。Delete'パーツはうまくいくはずです。 – YowE3K

関連する問題