Conrad希望模仿Excel中Word的“小写”功能。他能想到的唯一方法是开发一个宏,该宏可以遍历单元格中的每个字符。如果字符是小写的11磅,则宏应将字符更改为大写的9磅。

如果字符是大写(或不是字母),则不应受到影响。问题是,康拉德不知道如何以上述方式影响单元格中各个字符的格式。

当使用宏仅影响单元格中的某些字符时,最好记住每个单元格都有其自己的Characters集合,可以对其进行访问和修改。如您所料,集合中的每个元素都代表一个单元格中的单个字符。

这使我们可以建立一个宏来检查单元格中当前的内容,如果该字符当前为小写,则仅将该字符转换为大写并减小该字符的字体大小。

Sub SmallCaps()

Dim rCell As Range     Dim sWords As String     Dim sCharacter As String     Dim x As Long

'go through each cell in selection     For Each rCell In Selection         'Don't want to work on formulas         If Not rCell.HasFormula Then             sWords = rCell.Value 'Get the cell contents             For x = 1 To Len(sWords) 'Act on each letter                 sCharacter = Mid(sWords, x, 1)

If sCharacter >= "a" And sCharacter <= "z" Then                     'sCharacter is a lowercase letter                     With rCell.Characters(Start:=x, Length:=1)

'Decrease the font size by 2                         .Font.Size = .Font.Size - 2                         'Make character uppercase                         .Text = UCase(sCharacter)

End With                 End If             Next         End If     Next End Sub

该宏在运行时对选定的任何单元格起作用。

它检查以确保该单元格不包含公式(跳过了公式),然后对该单元格中的小写字符进行了任何修改。

使用这样的宏存在一些缺点,您应该意识到它们。最大的缺点是它实际上会修改单元格中的内容。完成后,单元格将包含所有大写文本,即使格式可能使其看起来像小写字母。这意味着您以后再次运行宏时可能会遇到问题,并且Excel的校对工具(例如拼写检查器)将无法对全部大写的单词起作用。 (但是,可以将Excel配置为仍然拼写检查此类单词。)

由于存在这些缺点,您可能希望采用一种完全不同的方法-更改要用于大写字母的单元格的字体。如果在网上搜索“小写字体”(不带引号),则应该可以找到许多候选字体,并且其中很多都是免费的。这是一个您可能会喜欢的网站:

https://www.fontsquirrel.com/fonts/list/tag/small%20caps

只需下载所需的字体(从此字体或其他信誉良好的来源)并将其安装在系统上。当您重新启动Excel时,字体应可用于格式化单元格。即使实际的单元格内容混合使用大写和小写,格式化为使用这种字体的单元格也会以小写形式显示文本。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(653)适用于Microsoft Excel 2007、2010、2013和2016。