Vba excel первая буква заглавная excel

Смена регистра буквенных символов в VBA Excel с помощью функции StrConv. Преобразование всех букв в верхний или нижний регистр, а также первых букв каждого слова в верхний.

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

В VBA Excel доступны следующие типы преобразования:

  • символов строки в верхний или нижний регистр;
  • однобайтовых символов в двухбайтовые и обратно;
  • знаков хирагана в катакана и наоборот (формы японской слоговой азбуки);
  • символов строки из формата системной кодовой страницы по умолчанию в Юникод и обратно.

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

Синтаксис функции StrConv

Синтаксис и параметры

StrConv(string, conversion)

  • string – исходное строковое выражение;
  • conversion – тип преобразования.

Тип преобразования

Для смены регистра букв используются следующие типы преобразования (conversion):

Константа Значение Описание
vbUpperCase 1 преобразование всех символов исходной строки в верхний регистр
vbLowerCase 2 преобразование всех символов исходной строки в нижний регистр
vbProperCase 3 преобразование первой буквы каждого слова исходной строки в верхний регистр

Примеры кода VBA Excel

Пример 1

Стандартное преобразование регистра букв:

Sub Primer1()

Dim a, b, c

a = StrConv(«чиСтота – зАЛОг здОроВья», 1)

b = StrConv(«чиСтота – зАЛОг здОроВья», 2)

c = StrConv(«чиСтота – зАЛОг здОроВья», 3)

MsgBox a & vbNewLine & b & vbNewLine & c

‘Результат:

‘ЧИСТОТА – ЗАЛОГ ЗДОРОВЬЯ

‘чистота – залог здоровья

‘Чистота – Залог Здоровья

End Sub

Обратите внимание, что при указании типа преобразования vbProperCase (3), не только первые буквы слов преобразуются в верхний регистр, но и все остальные – в нижний.

Пример 2

Преобразование только первой буквы предложения в заглавную (в верхний регистр):

Sub Primer2()

Dim a, b

a = «чиСтота – зАЛОг здОроВья»

‘преобразуем все символы в нижний регистр

a = StrConv(a, 2)

‘извлекаем первую букву предложения и

‘преобразуем ее в верхний регистр

b = StrConv(Left(a, 1), 1)

‘заменяем первую букву в предложении

a = b & Mid(a, 2)

MsgBox a

‘Результат: «Чистота – залог здоровья»

End Sub

То же самое, но немного по-другому:

Sub Primer2()

Dim a

a = «чиСтота – зАЛОг здОроВья»

‘преобразуем все символы в нижний регистр

a = StrConv(a, 2)

‘заменяем первую букву в предложении этой же буквой,

‘преобразованной в верхний регистр

a = Replace(a, Left(a, 1), StrConv(Left(a, 1), 1), 1, 1)

‘смотрим результат

MsgBox a

End Sub

Подробнее о функции Replace в следующей статье.

 

obratka

Пользователь

Сообщений: 58
Регистрация: 11.08.2014

#1

08.10.2015 10:27:41

Коллеги, всем привет. Прошу подсказки в написании кода, с помощью которого, первые буквы в содержащихся в определенном столбце ячейках будут заменяться на Заглавные. На форуме нашел пару веток по этому вопросу, но в предоставленные варианты не полностью подходят мне, а именно:
1. Меняются все ячейки на листе (а мне нужна определенная колонка)
2. Меняются вновь забитые слова, а те которые были введены До — не изменяются (нужно, чтобы все слова в колонке изменялись, которые были забиты до введения макроса и после)

Заранее Спасисбо!

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Count <> 1 Then Exit Sub
    If Target.Column <> 1 Then Exit Sub
    If Len(Target) > 0 Then
        Application.EnableEvents = False
        If Len(Target) > 33 Then Target.Offset(0, 1) = Right(Target, Len(Target) - 33)
        Target = UCase(Left(Target, 1)) & Mid(Target, 2, 32)
        Application.EnableEvents = True
    End If
End Sub

 

Апострофф

Пользователь

Сообщений: 720
Регистрация: 06.04.2015

#2

08.10.2015 10:45:40

