Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Назначить правильно данные для переменных. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Word » Назначить правильно данные для переменных.
Назначить правильно данные для переменных.
irina18 Дата: Среда, 22.11.2017, 14:51 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 1 ±
Замечаний: 0% ±

Excel 2013
Привет форумчане. В файле макросом склоняются по падежам ФИО двух сотрудников. Проблема в назначении данных для переменных. У меня данные определены для первого сотрудника, а как сделать для обоих, у меня не получается. Прошу помощи в этом вопросе, думаю, что для спецов это несложно. Надо переделать вот этот кусок кода. [vba]
Код
Dim F$, im$, O$
F = Split(ActiveDocument.Fields(1).Result.Text, " ")(0)
im = Split(ActiveDocument.Fields(1).Result.Text, " ")(1)
O = Split(ActiveDocument.Fields(1).Result.Text, " ")(2)

[/vba]
И если несложно хотелось, чтобы после очищения полей, где ввожу данные в именительном падеже, очищались и вычисляемые поля. Файл приложен. Всем спасибо.
К сообщению приложен файл: _2_.docm(37Kb)
 
Ответить
СообщениеПривет форумчане. В файле макросом склоняются по падежам ФИО двух сотрудников. Проблема в назначении данных для переменных. У меня данные определены для первого сотрудника, а как сделать для обоих, у меня не получается. Прошу помощи в этом вопросе, думаю, что для спецов это несложно. Надо переделать вот этот кусок кода. [vba]
Код
Dim F$, im$, O$
F = Split(ActiveDocument.Fields(1).Result.Text, " ")(0)
im = Split(ActiveDocument.Fields(1).Result.Text, " ")(1)
O = Split(ActiveDocument.Fields(1).Result.Text, " ")(2)

[/vba]
И если несложно хотелось, чтобы после очищения полей, где ввожу данные в именительном падеже, очищались и вычисляемые поля. Файл приложен. Всем спасибо.

Автор - irina18
Дата добавления - 22.11.2017 в 14:51
Pelena Дата: Среда, 22.11.2017, 18:57 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11842
Репутация: 2609 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Здравствуйте.
Не очень вникала, но, может, так подойдёт
[vba]
Код
    Dim F$, im$, O$
    F = Split(FullText, " ")(0)
    im = Split(FullText, " ")(1)
    O = Split(FullText, " ")(2)
