2011-06-09 270 views
2

我想用vba生成特定布局的Excel表格。我的一个子程序是字体颜色。它看起来像这样:excel vba生成具有不同字体颜色的格式单元格

Sub SetFont(cell1, cell2 As range, fcolor As String) 

range(cell1, cell2).Select 
If fcolor = "w" Then 
    With Selection.Font 
     .ThemeColor = xlThemeColorLight1 
     .TintAndShade = 0 
    End With 
ElseIf fcolor = "b" Then 
    With Selection.Font 
     .ThemeColor = xlThemeColorDark1 
     .TintAndShade = 0 
    End With 
End If 

End Sub 

但它不起作用。字体始终以黑色生成。我不知道为什么。

回答

3

它适用于我,但有一个逆转; xlThemeColorLight1会产生黑暗的文字,而 xlThemeColorDark1会产生更轻的文字,这是非常愚蠢的,但你去了。

Sub foo() 
SetFont Range("A1"), Range("A6"), "b" 
End Sub 

Sub SetFont(cell1 As Range, cell2 As Range, fcolor As String) 
If fcolor = "w" Then 
    With Range(cell1, cell2).Font 
     .ThemeColor = xlThemeColorLight1 
    End With 
ElseIf fcolor = "b" Then 
    With Range(cell1, cell2).Font 
     .ThemeColor = xlThemeColorDark1 
    End With 
End If 
End Sub 

无关,但如果你有cell1, cell2 As rangecell2声明range类型,cell1仍然是一个变种。

+0

对于cell1类型声明注释+1,一个常见问题的好例子 – datatoo 2011-06-09 15:43:06

0

可能是尝试: 子setfont程序(小区1,小区2作为范围,fcolor作为字符串) 范围(小区1,小区2)。选择 如果fcolor = “W”。然后 随着Selection.Interior .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 结束随着 elseif的fcolor = “b” 然后 随着Selection.Interior .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 结束随着 结束如果

结束子

相关问题