問題は、指定したワークシートでマクロが機能しないことです。私は、列全体を削除し、特定の列が空白の場合は行全体を削除するための2つのサブルーチンを用意しています。私はWith Worksheets("OutPut")
であると理解していた特定のワークシートに対しては動作させたいが、それでもアクティブなワークシートは切り捨てる。Excel VBA:特定のワークシートで特定の列が空白の場合、空白の列と行全体を削除します。
アクティブなワークシートが選択されている限り、意図したとおりに動作します。
Sub DeleteBlankColumns()
With Worksheets("OutPut")
Set MyRange = Worksheets("OutPut").UsedRange
For iCounter = MyRange.Columns.Count To 1 Step -1
If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then
Columns(iCounter).Delete
End If
Next iCounter
End With
End Sub
そして、私は変換したいワークシートがアクティブな場合は、再度、動作しますCall
それらの両方にボタンが、あります
Sub QuickCull()
With Worksheets("OutPut")
On Error Resume Next
Columns("B").SpecialCells(xlBlanks).EntireRow.Delete
On Error Resume Next
Columns("C").SpecialCells(xlBlanks).EntireRow.Delete
On Error Resume Next
Columns("D").SpecialCells(xlBlanks).EntireRow.Delete
On Error Resume Next
Columns("E").SpecialCells(xlBlanks).EntireRow.Delete
End With
End Sub
。参考のため、これは既存の会社のマクロに追加することを意図しているため、アクティブなときにワークシート上で実行するだけでは機能しません。
ありがとうございました!最初のコードサンプルについて
'With'を参照するシートに結ばれたすべての範囲オブジェクトの' .'をinfrontにする必要があります。例えば 'Application.CountA(.Columns(iCounter).EntireColumn)' –
@ScottCraner plsが答えを出します。私は私の答えを書いた後であなたのコメントを見ただけですが、あなたはそれに値する –
@iDevlopはあなたの答えを保ちます。 –