[/vba]
Или Вы хотите, чтобы не два отдельных макроса запускать, а в цикле все перебирались?
К сообщению приложен файл: 1678531.docm(43Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Не очень вникала, но, может, так подойдёт
[vba]
Код
    Dim F$, im$, O$
    F = Split(FullText, " ")(0)
    im = Split(FullText, " ")(1)
    O = Split(FullText, " ")(2)
[/vba]
Или Вы хотите, чтобы не два отдельных макроса запускать, а в цикле все перебирались?

Автор - Pelena
Дата добавления - 22.11.2017 в 18:57
irina18 Дата: Среда, 22.11.2017, 20:34 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 1 ±
Замечаний: 0% ±

Excel 2013
Pelena, спасибо огромное. Всё работает. А что есть лучший вариант решения? Если несложно, подскажите вариант. А так вроде всё ОК. Ещё раз спасибо.
 
Ответить
СообщениеPelena, спасибо огромное. Всё работает. А что есть лучший вариант решения? Если несложно, подскажите вариант. А так вроде всё ОК. Ещё раз спасибо.

Автор - irina18
Дата добавления - 22.11.2017 в 20:34
bsi Дата: Вторник, 28.11.2017, 11:46 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем удачного дня. Хотелось бы продолжить обсуждение этой темы. Всё в документе работает правильно. Но проблема следующая. Надо оптимизировать сам код, где происходит процесс склонения по падежам. Склонение по падежам сделать, как в именительном падеже (по именам тегов контролов, т.к. полей с дублированием данных в документе может быть много). У самого навыков в VBA практически нет, поэтому жду ваших предложений. Всем спасибо. Файл во вложении. Код который надо оптимизировать:
[vba]
Код
     'падежи (родителый, дательный и творительный)
     'Фамилия 1
    Dim F$, im$, O$
    F = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(0)
    im = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(1)
    O = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(2)
    'родительный падеж
    fio = GenitiveCase(F, im, O)
    ThisDocument.Range.ContentControls(5).Range.Text = fio
    ThisDocument.Range.ContentControls(6).Range.Text = fio
    ThisDocument.Range.ContentControls(7).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(8).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    'дательный падеж
    fio = DativeCase(F, im, O)
    ThisDocument.Range.ContentControls(9).Range.Text = fio
    ThisDocument.Range.ContentControls(10).Range.Text = fio
    ThisDocument.Range.ContentControls(11).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(12).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    'творительный падеж
    fio = TvoritiveCase(F, im, O)
    ThisDocument.Range.ContentControls(13).Range.Text = fio
    ThisDocument.Range.ContentControls(14).Range.Text = fio
    ThisDocument.Range.ContentControls(15).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(16).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    
    'фамилия 2
    F = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(0)
    im = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(1)
    O = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(2)
    'родительный падеж
    fio = GenitiveCase(F, im, O)
    ThisDocument.Range.ContentControls(21).Range.Text = fio
    ThisDocument.Range.ContentControls(22).Range.Text = fio
    ThisDocument.Range.ContentControls(23).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(24).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    'дательный падеж
    fio = DativeCase(F, im, O)
    ThisDocument.Range.ContentControls(25).Range.Text = fio
    ThisDocument.Range.ContentControls(26).Range.Text = fio
    ThisDocument.Range.ContentControls(27).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(28).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    'творительный падеж
    fio = TvoritiveCase(F, im, O)
    ThisDocument.Range.ContentControls(29).Range.Text = fio
    ThisDocument.Range.ContentControls(30).Range.Text = fio
    ThisDocument.Range.ContentControls(31).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(32).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
[/vba]
К сообщению приложен файл: _2_.rar(43Kb)


Сообщение отредактировал bsi - Вторник, 28.11.2017, 12:15
 
Ответить
СообщениеВсем удачного дня. Хотелось бы продолжить обсуждение этой темы. Всё в документе работает правильно. Но проблема следующая. Надо оптимизировать сам код, где происходит процесс склонения по падежам. Склонение по падежам сделать, как в именительном падеже (по именам тегов контролов, т.к. полей с дублированием данных в документе может быть много). У самого навыков в VBA практически нет, поэтому жду ваших предложений. Всем спасибо. Файл во вложении. Код который надо оптимизировать:
[vba]
Код
     'падежи (родителый, дательный и творительный)
     'Фамилия 1
    Dim F$, im$, O$
    F = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(0)
    im = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(1)
    O = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(2)
    'родительный падеж
    fio = GenitiveCase(F, im, O)
    ThisDocument.Range.ContentControls(5).Range.Text = fio
    ThisDocument.Range.ContentControls(6).Range.Text = fio
    ThisDocument.Range.ContentControls(7).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(8).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    'дательный падеж
    fio = DativeCase(F, im, O)
    ThisDocument.Range.ContentControls(9).Range.Text = fio
    ThisDocument.Range.ContentControls(10).Range.Text = fio
    ThisDocument.Range.ContentControls(11).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(12).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    'творительный падеж
    fio = TvoritiveCase(F, im, O)
    ThisDocument.Range.ContentControls(13).Range.Text = fio
    ThisDocument.Range.ContentControls(14).Range.Text = fio
    ThisDocument.Range.ContentControls(15).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(16).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    
    'фамилия 2
    F = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(0)
    im = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(1)
    O = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(2)
    'родительный падеж
    fio = GenitiveCase(F, im, O)
    ThisDocument.Range.ContentControls(21).Range.Text = fio
    ThisDocument.Range.ContentControls(22).Range.Text = fio
    ThisDocument.Range.ContentControls(23).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(24).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    'дательный падеж
    fio = DativeCase(F, im, O)
    ThisDocument.Range.ContentControls(25).Range.Text = fio
    ThisDocument.Range.ContentControls(26).Range.Text = fio
    ThisDocument.Range.ContentControls(27).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(28).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    'творительный падеж
    fio = TvoritiveCase(F, im, O)
    ThisDocument.Range.ContentControls(29).Range.Text = fio
    ThisDocument.Range.ContentControls(30).Range.Text = fio
    ThisDocument.Range.ContentControls(31).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
    ThisDocument.Range.ContentControls(32).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
[/vba]

Автор - bsi
Дата добавления - 28.11.2017 в 11:46
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Word » Назначить правильно данные для переменных.
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!