• 2

請教VBA遇到【條件式規式設定】時,要如何撰寫成VB陳述式?

請教VBA遇到【條件式規式設定】時,要如何撰寫成VB陳述式?
如題所示,一般遇到不會寫時,我都先用錄製的方式,然後參考去錄製的語法再去進行修改
可是當遇到條件式格式設定時,它卻只會錄製欄位選取而已..
舉例來說,例如我想要將H欄位內的值,凡是 >= 3 時,用紅字體表示
然後巨集錄製後去看程序,卻只會錄得如下陳述式:
 
=============
Sub 巨集5()
Columns("H:H").Select
End Sub
=============
 
故它只做了H欄位選取後,其它的就沒動作了..
我該如何寫?或我要如何得知相關資訊...
以上感謝..
 
(註:我找得的大致有(網址點擊))
因為時間太晚未進行測試,想知道有沒有方法可以整欄一塊做設定的..再次謝謝
2020-09-09 3:41 發佈
MaverickRay wrote:
如題所示,一般遇到不(恕刪)


送上2個現成例子(我平時有在用),給您參考:
1.考試登記,格子不到60分的,用顏色標註:


程式碼如下:

Sub t1()
'條件格式化
Range("A1").Select
Cells.FormatConditions.Delete '刪除已存在的條件格式化

Range("A1:D100").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=0.001", Formula2:="=59.999"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.ColorIndex = 13
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ColorIndex = 38
.TintAndShade = 0
End With

End Sub


第2個例子:滑鼠移到該列,會自動顏色標註(我同事說很好用,尤其是資料欄位多時)


程式碼:(有2處要加喔,效果才會出來) 1.模組內 2.工作表內。
1.模組內

Sub t2()
'條件格式化
Range("A1").Select
Cells.FormatConditions.Delete '刪除已存在的條件格式化
'以下:當游標移動時,把該列座號和A1號相同的範圍儲存格,通通打上底色
Range("A3:Z100").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=(OFFSET($A$1,ROW()-1,0)=VALUE(TRIM($A$1)))"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.599963377788629
End With
End Sub

2.工作表內:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'當游標移動時,把目前游標所在作用儲存格的A欄值(就是座號),標在A1
Cells(1, 1) = Cells(ActiveCell.Row, 1)
End Sub


以上,希望能幫到您喔
Der,misser1
不好意思,順便提一下,我用的Excel是2010........
Der,misser1
misser wrote:
1.考試登記,格子不到60分的,用顏色標註:



用set會比較好寫,增加、減少條件也比較直覺,請參考

'工作表2、a1~a10、大於0、小於0、粗體字


Sub SetFormatCondition()

Dim Crange As Range, C1 As FormatCondition, C2 As FormatCondition ' Cn As FormatCondition
'範圍
Set Crange = Sheets("工作表2").Range("a1", Sheets("工作表2").Range("a1").End(xlDown))
Crange.FormatConditions.Delete
Crange.Font.Bold = True
'條件1
Set C1 = Crange.FormatConditions.Add(xlCellValue, xlGreater, "=0")
C1.Font.Color = vbRed

'條件2
Set C2 = Crange.FormatConditions.Add(xlCellValue, xlLess, "=0")
C2.Font.Color = -11489280

'條件n...
'...
'...

Set Crange = Nothing

End Sub



misser wrote:
第2個例子:滑鼠移到該列,會自動顏色標註(我同事說很好用,尤其是資料欄位多時)
程式碼:(有2處要加喔,效果才會出來) 1.模組內 2.工作表內。


改這樣寫,就只需要放一個位置


'程式碼需放到工作表內(非模組)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Selection.Worksheet.Cells.FormatConditions.Delete

Rows(ActiveCell.Row).FormatConditions.Add xlExpression, , "TRUE"
Rows(ActiveCell.Row).FormatConditions(1).Interior.ThemeColor = 5

'Columns(ActiveCell.Column).FormatConditions.Add xlExpression, , "TRUE"
'Columns(ActiveCell.Column).FormatConditions(2).Interior.ThemeColor = 6

'.Interior.ThemeColor = 5 '.Interior.Color = vbGreen '.Interior.Color = RGB(200, 80, 100) '.Interior.ColorIndex = 8

End Sub

snare wrote:
用set會比較好寫,(恕刪)


沒錯,上面我post的代碼,當初也是用錄製的方式得到小修,然後再套用。

語法上真的差很多 ,s大的寫法更方便了。

至於
改這樣寫,就只需要放一個位置


之前也想過這部分,後來分2步是因為:因為我平時在用的檔案,已經被我塞了約34MB(1個xls)..運作效能較低。所以想說是不是「格式化條件」做一次就好(我簡單開新檔案,再確認一次運作時間。2種方式差異不大,但還是有點差距)

當然,下次有其他新檔案的使用機會時,應該就能派上用場囉。呵

MaverickRay wrote:

可是當遇到條件式格式設定時,它卻只會錄製欄位選取而已.


呃,我錄製都可以喔~~莫非是版本問題?(我是用2010)
Der,misser1
Conditional Formatting Macro 錄不到
只能直接用VBA修改CELLS的屬性
misser wrote:
送上2個現成例子(我(恕刪)


先感謝您熱心又附圖文的參考,這幾天比較忙,我有空再細看您附的程序碼。
看來是有解了,開心。真的很感謝..祝您一切順心又如意!^^..
misser wrote:
不好意思,順便提一下(恕刪)

其實版本好像沒什麼差,我從2007(忘了有沒有用過),2010、2013、2016(忘了有沒有這版本),然後到現在2019,在VBA這裡似乎好像差異不大,
不過關於VBA我也是在2016(還是13版)時才開始學的..
不過我有在另台電腦2010版用過,編輯時好像差異不大,不過我google時倒是有看過有些東西若要支援時,好像要在VBE裡載入..
對了,因為我是看舊書然後用新版本的office去學的,所以舊書裡提到的那些內部查詢說明功能,好像是2016版後就都只支援線上查詢.老實說,個人覺得很不方便。因為線上翻譯上,很多有看沒有懂..哈哈.
snare wrote:
用set會比較好寫,(恕刪)

也謝謝您提供,我到時研究時再來做比較^^
misser wrote:
沒錯,上面我post(恕刪)


我今日發現好像是我在錄製時是採選擇
【常用】\條件式格式化設定\ 管理規則(而非選擇新增規則)...
然後在管理規則的視窗下,去選擇新增規則..
如此錄製後就不會錄到跳出來的視窗下的設定..
不過用在字型等、段落...就不會有這種現像

而今日我試著用 新增規則時
他會錄製且有順利設定..
只是程序碼有些還沒仔細去看其意..
..大致如上.
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?