首页 > 解决方案 > 将单元格格式/样式存储为 VBA 中的变量

问题描述

我正在尝试一种简单的方法来格式化在 VBA 中创建的输出表。在这方面,能够将“完整”的单元格格式/样式存储在变量或函数中会很方便,这些变量或函数可以在我的代码中的不同点应用。

例如,在我当前的项目中,我想在几个单元格上应用以下格式:

With CellX
    .ClearFormats
    .Borders(xlEdgeRight).LineStyle = xlContinuous
    .Borders(xlEdgeRight).Color = RGB(217, 217, 217)
    .Interior.Color = RGB(127, 126, 130)
    .Font.name = "Arial"
    .Font.Size = 8
    .Font.Color = RGB(255, 255, 255)
    .HorizontalAlignment = xlRight
    .Font.Bold = True
End With

由于我的代码结构,我不能(/不想)创建一个循环,将上述格式应用于我想要以这种方式格式化的所有单元格。相反,如果我可以将上面的内容定义为变量或其他内容,并且例如通过单行将其应用到 if 语句中,那将会很方便。

If [Variable] = True Then
[Apply formatting to] CellX
End if

有人对如何以一种好的方式做到这一点有任何建议吗?

标签: vbaexcel

解决方案


功能怎么样。创建一个以参数为范围的函数,然后使用它。

实际上它应该是子,像这样:

Sub formatRange(CellX As Range)
    With CellX
        .ClearFormats
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlEdgeRight).Color = RGB(217, 217, 217)
        .Interior.Color = RGB(127, 126, 130)
        .Font.Name = "Arial"
        .Font.Size = 8
        .Font.Color = RGB(255, 255, 255)
        .HorizontalAlignment = xlRight
        .Font.Bold = True
    End With
End Sub
Sub bla()
    If [Variable] = True Then
        formatRange (CellX)
    End If
End Sub

推荐阅读