2017-04-19 7 views
0

私のExcelファイルは膨大で、理由は未使用の列にあることがわかりました。ファイルを削除すると、ファイルは通常のサイズになります。 未使用の列は空白になっているか、少なくとも空白に見えます。しかし、何かがそれらに含まれなければなりません。 UsedRangeをコンテンツの実際の列数にリセットする方法と方法を知るにはどうすればよいですか?Excel VBA Used Columns

私は次のことを試してみました:

myLastCol = _ 
    .Cells.Find("*", after:=.Cells(1), _ 
    LookIn:=xlFormulas, lookat:=xlWhole, _ 
    searchdirection:=xlPrevious, _ 
    searchorder:=xlByColumns).Column 

myLastCol=ActiveSheet.UsedRange.Columns.Count 

の両方が値16383を返します。助言がありますか?これはどうしたらできますか(私が書いたマクロと何か関係があると確信しています)?

+0

**常に**あなたのデータの範囲の数字で満たされた行がありますか?あなたは常にあなたのデータの範囲に満たされたテキストを持っていますか? – Jeeped

+2

私は混乱しています。サブプロシージャを実行するたびにエラーを修復したいのですか、サブプロシージャを修正してミスをしないようにしたいのですか?私は後者をお勧めします。 – Jeeped

+0

これは、間違った書式などが列や行全体に適用され、無関係な行*が空白のように見える場合に発生します。実際には、 'UsedRange'にあると考えられるスタイルや書式が適用されます。コードが何度も繰り返し実行されるために問題が発生し、これをヒットすると、上記のコードに基づいてコードが計算され、レビューされ、リファクタリングされます。それ以外の場合は、単に追加の行を削除してください。列と人生で移動:) –

答えて

0

未使用の列を削除できませんか?もしそうなら、この解決策はどうですか?

Sub DeleteUnusedColumns() 

     Dim colRange As Range 
     Dim c As Long 

    'Define the target range 
     Set colRange = ActiveSheet.UsedRange 

    'Iterate through the columns 
     For c = colRange.Columns.Count To 1 Step -1 

    'If the column is empty then you can delete it 
      If Application.CountA(Columns(c).EntireColumn) = 0 Then 
      Columns(c).Delete 
      End If 

    'Increment the counter down 
     Next c 
    End Sub 

End Sub