Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Изменение регистра в столбце - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение регистра в столбце (Макросы/Sub)
Изменение регистра в столбце
Dorimar Дата: Четверг, 21.12.2017, 10:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте! Есть кнопка, которая должна менять регистр букв во всем столбце активной ячейки. Макрос где-то в интернете находил давно, но что-то пошло не так и он меняет регистр как надо, но только в активной ячейке, а не во всем столбце.
В чем может быть проблема и как это исправить?
[vba]
Код

Sub Регистр()
Dim RgText As Range, oCell As Range
Dim Ans As String, strTest As String
Dim sCap As Integer, lCap As Integer, i As Integer

Again:
Ans = Application.InputBox("[с]трочные" & vbCr & _
                           "[П]рописные" & vbCr & _
                           "[К]Как в предложениях" & vbCr & _
                           "[Н]ачинать Каждое Слово С Заглавной", "Введите букву [ ]", Type:=2)
If Ans = "False" Then Exit Sub
   If InStr(1, "СПКНМ", UCase(Ans), vbTextCompare) = 0 Or Len(Ans) > 1 Then GoTo Again
      On Error GoTo NoText
         If Selection.Count = 1 Then
            Set RgText = Selection
            Else
            Set RgText = Selection.SpecialCells(xlCellTypeConstants, 2)
         End If
On Error GoTo 0
  For Each oCell In RgText
    Select Case UCase(Ans)
           Case "С": oCell = LCase(oCell.Text)
           Case "П": oCell = UCase(oCell.Text)
           Case "К": oCell = UCase(Left(oCell.Text, 1)) & LCase(Right(oCell.Text, Len(oCell.Text) - 1))
           Case "Н": oCell = Application.WorksheetFunction.Proper(oCell.Text)
    End Select
  Next
Exit Sub

NoText: MsgBox "Текст в диапазоне" & Selection.Address & " Отсутствует"
  
End Sub
[/vba]
К сообщению приложен файл: 4339831.xlsm(18.8 Kb)


Сообщение отредактировал Dorimar - Четверг, 21.12.2017, 10:56
 
Ответить
СообщениеЗдравствуйте! Есть кнопка, которая должна менять регистр букв во всем столбце активной ячейки. Макрос где-то в интернете находил давно, но что-то пошло не так и он меняет регистр как надо, но только в активной ячейке, а не во всем столбце.
В чем может быть проблема и как это исправить?
[vba]
Код

Sub Регистр()
Dim RgText As Range, oCell As Range
Dim Ans As String, strTest As String
Dim sCap As Integer, lCap As Integer, i As Integer

Again:
Ans = Application.InputBox("[с]трочные" & vbCr & _
                           "[П]рописные" & vbCr & _
                           "[К]Как в предложениях" & vbCr & _
                           "[Н]ачинать Каждое Слово С Заглавной", "Введите букву [ ]", Type:=2)
If Ans = "False" Then Exit Sub
   If InStr(1, "СПКНМ", UCase(Ans), vbTextCompare) = 0 Or Len(Ans) > 1 Then GoTo Again
      On Error GoTo NoText
         If Selection.Count = 1 Then
            Set RgText = Selection
            Else
            Set RgText = Selection.SpecialCells(xlCellTypeConstants, 2)
         End If
On Error GoTo 0
  For Each oCell In RgText
    Select Case UCase(Ans)
           Case "С": oCell = LCase(oCell.Text)
           Case "П": oCell = UCase(oCell.Text)
           Case "К": oCell = UCase(Left(oCell.Text, 1)) & LCase(Right(oCell.Text, Len(oCell.Text) - 1))
           Case "Н": oCell = Application.WorksheetFunction.Proper(oCell.Text)
    End Select
  Next
Exit Sub

NoText: MsgBox "Текст в диапазоне" & Selection.Address & " Отсутствует"
  
End Sub
[/vba]

Автор - Dorimar
Дата добавления - 21.12.2017 в 10:55
Pelena Дата: Четверг, 21.12.2017, 11:06 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12833
Репутация: 2827 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
должна менять регистр букв во всем столбце

Нет, этот макрос меняет регистр в выделенном диапазоне.
Сколько выделено ячеек, столько и поменяет


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
Сообщение
должна менять регистр букв во всем столбце

Нет, этот макрос меняет регистр в выделенном диапазоне.
Сколько выделено ячеек, столько и поменяет

Автор - Pelena
Дата добавления - 21.12.2017 в 11:06
Dorimar Дата: Четверг, 21.12.2017, 11:20 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Нет, этот макрос меняет регистр в выделенном диапазоне.
Сколько выделено ячеек, столько и поменяет

Как можно его изменить чтобы соответствовал поставленной задаче?
 
Ответить
Сообщение
Нет, этот макрос меняет регистр в выделенном диапазоне.
Сколько выделено ячеек, столько и поменяет

Как можно его изменить чтобы соответствовал поставленной задаче?

Автор - Dorimar
Дата добавления - 21.12.2017 в 11:20
Pelena Дата: Четверг, 21.12.2017, 11:28 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12833
Репутация: 2827 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Попробуйте вместо
[vba]
Код
  If Selection.Count = 1 Then
            Set RgText = Selection
            Else
            Set RgText = Selection.SpecialCells(xlCellTypeConstants, 2)
        End If
[/vba]
Написать
[vba]
Код
Set RgText = Selection.EntireColumn.SpecialCells(xlCellTypeConstants, 2)
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеПопробуйте вместо
[vba]
Код
  If Selection.Count = 1 Then
            Set RgText = Selection
            Else
            Set RgText = Selection.SpecialCells(xlCellTypeConstants, 2)
        End If
[/vba]
Написать
[vba]
Код
Set RgText = Selection.EntireColumn.SpecialCells(xlCellTypeConstants, 2)
[/vba]

Автор - Pelena
Дата добавления - 21.12.2017 в 11:28
Dorimar Дата: Четверг, 21.12.2017, 12:04 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо, все работает, кроме варианта регистра "Как в предложениях"
[vba]
Код
Case "К": oCell = UCase(Left(oCell.Text, 1)) & LCase(Right(oCell.Text, Len(oCell.Text)
- 1))
[/code][/vba]
Пишет Run-time error '5': Invalid procedure call or argument


Сообщение отредактировал Dorimar - Четверг, 21.12.2017, 13:07
 
Ответить
СообщениеСпасибо, все работает, кроме варианта регистра "Как в предложениях"
[vba]
Код
Case "К": oCell = UCase(Left(oCell.Text, 1)) & LCase(Right(oCell.Text, Len(oCell.Text)
- 1))
[/code][/vba]
Пишет Run-time error '5': Invalid procedure call or argument

Автор - Dorimar
Дата добавления - 21.12.2017 в 12:04
Pelena Дата: Четверг, 21.12.2017, 12:24 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12833
Репутация: 2827 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Dorimar, не надо цитировать пост целиком, это нарушение Правил форума.
Для оформления кода следует использовать кнопку #, а не fx
Исправлено

По теме: у меня отработал нормально


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеDorimar, не надо цитировать пост целиком, это нарушение Правил форума.
Для оформления кода следует использовать кнопку #, а не fx
Исправлено

По теме: у меня отработал нормально

Автор - Pelena
Дата добавления - 21.12.2017 в 12:24
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменение регистра в столбце (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!