|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.10.2010, 19:14 | #1 |
Форумчанин
Регистрация: 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 как теперь дальше не подскажете? |
20.10.2010, 20:08 | #2 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
Один из вариантов:
Код:
|
20.10.2010, 20:41 | #3 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
Ужасы нашего городка ...
Ну неужели тяжело зайти в HELP по StrConv и увидеть вариант Код:
|
20.10.2010, 22:40 | #4 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
|
21.10.2010, 04:34 | #5 |
Форумчанин
Регистрация: 15.10.2010
Сообщений: 105
|
nilem, если Вам не сложно, то поясните, пожалуйста на словах суть рассуждения этой задачи. очень зочу понять ход мыслей...
|
21.10.2010, 05:49 | #6 |
Форумчанин
Регистрация: 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. |
21.10.2010, 11:16 | #7 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
Обращаю внимание заинтересованной публики, что в паспортах сейчас встречаются и записи вида:
Иванов Иван Иван оглы или Петрова Ольга Махмуд кызы Так вот, по правилам, оглы и кызы в конце ФИО пишутся со строчной буквы. Последний раз редактировалось Aent; 21.10.2010 в 11:18. |
21.10.2010, 13:06 | #8 |
Форумчанин
Регистрация: 15.10.2010
Сообщений: 105
|
Благодарю за столь неординарный подход к моему вопросу, я и вправду вижу Ваш вариант кода интересней. Спасибо большое за столь полное изъяснение хoда Ваших мыслей!!!!!
Последний раз редактировалось brans; 21.10.2010 в 13:12. Причина: ошибка по невнимательности |
21.10.2010, 13:14 | #9 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
И в общем для "оглы" и "кызы" как раз интересный вариант и подходит - надо только добавить проверку содержимого элементов массива.
webmoney: E265281470651 Z422237915069 R418926282008
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Опять паскаль и снова строки | 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 |