我有一个表格,单元格输入可以是X
,C
,G
或T
。
如果单元格有输入X
,我希望字体大小为5或更小(指定)并用样式填充单元格
如果单元格有输入C
,G
或T
,则字体应为粗体,大小为11,字体颜色为红色或/且单元格为黄色
我不知道如何开始。
答案 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
是要更改的单元格,您将此变量传递给您的过程。您可能希望添加检查已选择单个单元格或特定单元格地址正在更改的代码。
注意:除了字体大小外,大部分内容都可以使用条件格式完成。