Цитата
obratka написал:
Меняются все ячейки на листе (а мне нужна определенная колонка)

?В вашем примере обрабатывается первый столбец, а не все ячейки.

Цитата
obratka написал:
нужно, чтобы все слова в колонке изменялись, которые были забиты до введения макроса

Сделайте подобный макрос на событие открытия книги или что-то подобное, дабы не вешать систему.

 

obratka

Пользователь

Сообщений: 58
Регистрация: 11.08.2014

Дело в том, что я в макросах очень слаб и как изменить эти условия не знаю.
Поэтому и обращаюсь на форум

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#4

08.10.2015 21:05:14

Цитата
obratka написал: (а мне нужна определенная колонка)

Какая конкретно?

Согласие есть продукт при полном непротивлении сторон.

 

VwwV

Пользователь

Сообщений: 10
Регистрация: 01.01.1970

#5

08.10.2015 22:42:21

obratka, добрый день!
так как вы не указали конкретную область для работы макроса, пока есть только такой код:

Скрытый текст

если нужно указать в самом коде конкретный столбец, то замените Selection на Range(«:») (между скобками поставьте нужную вам область)

Изменено: VwwV08.10.2015 22:53:18

 

sv2013

Пользователь

Сообщений: 657
Регистрация: 09.06.2015

#6

09.10.2015 00:08:22

добрый вечер,примените например функцию

Код
Function uu$(st$)
   uu = UCase(Left(st, 1)) & Mid(st, 2)
End Function

Прикрепленные файлы

  • example_8_10_2015_99.xls (31 КБ)

 

sv2013

Пользователь

Сообщений: 657
Регистрация: 09.06.2015

#7

09.10.2015 06:03:00

Добрый день,попробуйте такой макрос,если Ваш столбец,например A.

Код
Sub replica()
   Dim r1 As Range
     For Each r1 In Intersect(ActiveSheet.UsedRange, Columns("A"))
       r1 = UCase(Left(r1, 1)) & Mid(r1, 2)
     Next
End Sub

More often than not, to save time or for the sake of laziness, people enter data in all lowercase or all uppercase. Transforming this type of data into the proper format can be a serious headache. Let us show you how to make Excel capitalize first letter using VBA to do this automatically.

How to make Excel capitalize first letter

Both Excel and VBA have functions that can do this.

  • Proper (Excel)
  • StrConv (VBA)

In this example, we will be using the StrConv function in VBA. StrConv function can convert a string into a specified form. This form can be the case of letters, as well as their coding structure (i.e. Unicode or not). The function uses 2 arguments — the string itself, and the conversion type. Choose vbProperCase to convert a string of letters to the proper case. Below is an example.

StrConv("CONVERT ME",vbProperCase)

This code returns «Convert Me» as a string.

To use StrConv with all cells in a selection or a specified range, we need to check every cell using a loop. For Each…Next loop is ideal for moving from cell to cell regardless of selection range dimensions. The idea is to apply the StrConv function to each cell value and replace it.

You can use codes in two ways:

  • Module
  • Immediate Window

In the Module method, you need to add the module into the workbook or the add-in file. Copy and paste the code into the module to run it. The main advantage of the module method is that it allows saving the code in the file, so that it can be used again later. Furthermore, the subroutines in modules can be used by icons in the menu ribbons or keyboard shortcuts. Remember to save your file in either XLSM or XLAM format to save your VBA code.

The Immediate Window method, on the other hand, is essentially a quick and dirty method where you can simply copy and paste the code into the Immediate Window and press the Enter key to run it. Unfortunately, any code you use in the Immediate Window will not be saved. Also note that icons and keyboard shortcuts will not be available.

Convert selection to proper case

Module Version:

Sub ConvertProperCaseInSelection()

  Dim rng As Range

  For Each rng In Selection

    rng.Value = StrConv(rng.Value,vbProperCase)

  Next rng

End Sub

Immediate Version:

For Each rng In Selection: rng.Value = StrConv(rng.Value,vbProperCase): Next rng

Convert a specified range to proper case

Module Version:

Sub ConvertProperCaseInRange()

  Dim rng As Range

  For Each rng In Range("B2:E11")

    rng.Value = StrConv(rng.Value,vbProperCase)

  Next rng

