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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2010, 19:14   #1
brans
Форумчанин
 
Регистрация: 15.10.2010
Сообщений: 105
По умолчанию и опять строки.....

помогите пожалуйста, не могу довести до ума программу:
В ячеёке написанно: самойленко Елена сергеевна, нужно написать модуль на vba, такой, чтобы фамилия и отчество делались прописными буквами.....

вот мои наработки....


Private Sub cem()
Dim x
x = Split(Cells(43, 1))
p = Mid(x(0), 1, 1)
Z = Mid(x(2), 1, 1)
x = StrConv(p, vbUpperCase)
y = StrConv(Z, vbUpperCase)


End Sub


как теперь дальше не подскажете?
brans вне форума Ответить с цитированием
Старый 20.10.2010, 20:08   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Один из вариантов:
Код:
Sub cem()
Dim x, i As Byte
x = Split(Cells(43, 1))
For i = 0 To UBound(x)
    x(i) = Replace(x(i), Left(x(i), 1), UCase(Left(x(i), 1)))
Next i
Cells(43, 2) = Join(x, " ")
End Sub
nilem вне форума Ответить с цитированием
Старый 20.10.2010, 20:41   #3
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Ужасы нашего городка ...
Ну неужели тяжело зайти в HELP по StrConv и увидеть вариант
Код:
Cells(43, 1) = StrConv(Cells(43, 1),vbProperCase)
?...
Aent вне форума Ответить с цитированием
Старый 20.10.2010, 22:40   #4
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Цитата:
Сообщение от Aent Посмотреть сообщение
Ну неужели тяжело зайти в HELP по StrConv и увидеть вариант...
Зашел, увидел. Ну кто ж знал-то? Спасибо.
nilem вне форума Ответить с цитированием
Старый 21.10.2010, 04:34   #5
brans
Форумчанин
 
Регистрация: 15.10.2010
Сообщений: 105
По умолчанию

nilem, если Вам не сложно, то поясните, пожалуйста на словах суть рассуждения этой задачи. очень зочу понять ход мыслей...
brans вне форума Ответить с цитированием
Старый 21.10.2010, 05:49   #6
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

С помощью Split получаем из строки 1-мерный массив из элементов-слов (пробел - это разделитель по умолчанию). Циклом проходим по всем элементам массива и заменяем (Replace) в каждом элементе x(i) 1-й левый символ Left(x(i), 1) на такой же символ, но в верхнем регисте UCase(Left(x(i), 1)).
А потом объединяем измененные элементы массива х в одну строку через пробел Join(x, " ").

Но конечно же лучше взять стандартную функцию StrConv. 1-й аргумент этой ф-ции - строка, которую собираемся преобразовывать (строка у нас находится в Cells(43, 1)). Через запятую - 2-й аргумент, который определяет тип преобразования (у нас это vbProperCase - переводит первую букву каждого слова в строке в верхний регистр). Вместо константы vbProperCase можно записать ее значение: 3.
Вот и получается Cells(43, 1) = StrConv(Cells(43, 1), 3)
Действительно, все в справке написано.

Но мой вариант интереснее, правда?

Последний раз редактировалось nilem; 21.10.2010 в 05:51.
nilem вне форума Ответить с цитированием
Старый 21.10.2010, 11:16   #7
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Обращаю внимание заинтересованной публики, что в паспортах сейчас встречаются и записи вида:
Иванов Иван Иван оглы или Петрова Ольга Махмуд кызы
Так вот, по правилам, оглы и кызы в конце ФИО пишутся со строчной буквы.

Последний раз редактировалось Aent; 21.10.2010 в 11:18.
Aent вне форума Ответить с цитированием
Старый 21.10.2010, 13:06   #8
brans
Форумчанин
 
Регистрация: 15.10.2010
Сообщений: 105
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение

Но мой вариант интереснее, правда?
Благодарю за столь неординарный подход к моему вопросу, я и вправду вижу Ваш вариант кода интересней. Спасибо большое за столь полное изъяснение хoда Ваших мыслей!!!!!

Последний раз редактировалось brans; 21.10.2010 в 13:12. Причина: ошибка по невнимательности
brans вне форума Ответить с цитированием
Старый 21.10.2010, 13:14   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

И в общем для "оглы" и "кызы" как раз интересный вариант и подходит - надо только добавить проверку содержимого элементов массива.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опять паскаль и снова строки A.S.W Помощь студентам 1 07.01.2010 15:18
...... и опять С++ Chaynik011091 Помощь студентам 5 24.06.2009 20:46
И опять мэйлы.. Опять... Pusher PHP 6 28.06.2008 03:08
Опять строки huck_mid Общие вопросы Delphi 9 14.06.2007 21:14