前言
格式刷在我们调整Excel工作表、Word文档的格式时经常使用到,它可以帮助我们快速批量调整字体、大小、颜色、背景色等,甚至是表格行高列宽、字间距大小等。但如果在不同的Excel工作薄或跨Word文档,格式刷却不能使用。
如果想要跨工作薄使用格式刷,只能将两个工作薄复制合并到同一工作薄内。
那有没有其他的方法?有,可以用VBA代码依次获取单元格背景色的RGB值,字体名称、大小、颜色,单元格行高列宽。有了这些数据,就可以用VBA代码逐个给单元格背景色、行高列宽、字体赋值,更复杂的工作表,也能实现格式刷跨工作薄、动态化使用。
当然,如果只是处理简单的数据,没必要使用VBA代码。如果批量处理数据,比如工作表很多、格式很复杂,VBA代码还是有很大的优势的。
今后几期将依次用VBA代码创建公式获取单元格背景色、字体名称、字体大小、字体颜色、单元格行高列宽等,为后期VBA代码批量处理数据格式打基础。
本期先介绍单元格字体大小。
一、效果截图
二、代码
1.数字转字母
Public Function GetEngName(argColumn As Integer) As String '数字转字母
Dim strEngName As String
Dim iNum, iMod As Integer
iNum = argColumn \ 26
iMod = argColumn Mod 26
If (iMod = 0) Then
If (iNum = 1) Then
strEngName = Chr(90)
Else
strEngName = Chr(65 + iNum - 2) + Chr(90)
End If
Else
If (iNum = 0) Then
strEngName = Chr(65 + iMod - 1)
Else
strEngName = Chr(65 + iNum - 1) + Chr(65 + iMod - 1)
End If
End If
GetEngName = strEngName
End Function
2.获取单元格字体大小
Function getFontSize(rng As Range) As String '获取单元格字体大小,若单元格字体大小不一,无法获得字体大小
Dim fontSize As String
Dim rngRow As Integer
Dim rngCol As Integer
Dim ColA As String
rngRow = rng.Row
rngCol = rng.Column
ColA = GetEngName(rngCol)
fontSize = ActiveSheet.Range(ColA & rngRow).Font.Size
If rng.Value <> "" Then
getFontSize = fontSize
Else
getFontSize = ""
End If
End Function