昨日、VBAを学ぶことにしました。それは期待通りに進んでいますが、私は今このコードで何時間も歯を壊しています。VBAのワークシートによるループ処理が優れています:ActiveWorkbook.Worksheets(I)?
すべての空の(タイトルを除く)列とこれをブックのすべてのシートで削除しようとしています。 多くのグーグルで私は自分のニーズに適応できるいくつかの例を見つけることができました。
私はこのコードを使用:私はこれを実行するとのみ、
Sub WorksheetLoop()
Dim WS_Count As Integer
Dim I As Integer
Dim MyRange As Range
Dim iCounter As Long
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
'removecode
' Define the target Range.
Set MyRange = ActiveWorkbook.Worksheets(I).UsedRange
'Start reverse looping through the range.
For iCounter = MyRange.Columns.Count To 1 Step -1
'If entire column is empty then delete it.
If Application.CountA(Columns(iCounter).EntireColumn) = 1 Then
Columns(iCounter).Delete
End If
Next iCounter
'endremovecode
MsgBox ActiveWorkbook.Worksheets(I).Name
Next I
End Sub
:remove columns 、その後、私はこの中にそれをfrankensteined一緒に懐かしいマイクロソフトsupport
を使用することにより、シートをループし、それを試してみました開始ワークシートがクリーンアップされます。メッセージボックスはすべてをループします。
なぜですか?私は間違って何をしていますか? 私は解決策を見つけようとしましたが、ここのトピックのどれもがより明確になるように思われませんでした。
正しい方向に私を導いてくれてありがとう。
ララ
ませんが、あなたはのように各ループにのためにあなたを変更することを検討する必要があります:
はこれを試してみてくださいActiveWorkbook.Worksheetsの各WSのために。 –