是否可以使用VBA在excel中获取单元格属性的列表?我想确定一个单元格是否为粗体,下划线,斜体等。到目前为止,我在互联网上发现的所有建议都建议我检查该值是否为真。例如,在下面的代码中,我正在验证单元格是否为粗体:
Sub format_cells()
Dim ws As Worksheet
Set ws = Sheets("Uploads")
rc = ws.UsedRange.Rows.Count
For i = 2 To rc
If ws.Cells(i, 10).Font.Bold = True Then
Debug.Print "Pass"
End If
Next
End Sub
我宁愿不必创建条件语句或案例语句来检查所有可能性。我只希望能够用一行代码来获取属性。
例如,在Python中,我可以使用Openpyxl库完成此操作:
from openpyxl import load_workbook
wb = load_workbook("Book1.xlsx")
ws = wb["Uploads"]
ex = ws.cell(2,10)
print(ex.font)
然后我将获得以下输出:
<openpyxl.styles.fonts.Font object>
Parameters:
name='Calibri', charset=None, family=2.0, b=False, i=False, strike=None, outline=None, shadow=None, condense=None, color=<openpyxl.styles.colors.Color object>
Parameters:
rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type='theme', extend=None, sz=11.0, u=None, vertAlign=None, scheme='minor'
但是,如果我尝试在VBA中这样做,则会收到“运行时错误'424'对象必需”]
Sub test()
Dim ws As Worksheet
Set ws = Sheets("Uploads")
ex = ws.Range("J3")
Debug.Print ex.Font
End Sub
谢谢。
例如:
Debug.Print FormatString(Range("A1"))
Function FormatString(c As Range)
Dim f, e
With c
For Each e In Array("Bold", "Italic", "Color", "ColorIndex", _
"Underline", "Superscript", "subscript")
f = f & e & "=" & CallByName(.Font, e, VbGet) & ";"
Next e
End With
FormatString = f
End Function