|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.05.2009, 13:19 | #1 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 369
|
Автоматически изменять первую букву в слове на заглавную для Microsoft Office Excel.
Как сделать, чтобы в ячейке Microsoft Office Excel первая буква в слове в начале предложения заменялась на заглавную автоматически?
|
14.05.2009, 14:25 | #2 |
Форумчанин
Регистрация: 23.02.2009
Сообщений: 306
|
Я знаю только формульный вариант =ПРОПНАЧ(A1)
Лень - двигатель прогресса!
|
14.05.2009, 15:24 | #3 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Может, это надо сделать средствами Excel?
Например, через меню Сервис - Параметры автозамены... |
14.05.2009, 16:12 | #4 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 369
|
Галочка стоит, но буква на заглавную не меняется. Почемуто.
|
01.03.2010, 12:15 | #5 |
Форумчанин
Регистрация: 25.11.2009
Сообщений: 113
|
ПРОПНАЧ() - это каждое слово с заглавной буквы. А как сделать так, чтобы первая буква первого слова начиналась с заглавной буквы?
|
01.03.2010, 12:31 | #6 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 369
|
Этот код меняет первую букву в ячейке на заглавную автоматически:
Private Sub Worksheet_Change(ByVal Target As Range) Dim oCell As Range For Each oCell In Target On Error GoTo NoText oCell = UCase(Left(oCell.Text, 1)) & _ Right(oCell.Text, Len(oCell.Text) - 1) Next Exit Sub NoText: End Sub А этот код меняет регистр на ваш выбор, в выбранном диапозоне ячеек: Sub Замена_регистра() Dim RgText As Range Dim oCell As Range Dim Ans As String Dim strTest As String Dim sCap As Integer, _ lCap As Integer, _ i As Integer '// Предполагается, что перед вызовом макроса '// пользователь выделил требуемый диапазон текста. Again: Ans = Application.InputBox("[С]трочные" & vbCr & "[П]рописные" _ & 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(xlCellTypeCo nstants, 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.Prope r( _ oCell.Text) Case "М" lCap = oCell.Characters(1, 1).Font.Size sCap = Int(lCap * 0.85) 'Малые прописные для всех букв. oCell.Font.Size = sCap oCell.Value = UCase(oCell.Text) strTest = oCell.Value 'Большие прописные для 1-х букв слов. strTest = Application.Proper(strTest) For i = 1 To Len(strTest) If Mid(strTest, i, 1) = UCase(Mid(strTest, _ i, 1)) Then oCell.Characters(i, 1).Font.Size = lCap End If Next i End Select Next Exit Sub NoText: MsgBox "Текст в диапазоне " & Selection.Address & " отсутствует" End Sub Последний раз редактировалось agregator; 01.03.2010 в 12:41. |
02.03.2010, 06:00 | #7 | |
Форумчанин
Регистрация: 25.11.2009
Сообщений: 113
|
Цитата:
|
|
02.03.2010, 10:33 | #8 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 369
|
Kipish_lp, нажмите Alt+F11 выберите "Эта книга" и скопируйте туда этот код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim oCell As Range For Each oCell In Target On Error GoTo NoText oCell = UCase(Left(oCell.Text, 1)) & _ Right(oCell.Text, Len(oCell.Text) - 1) Next Exit Sub NoText: End Sub Во вложении Книга, где это сделано, смотрите. |
16.09.2010, 15:35 | #9 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 369
|
Всем здрасти.
Этот код работает, но он зацикливается, т.е. много раз повторяется Код:
|
16.09.2010, 16:22 | #10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Нормально код работает. Возможно, у Вас есть ещё код в листе на изменение ячеек - тогда попробуйте вставить в этот код
Application.EnableEvents = False ... Application.EnableEvents = True P.S. Попробовал - на моём примере не помогает, но Вы попробуйте - вдруг с Вашим вторым кодом сработает...
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 16.09.2010 в 16:31. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите написать программу для распечатки документов Microsoft Office | КотФиларет | Microsoft Office Word | 1 | 19.01.2009 16:30 |
Есть ли такая команда, чтобы удалить определённую букву в слове? | Stager | Общие вопросы C/C++ | 8 | 09.01.2009 00:08 |
Объединение (синхронизация) данных в Microsoft Office Excel | Алексндр | Microsoft Office Excel | 2 | 29.07.2008 08:12 |
ДД. Нужен человек для поддержки программы, написанной в Microsoft Office Access 2003 | gsvgsv | Фриланс | 1 | 06.09.2007 11:52 |