Конрад хотел бы имитировать «маленькие заглавные буквы» Word в Excel. Единственный способ, которым он может это сделать, — это разработать макрос, который проходит через каждого символа в ячейке. Если символ в нижнем регистре и 11 пунктов, то макрос должен изменить символ на верхний регистр 9 пунктов.

Если символ в верхнем регистре (или не буква), это не должно быть затронуто. Проблема в том, что Конрад не знает, как повлиять на форматирование отдельных символов в ячейке описанным образом.

При использовании макроса для воздействия только на определенные символы в ячейке, хорошо помнить, что каждая ячейка имеет свою собственную коллекцию символов, к которой можно получить доступ и изменить. Каждый элемент в коллекции представляет, как и следовало ожидать, один символ в ячейке.

Это позволяет нам составить макрос, который проверяет, что в данный момент находится в ячейке, и если символ в настоящий момент находится в нижнем регистре, преобразовать только этот символ в верхний регистр и уменьшить размер шрифта этого символа.

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.