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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2010, 04:50   #11
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Hugo121, спасибо перестало зацикливаться. Вот код
Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
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
Application.EnableEvents = True
Exit Sub
NoText:
End Sub
А чтобы увидеть как старый код зацикливался запиши этот
Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim oCell As Range
MsgBox "Ещё раз!"
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
agregator вне форума Ответить с цитированием
Старый 10.01.2012, 16:38   #12
Anticoors
Пользователь
 
Аватар для Anticoors
 
Регистрация: 08.01.2007
Сообщений: 11
По умолчанию

=СЦЕПИТЬ(ЛЕВСИМВ(ПРОПНАЧ(A1);1);ПРАВСИМВ(A1;ДЛСТР(A1)-1))

У меня так работает. Автоматически заменяет первую букву в ячейке на заглавную.
Anticoors вне форума Ответить с цитированием
Старый 10.01.2012, 18:41   #13
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Как вариант:
Код:
=ПРОПИСН(ЛЕВСИМВ(A1))&ПСТР(A1;2;100)
для строки до 100 знаков.
Или
Код:
=ЗАМЕНИТЬ(A1;1;1;ПРОПНАЧ(ЛЕВСИМВ(A1)))

Последний раз редактировалось vikttur; 10.01.2012 в 18:55.
vikttur вне форума Ответить с цитированием
Старый 21.02.2012, 08:33   #14
fil_v
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 15
По умолчанию Первая заглавная в одном слове

Цитата:
Сообщение от vikttur Посмотреть сообщение
Как вариант:
Код:
=ПРОПИСН(ЛЕВСИМВ(A1))&ПСТР(A1;2;100)
для строки до 100 знаков.
Или
Код:
=ЗАМЕНИТЬ(A1;1;1;ПРОПНАЧ(ЛЕВСИМВ(A1)))

Скажите, а как сделать чтобы из предложения на всем листе (Microsoft Excel 2010), или на выделенной строке, столбце ТОЛЬКО первая буква ПЕРВОГО слова была заглавная.

Задача: Челябинский Трубный Завод
Цель: Челябинский трубный завод
fil_v вне форума Ответить с цитированием
Старый 21.02.2012, 09:28   #15
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

Вот например выдели диапазон, запусти макрос и выбери букву "к"
Код:
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(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)) & Right(oCell.Text, Len(oCell.Text) - 1)
        Case "К": oCell = UCase(Left(oCell.Text, 1)) & _
LCase(Right(oCell.Text, Len(oCell.Text) - 1))
        Case "Н": oCell = Application.WorksheetFunction.Proper( _
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; 21.02.2012 в 09:56.
agregator вне форума Ответить с цитированием
Старый 21.02.2012, 16:56   #16
fil_v
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от agregator Посмотреть сообщение
Вот например выдели диапазон, запусти макрос и выбери букву "к"
Код:
Sub Замена_регистра()
Dim RgText As Range
Dim oCell As Range
Dim Ans As String........
Благодарю Вас, помогло!!!

Я с такими командами первый раз работаю.
Скажите а как записать этот макрос в макросы Экселя? И чтоб потом его можно было запускать без окна Visual Basik? И еще, получается при таких командах шаг назад уже сделать нельзя? У меня стрелка шага назад неактивна.
Буду ОЧЕНЬ признателен, за пошаговую инструкцию.
fil_v вне форума Ответить с цитированием
Старый 24.02.2012, 07:00   #17
agregator
Форумчанин
 
Аватар для agregator
 
Регистрация: 09.05.2009
Сообщений: 369
По умолчанию

fil_v , поместите прикрепленный файл в папку надстроек C:\Users\Ваш_пользователь\AppData\R oaming\Microsoft\AddIns
запустите Excel
выберите Сервис-Надстройки
поставьте галочку перед "Замена Регистра"
на стандартной панеле появится кнопка "Замена регистра"
нажимайте и пользуйтесь.
Про шаг назад здесь писали.
Вложения
Тип файла: rar Замена регистра.rar (12.6 Кб, 53 просмотров)

Последний раз редактировалось agregator; 24.02.2012 в 08:49.
agregator вне форума Ответить с цитированием
Старый 24.02.2012, 10:56   #18
fil_v
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от agregator Посмотреть сообщение
fil_v , поместите прикрепленный файл в папку надстроек C:\Users\Ваш_пользователь\AppData\R oaming\Microsoft\AddIns
запустите Excel
....
Про шаг назад здесь писали.

Благодарю Вас! Все получилось!!!
fil_v вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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