Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2009, 13:19   #1
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию Автоматически изменять первую букву в слове на заглавную для Microsoft Office Excel.

Как сделать, чтобы в ячейке Microsoft Office Excel первая буква в слове в начале предложения заменялась на заглавную автоматически?
agregator вне форума Ответить с цитированием
Старый 14.05.2009, 14:25   #2
IFRSoff
Форумчанин
 
Аватар для IFRSoff
 
Регистрация: 23.02.2009
Сообщений: 306
По умолчанию

Я знаю только формульный вариант =ПРОПНАЧ(A1)
Лень - двигатель прогресса!
IFRSoff вне форума Ответить с цитированием
Старый 14.05.2009, 15:24   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Может, это надо сделать средствами Excel?
Например, через меню Сервис - Параметры автозамены...

EducatedFool вне форума Ответить с цитированием
Старый 14.05.2009, 16:12   #4
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Галочка стоит, но буква на заглавную не меняется. Почемуто.
agregator вне форума Ответить с цитированием
Старый 01.03.2010, 12:15   #5
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

ПРОПНАЧ() - это каждое слово с заглавной буквы. А как сделать так, чтобы первая буква первого слова начиналась с заглавной буквы?
kipish_lp вне форума Ответить с цитированием
Старый 01.03.2010, 12:31   #6
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 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.
agregator вне форума Ответить с цитированием
Старый 02.03.2010, 06:00   #7
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

Цитата:
Этот код меняет первую букву в ячейке на заглавную автоматически
Извините за безграмотность, а как это запустить?
kipish_lp вне форума Ответить с цитированием
Старый 02.03.2010, 10:33   #8
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 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
Во вложении Книга, где это сделано, смотрите.
Вложения
Тип файла: rar Замена регистра.rar (10.4 Кб, 181 просмотров)
agregator вне форума Ответить с цитированием
Старый 16.09.2010, 15:35   #9
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Всем здрасти.
Этот код работает, но он зацикливается, т.е. много раз повторяется
Код:
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.Value, 1)) & _
Right(oCell.Value, Len(oCell.Value) - 1)
Next
Exit Sub
NoText: End Sub
Подскажите, как сделать так, чтобы он не зацикливался.
agregator вне форума Ответить с цитированием
Старый 16.09.2010, 16:22   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Нормально код работает. Возможно, у Вас есть ещё код в листе на изменение ячеек - тогда попробуйте вставить в этот код
Application.EnableEvents = False
...
Application.EnableEvents = True

P.S. Попробовал - на моём примере не помогает, но Вы попробуйте - вдруг с Вашим вторым кодом сработает...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 16.09.2010 в 16:31.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать программу для распечатки документов 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