将单元格格式/样式存储为VBA中的变量

时间:2018-05-28 06:58:52

标签: excel vba excel-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

任何人都有任何关于如何以良好方式做到这一点的建议?

1 个答案:

答案 0 :(得分:3)

功能如何?使用parametr作为范围创建一个函数,然后使用它。

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

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