返回列表 上一主題 發帖

刪除列之vba寫法

回復 20# ABK

沒檔案, 盲寫:
Sub TEST()
Dim xA As Range, xR As Range, xU As Range
Set xA = Sheets("Sheet1").UsedRange.Offset(1, 0)
For Each xR In xA.Columns(3).Cells
    If InStr("/cat/dog/", "/" & xR & "/") < 2 Then
       If xU Is Nothing Then Set xU = xR Else Set xU = Union(xU, xR)
    End If
Next
If Not xU Is Nothing Then xU.EntireRow.Delete
End Sub


=====================

TOP

回復 21# 准提部林


謝謝准堤大 !
cat 的列 也被刪除了!

column_delete.jpg (13.8 KB)

column_delete.jpg

column_delete.zip (15.45 KB)

TOP

回復 22# ABK

加一右斜線~~
If InStr("//cat/dog/", "/" & xR & "/") < 2 Then

TOP

回復 23# 准提部林


    感謝 准堤大 !
    OK了!

TOP

回復 7# GBKEE


請問.......
如果我用「區域變數」來觀察他的變化
我該看rng裡面哪個數值?
裡面大概有30項跑不掉吧

抱歉
問了個很基礎的問題⋯⋯
但是我真的不曉得range裡面的各個數值代表的意義是什麼

TOP

本帖最後由 luhpro 於 2020-12-19 00:02 編輯
回復  GBKEE


請問.......
如果我用「區域變數」來觀察他的變化
我該看rng裡面哪個數值?
裡面大概 ...
ssooi 發表於 2020-12-18 13:26


關於7#
要看的關鍵在那一行 : Rng = Union(Rng, R)
結果是個 "儲存格集合(即Range Union)".
儲存格本身是個 "物件" 組成元素太多了,
而我們要看的是該集合中變化(加減)了哪個儲存格,
所以只需要了解Union組成中儲存格的 "位址" 變化就夠了,
運算式用 :  Rng.address

關於 21#
要看的關鍵在那一行 : Set xU = Union(xU, xR)
運算式用 :  xU.address

在 "即時運算視窗" 中打上 ?(上述的運算式)
例如 :  ?Rng.address
再按 Enter 就可以知道集合中儲存格物件的增減(觀看顯示的位址群變化).

若不想F8跑一步就要按Enter看一次,
也可以在 "新增監看式" 中監看 : (上述的運算式) .
例如 :  Rng.address

TOP

原來如此
物件裡面一堆數值
看的眼都花了
謝謝

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題