すべてのシート内のすべての未使用の行と列をクリアするには:
Sub ReduceFileSize()
Dim wB As Workbook
Dim wS As Worksheet
Set wB = ThisWorkbook
For Each wS In wB.Sheets
DeleteUnUsed wS
Next wS
wB.Save
End Sub
Sub DeleteUnUsed(wS As Worksheet)
Dim r As Range
Dim LastRow As Double
LastRow = LastRow_1(wS)
Dim LastCol As Double
LastCol = LastCol_1(wS)
With wS
.Range(LastRow + 1 & ":" & .Rows.Count).EntireRow.Delete
.Range(collet(LastCol) & ":" & collet(.Columns.Count)).EntireColumn.Delete
End With
End Sub
Public Function LastRow_1(wS As Worksheet) As Double
With wS
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
LastRow_1 = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
LastRow_1 = 1
End If
End With
End Function
Public Function LastCol_1(wS As Worksheet) As Double
With wS
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
LastCol_1 = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
Else
LastCol_1 = 1
End If
End With
End Function
Public Function ColLet(x As Integer) As String
With ActiveSheet.Columns(x)
ColLet = Left(.Address(False, False), InStr(.Address(False, False), ":") - 1)
End With
End Function
が行を選択してみてくださいセルではなく数字(左端の列)を右クリックして削除(左端の列でも)して、完全な行を削除します。行を削除すると、関連するすべてのデータと書式が削除されます。また、プログラミングに関してではないので、おそらくこの質問は他のスタック交換に属します。 – Zero
'ActiveSheet.UsedRange.EntireRow.Delete'を使用してください – user3598756
各シートの未使用の行と列を非表示にして、ファイルを保存するだけです。 Ctrl + Endキーを使用すると違いが見えます。 ;) – R3uK