返回列表 上一主題 發帖

[發問] kill row

本帖最後由 t8899 於 2015-1-19 21:41 編輯
回復  t8899


   
Range("i74:i65536").EntireRow.Delete
Dim xE As Range
With ActiveSheet.Used ...
准提部林 發表於 2015-1-19 21:00

我寫一個巨集,刪掉最後一列(已使用)後面"沒用的列"都可套用
Sub a133323()
Dim a
Set a = Cells.Find(What:="*", LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not a Is Nothing Then
e = a.Offset(1).Address
b = ActiveSheet.UsedRange.Rows.Count
c = "d" & b   'd任何欄名皆可
Range(e, c).EntireRow.Delete
End If
ActiveSheet.UsedRange
End Sub

TOP

我寫一個巨集,刪掉最後一列(已使用)後面"沒用的列"都可套用
Sub a133323()
Dim a
Set a = Cells.Find ...
t8899 發表於 2015-1-19 21:35


有 bug 歐 (  你可以在 Row 5 ~ 10 填入資料, 其餘空白, 去測試就知道有 bug )

幫你改成這樣

Sub a133323()
刪除最後n列 = 1  ' <--- 你的目的
Dim a
Set a = Cells.Find(What:="*", LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If Not a Is Nothing Then
   a.Offset(1 - 刪除最後n列).EntireRow.Delete
End If
ActiveSheet.UsedRange
End Sub

TOP

本帖最後由 t8899 於 2015-1-20 07:20 編輯
有 bug 歐 (  你可以在 Row 5 ~ 10 填入資料, 其餘空白, 去測試就知道有 bug )
幫你改成這樣
Sub ...
bobomi 發表於 2015-1-19 22:35


測試沒有錯
可能沒表達清楚
我的目的=====>以您的例子 Row 5 ~ 10 填入資料
則ROW10為最後一列(有資料或有公式),ROW5 之前不砍 , ROW 11-65536 全刪除

TOP

本帖最後由 bobomi 於 2015-1-20 08:33 編輯
測試沒有錯
可能沒表達清楚
我的目的=====>以您的例子 Row 5 ~ 10 填入資料
則ROW10為最後一列(有資 ...
t8899 發表於 2015-1-20 07:08


這我就不懂了
我測的時候
開啟空白檔 -> R5 - R10 填入資料
它會從  ROW 6 - 65536 全刪除
而不是從 Row 10 開始

TOP

這我就不懂了
我測的時候
開啟空白檔 -> R5 - R10 填入資料
它會從  ROW 6 - 65536 全刪除
而不是從 ...
bobomi 發表於 2015-1-20 08:32

請測試 Book1.zip (326.76 KB)

TOP

本帖最後由 bobomi 於 2015-1-20 09:00 編輯
請測試
t8899 發表於 2015-1-20 08:42


已經知道原因了
你的 Book1.xls 剛好 R1 ~ R4 有內容 ( 看起來好像沒有資料, 其實它是有格式資料或者其他什麼的, 祇是看不見而已 )
所以程式執行後不會出錯

請你另開一各全新檔案 -> R5 - R10 填入資料 -> 執行你的 Sub a133323( ) -> 它就出錯了 !!
因為這各新檔案的 R1 ~ R4 是各 100% 無任何格式資料的區域

TOP

已經知道原因了
你的 Book1.xls 剛好 R1 ~ R4 有內容 ( 看起來好像沒有資料, 其實它是有格式資料或者其 ...
bobomi 發表於 2015-1-20 08:57


了解, 謝謝

TOP

End(xlUp), End(xlDown) 會有一些限制,  特殊資料, 有時會有意外的狀況

UsedRange 很好用, 但有時後面一堆空白行一樣會算進去

TOP

回復 18# diolin

說的是,有沒比較周全的作法?
另外總是看到 End(xlup) 要從工作表的 最後一個ROW往上找,感覺好像浪費時間

TOP

回復 19# Scott090

其實如果資料是自己產生的, 上面兩個方法一般就很足夠了

如果資料不如預期, 就要加點前置處理

如果你想省事一點, 也可以參考以下的作法

LastRow = ActiveSheet.Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row

TOP

        靜思自在 : 修行要繫緣修心,藉事練心,隨處養心。
返回列表 上一主題