標題:
[發問]
用find 指令 找出符合顏色的儲存格 ??
[打印本頁]
作者:
t8899
時間:
2016-6-21 21:09
標題:
用find 指令 找出符合顏色的儲存格 ??
本帖最後由 t8899 於 2016-6-21 21:12 編輯
找出 a1:a100 的儲存格為 Interior.ColorIndex=35
的語法??
Interior.ColorIndex=35 不知如何套用??
--------------------------
Find方法的語法
[語法]
<單元格區域>.Find (What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[MatchCase],[MatchByte],[SearchFormat])
[參數說明]
(1)<單元格區域>,必須指定,返回一個Range對象。
(2)參數 What,必需指定。代表所要查找的數據,可以為字符串、整數或者其它任何數據類型的數據。對應於「查找與替換」對話框中,「查找內容」文本框中的內容。
(3)參數 After,可選。指定開始查找的位置,即從該位置所在的單元格之後向後或之前向前開始查找(也就是說,開始時不查找該位置所在的單元格,直到Find方法繞回到該單元格時,才對其內容進行查找)。所指定的位置必須是單元格區域中的單個單元格,如果未指定本參數,則將從單元格區域的左上角的單元格之後開始進行查找。
(4)參數 LookIn,可選。指定查找的範圍類型,可以為以下常量之一:
xlValues、xlFormulas或者xlComments,默認值為xlFormulas。對應於「查找與替換」對話框中,「查找範圍」下拉框中的選項。
(5)參數 LookAt,可選。可以為以下常量之一:
XlWhole或者xlPart,用來指定所查找的數據是與單元格內容完全匹配還是部分匹配,默認值為xlPart。對應於「查找與替換」對話框中,「單元格匹配」復選框。
(6)參數 SearchOrder,可選。用來確定如何在單元格區域中進行查找,是以行的方式(xlByRows)查找,還是以列的方式(xlByColumns)查找,默認值為xlByRows。對應於「查找與替換」對話框中,「搜索」下拉框中的選項。
(7)參數 SearchDirection,可選。用來確定查找的方向,即是向前查找(XlPrevious)還是向後查找(xlNext),默認的是向後查找。
(8)參數 MatchCase,可選。若該參數值為True,則在查找時區分大小寫。默認值為False。對應於「查找與替換」對話框中,「區分大小寫」復選框。
(9)參數 MatchByter,可選。即是否區分全角或半角,在選擇或安裝了雙字節語言時使用。若該參數為True,則雙字節字符僅與雙字節字符相匹配;若該參數為False,則雙字節字符可匹配與其相同的單字節字符。
對應於「查找與替換」對話框中,「區分全角/半角」復選框。
(10)參數 SearchFormat,可選,指定一個確切類型的查找格式。對應於「查找與替換」對話框中,「格式」按鈕。當設置帶有相應格式的查找時,該參數值為True。
(11)在每次使用Find方法後,參數LookIn、LookAt、SearchOrder、MatchByte的設置將保存。如果下次使用本方法時,不改變或指定這些參數的值,那麼該方法將使用保存的值。在VBA中設置的這些參數將更改「查找與替換」對話框中的設置;同理,更改「查找與替換」對話框中的設置,也將同時更改已保存的值。也就是說,在編寫好一段代碼後,若在代
碼中未指定上述參數,可能在初期運行時能滿足要求,但若用戶在「查找與替換」對話框中更改了這些參數,它們將同時反映到程序代碼中,當再次運行代碼時,運行結果可能會產生差異或錯誤。若要避免這個問題,在每次使用時建議明確的設置這些參數。
Sub test() '刪除各表最後3個數據行
Dim sh As Worksheet, r
For Each sh In Worksheets
r = sh.Cells.Find("*", , , , 1, 2).Row『表格非空最大行號
Next
End Sub
作者:
GBKEE
時間:
2016-6-22 05:57
回復
1#
t8899
試試看
Option Explicit
Sub test() '刪除各表最後3個數據行
Dim sh As Worksheet, r
Application.FindFormat.Interior.ColorIndex = 35
For Each sh In Worksheets
r = sh.Cells.Find("*", , , , 1, 2, SearchFormat:=True).Row '『表格非空最大行號
Next
End Sub
複製代碼
作者:
t8899
時間:
2016-6-22 06:31
本帖最後由 t8899 於 2016-6-22 06:33 編輯
回復 t8899
試試看
GBKEE 發表於 2016-6-22 05:57
[attach]24538[/attach]
[attach]24539[/attach]
作者:
GBKEE
時間:
2016-6-23 07:26
回復
3#
t8899
r = sh.Cells.Find("", , , , 1, 2, SearchFormat:=True).Row '表格最大行號
複製代碼
作者:
c_c_lai
時間:
2016-6-23 07:40
回復
4#
GBKEE
所以會出現錯誤是因為 sh 並未加以定義,
所以它的執行區塊當然會不被接受。
作者:
hcm19522
時間:
2016-6-23 09:47
http://blog.xuite.net/hcm19522/twblog/205029860
作者:
c_c_lai
時間:
2016-6-23 15:09
回復
4#
GBKEE
這是測試的檔案:
[attach]24545[/attach]
[attach]24546[/attach]
[attach]24547[/attach]
作者:
GBKEE
時間:
2016-6-24 06:58
本帖最後由 GBKEE 於 2016-6-24 07:56 編輯
回復
7#
c_c_lai
可了解一下
Sub Ex() '刪除各表最後3個數據行
Dim sh As Worksheet, r As Double, i As Integer
Application.FindFormat.Clear
On Error GoTo Er:
With Workbooks.Add
.Sheets(1).Range("a" & Rows.Count) = "test"
.Sheets(1).Range("a" & Rows.Count) = ""
For i = 1 To 10
For Each sh In .Worksheets
sh.Activate
If i > 1 Then
On Error GoTo 0
With sh
.Cells(i, 1) = "aa"
.Cells(i, 1) = ""
End With
End If
r = sh.Cells.Find("", , , , 1, 2).Row - 1 ' 表格最大行號 (同等於 SearchFormat:=False)
Debug.Print i, sh.Name, r, "錯誤值 " & Err
Next
Next
.Close False
End With
Exit Sub
Er:
With sh
.Cells(i) = "aa"
.Cells(i) = ""
End With
Resume
End Sub
複製代碼
作者:
c_c_lai
時間:
2016-6-24 08:38
回復
8#
GBKEE
感激萬分!
從 Debug.Print sh.Name, r, "錯誤值 " & Err 中
多少看出瞭一些端爾, Thanks a lot !
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)