End Sub

Immediate Version:

For Each rng In Range("B2:E11"): rng.Value = StrConv(rng.Value,vbProperCase): Next rng

Convert entire worksheet to proper case

Module Version:

Sub ConvertProperCaseInWorksheet()

  Dim rng As Range

  For Each rng In ActiveSheet.UsedRange

   rng.Value = StrConv(rng.Value,vbProperCase)

  Next rng

End Sub

Immediate Version:

For Each rng In ActiveSheet.UsedRange: rng.Value = StrConv(rng.Value,vbProperCase): Next rng

How to format words in Excel sheets using VBA such that first letter is capitalized followed by small letters in each word?

Community's user avatar

asked Oct 23, 2017 at 9:51

JayyM's user avatar

PROPER function should help. See this for details.

Using VBA

Sub Demo()
    Dim ws As Worksheet
    Dim rng As Range, cel As Range
    Dim lastRow As Long

    Set ws = ThisWorkbook.Sheets("Sheet3")  'change Sheet3 to data sheet
    With ws
        lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        For Each cel In .Range("A1:A" & lastRow)
            cel.Offset(0, 1).Value = Application.Proper(cel.Value)
        Next
    End With
End Sub

Using Formula

=PROPER(A1)

enter image description here

answered Oct 23, 2017 at 9:57

Mrig's user avatar

MrigMrig

11.6k2 gold badges13 silver badges27 bronze badges

4

This answer is the top Stack Overflow hit on Google for this question:

«vba code to capitalise the first letter of a word»

This code works in Office 365 Excel on Windows 10:

Public Function fnProperCase(sWord As String) As String
    fnProperCase = StrConv(sWord, vbProperCase)
End Function

Here is the Excel with a test suit; row 5 has all three outputs; test data in col 1, =fnProperCase() in col 2 and =PROPER() in col 3

Below are various other answers on Stack Overflow and elsewhere:

StrConv

Capitalise first letter of words without changing currently Capitalised

Making wrong code look wrong

Marcelo Scofano Diniz's user avatar

answered Mar 17, 2019 at 20:19

user10186832's user avatar

user10186832user10186832

3581 gold badge11 silver badges16 bronze badges

This is known as Proper Case. You can use the following line to convert a cell value to proper case:

YourCell.Value = StrConv(YourCell.Value, vbProperCase)

answered Oct 23, 2017 at 9:54

dotNET's user avatar

dotNETdotNET

32.6k22 gold badges157 silver badges246 bronze badges

1

Содержание:

  1. Сделать первую букву заглавной, используя формулу
  2. Делайте первую букву каждого слова заглавной
  3. Используйте заглавные буквы только в первой букве первого слова
  4. Сделайте первую букву первого слова с заглавной буквы и оставьте все как есть
  5. Сделайте первую букву первого слова заглавной, а остальные замените на строчные
  6. Сделать первую букву заглавной с помощью VBA

Помимо использования Excel с числовыми данными, многие люди также используют его с текстовыми данными. Это может быть как простая запись имен, так и что-то более сложное.

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

В этом уроке я покажу вам несколько способов сделать первую букву в ячейках Excel заглавной.

Итак, приступим!

Сделать первую букву заглавной, используя формулу

Может быть два сценария, в которых вы хотите извлечь выгоду:

  1. Первая буква каждого слова
  2. Только первая буква первого слова

Делайте первую букву каждого слова заглавной

Это довольно просто сделать, поскольку в Excel есть специальная функция для этого.

В Функция PROPER, цель существования которого состоит в том, чтобы начинать каждое слово с заглавной буквы.

Предположим, у вас есть набор данных, как показано ниже, и вы хотите быстро преобразовать первую букву каждого слова в верхний регистр.

Ниже приведена формула, которую вы можете использовать:
= ПРАВИЛЬНО (A2)

Это сделает первую букву каждого слова в указанной ячейке заглавной.

Довольно прямолинейно!

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

Используйте заглавные буквы только в первой букве первого слова

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

Однако вы все равно можете сделать это (легко) с помощью комбинации формул.

