如果包含特定字母,如何更改字母的大小和样式并填充单元格的背景?

时间:2017-08-17 07:40:59

标签: excel vba excel-vba

我有一个表格,单元格输入可以是XCGT

  • 如果单元格有输入X,我希望字体大小为5或更小(指定)并用样式填充单元格

  • 如果单元格有输入CGT,则字体应为粗体,大小为11,字体颜色为红色或/且单元格为黄色

我不知道如何开始。

2 个答案:

答案 0 :(得分:0)

您可以在工作表中写下您想要的内容:

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target = Range("B2") Then
      'Do some thing
   End If
End Sub

答案 1 :(得分:0)

正如@Vityata所说 - 从录制宏开始。两个宏可能会更好 - 一个添加格式,另一个再删除。只需开始录制并将您的手机格式更改为您想要的格式 这将为您提供类似于此的代码:

Sub Macro1()
'
' Macro1 Macro
'

'
    Selection.Font.Bold = True
    With Selection.Font
        .Name = "Calibri"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    With Selection.Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub  

和一个删除格式:

Sub Macro2()
'
' Macro2 Macro
'

'
    Range("B2").Select
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    Selection.Font.Bold = False
End Sub

现在,您想要获取此代码,删除多余的位并将它们连接在一起。为此,我建议您进一步阅读With...End With代码块和Select Case语句 当我说多余的时,我的意思是任何违反该值的东西。像.Strikethrough = False这样的东西可以被移除,因为无论如何。

我们最终将这样的代码放在普通代码模块中:

Public Sub FormatCell(Target As Range)

    With Target
        Select Case .Value
            Case "C", "G", "T"
                With .Font
                    .Bold = True
                    .Size = 11
                    .Color = -16776961
                End With
                .Interior.Color = 65535
            Case "X"
                'Add code if the cell is X.
            Case Else
                .Font.ColorIndex = xlAutomatic
                .Interior.Pattern = xlNone
        End Select
    End With

End Sub

我已经将代码放在它自己的程序而不是工作表事件中,因此可以从不同的地方调用它。代码将格式化 case 中的单元格,它是C,G或T.如果它是X,它将什么也不做(必须添加那一段代码),如果它是什么,它将删除格式。

您可以通过以下工作表事件调用代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    FormatCell Target
End Sub 

Target是要更改的单元格,您将此变量传递给您的过程。您可能希望添加检查已选择单个单元格或特定单元格地址正在更改的代码。

注意:除了字体大小外,大部分内容都可以使用条件格式完成。