返回列表 上一主題 發帖

[發問] 如何用VBA 把SUBOROUTINE寫入特定WORKSHEET?

本帖最後由 准提部林 於 2015-10-11 17:42 編輯

試試看:
Sub AR1011()
ActiveSheet.UsedRange.EntireColumn.Delete '欄群組也一併取消
ActiveSheet.UsedRange.EntireRow.Delete '列群組也一併取消
ActiveSheet.UsedRange.Delete '此時,UsedRange 仍未釋放,再 Del 一次

MsgBox ActiveSheet.UsedRange.Address
End Sub

註:若欄列有隱藏(非群組的隱藏),還須再加指令使其顯示

TOP

本帖最後由 准提部林 於 2015-10-12 18:36 編輯

回復 8# 小俠客


On Error Resume Next
Out.UsedRange.EntireColumn.Delete '加這行 
Out.Cells.Clear
Out.Columns.Ungroup
Out.Cells.EntireColumn.Hidden = False
Out.UsedRange.Delete '加這行 

這邊測都可以的∼∼

另個作法(範本引用): 
空白工作表+貼好工作表事件VBA,命名為〔TMP〕,
建立新資料時,刪除舊表,複製此表重命名∼∼

TOP

回復 13# 小俠客

我只能測試刪除原有資料及解除群組,
即使用加入:.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Out.UsedRange.Address 也是 $A$1 無誤~~

所謂的〔範本〕,指的是〔工作表範本〕,這表是在同一檔案的,
您可手動新增一工作表,命名為〔TMP〕,將〔Output〕程式碼貼入,即為一範本工作表,

要執行程式時,再〔Call 呼叫〕以下副程式: 
Sub NewOutput()
On Error Resume Next
Application.DisplayAlerts = False
With ThisWorkbook
   .Sheets("Output").Delete
   .Sheets("TMP").Copy After:=.Sheets(.Sheets.Count)
   .Sheets(.Sheets.Count).Name = "Output"
End With
Application.DisplayAlerts = True
End Sub

這可以:
1.刪除舊〔Output〕工作表
2.複製〔TMP〕工作表,重新命名〔Output〕

每次都是完全空白的工作表,也解決Selection_Change程式碼的問題!

TOP

        靜思自在 : 得理要饒人,理直要氣和。
返回列表 上一主題