Опять же, может быть два сценария, в которых вы захотите это сделать:

  1. Сделайте первую букву первого слова с заглавной буквы и оставьте все как есть
  2. Сделайте первую букву первого слова заглавной, а остальную часть измените на нижний регистр (так как там уже может быть какая-то заглавная буква)

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

Посмотрим, как это сделать!

Сделайте первую букву первого слова с заглавной буквы и оставьте все как есть

Предположим, у вас есть набор данных ниже, и вы хотите использовать только первую букву (а остальное оставьте как есть).

Ниже приведена формула, которая сделает это:
= ВЕРХНИЙ (ЛЕВЫЙ (A2; 1)) & ВПРАВО (A2; ДЛСТР (A2) -1)

В приведенной выше формуле функция LEFT используется для извлечения первого символа из строки в ячейке. Затем он использует функцию UPPER, чтобы изменить регистр первой буквы на верхний. Затем он объединяет остальную часть строки (которая извлекается с помощью функции RIGHT).

Так. если есть слова, в которых уже есть заглавные буквы, они не будут изменены. Только первая буква будет заглавной.

Сделайте первую букву первого слова заглавной, а остальные замените на строчные

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

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

Предположим, у вас есть набор данных ниже:

Ниже приведена формула, в которой первая буква первого слова будет заглавной, а остальные — строчными:
= ЗАМЕНИТЬ (НИЖНИЙ (A2); 1,1; ВЕРХНИЙ (ЛЕВЫЙ (A2,1)))

Позвольте мне объяснить, как работает эта формула:

  • LOWER (A2) — переводит весь текст в нижний регистр.
  • UPPER (LEFT (A2,1) — преобразует первую букву текстовой строки в ячейке в верхний регистр.
  • Функция REPLACE используется только для замены первого символа его версией в верхнем регистре.

Одним из преимуществ использования формулы является то, что она сохраняет динамические данные. Например, если у вас есть формула и вы вносите какие-либо изменения в данные в столбце A (исходные текстовые данные), полученные данные будут автоматически обновлены. Если вам не нужны исходные данные и вы хотите сохранить только конечный результат, не забудьте преобразовать формулу в значения.

Сделать первую букву заглавной с помощью VBA

Хотя использование формул — это быстрый способ манипулирования текстовыми данными, оно включает в себя несколько дополнительных шагов: получение результата в дополнительном столбце, а затем его копирование и вставка в качестве значений.

Если вам часто нужно использовать изменение данных, как показано в одном из приведенных выше примеров, вы также можете рассмотреть возможность использования кода VBA. С кодом макроса VBA вам просто нужно установить его один раз, а затем вы можете добавить его на панель быстрого доступа.

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

Вы даже можете создать надстройку и использовать код VBA во всех своих книгах (и даже поделиться ими со своими коллегами).

Теперь позвольте мне дать вам коды VBA.

В приведенном ниже коде первая буква первого слова будет заглавной, а все останется как есть:
Sub CapitalizeFirstLetter () Dim Sel As Range Set Sel = Выбор для каждой ячейки В ячейке Sel. Value = UCase (Left (cell.Value, 1)) & Right (cell.Value, Len (cell.Value) - 1) Следующая ячейка Конец подписки
А ниже приведен код, в котором первая буква текста будет заглавной, а все остальное — строчными:
Sub CapitalizeFirstLetter () Dim Sel As Range Set Sel = Выбор для каждой ячейки В ячейке Sel.Value = Application.WorksheetFunction.Replace (LCase (cell.Value), 1, 1, UCase (Left (cell.Value, 1))) Следующая ячейка End Sub
Вам нужно поместить этот код VBA в обычный модуль в редакторе VB.

Вот несколько методов, которые вы можете использовать для написания заглавной буквы в ячейках Excel. В зависимости от сценария вы можете выбрать метод формулы или метод VBA.

Надеюсь, вы нашли это руководство по Excel полезным.

Like this post? Please share to your friends:
  • Vba excel пауза в макросе
  • Vba excel переменную в буфер
  • Vba excel парсинг xml
  • Vba excel переменная эта книга
  • Vba excel пароль на код