FormatConditions.Add(类型:=xlTextString,TextOperator:=xlContains,字符串:=“myText”)

Har*_*ane 2 python excel vba

我有一个 VBA 代码,我想将其转换为我的 python 脚本。

Sub formatStatus()

Dim ws As Worksheet
Dim fc_blocked As FormatCondition

Set ws = ThisWorkbook.ActiveSheet()

ws.Columns(1).FormatConditions.Delete

Set fc_blocked = ws.Columns(1).FormatConditions.Add(Type:=xlTextString, TextOperator:=xlContains, String:="blocked")
fc_blocked.Font.Color = RGB(100, 48, 160)
fc_blocked.Interior.Color = RGB(180, 120, 250)

End Sub
Run Code Online (Sandbox Code Playgroud)

我的 python 代码如下所示:

import win32com.client as win32

fcBlocked = ws.Columns(iCol).FormatConditions.Add(Type = win32.constants.xlTextString, TextOperator=win32.constants.xlContains, String='blocked')
fcBlocked.Font.Color = int('%02x%02x%02x' % (100, 48, 160)[::-1],16)
fcBlocked.Interior.Color = int('%02x%02x%02x' % (180, 120, 250)[::-1],16)
Run Code Online (Sandbox Code Playgroud)

但我有一个例外。

我成功尝试了

fcBlocked = ws.Columns(iCol).FormatConditions.Add(Type = win32.constants.xlCellValue, TextOperator=win32.constants.xlEqual Formula1='="blocked"')
fcBlocked.Font.Color = int('%02x%02x%02x' % (100, 48, 160)[::-1],16)
fcBlocked.Interior.Color = int('%02x%02x%02x' % (180, 120, 250)[::-1],16)
Run Code Online (Sandbox Code Playgroud)

但这会检查文本是否相等,而不是字符串是否包含“blocked”。

有人可以给我建议吗?

预先致谢并致以诚挚的问候!

小智 5

花了一个小时找出答案,几乎投降,但终于找到了:

\n\n
xlFC = xlApp.Columns("G:G").FormatConditions.Add(xlTextString, None, None, None, u\'\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xbb\xd0\xbe\xd1\x81\xd1\x8c -\', xlContains, None, None)\n
Run Code Online (Sandbox Code Playgroud)\n