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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2011, 13:24   #1
vadimn
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 10
По умолчанию Как сделать коллекции из Текстбоксов?

Захотелось мне сделать так, чтобы в Ворде были такие коллекции Текстбоксов, что любое изменение значения одного из элементов автоматически влекло бы соответствующее изменение других элементов, сколько бы их не было в документе. Например, присвоив значение TextBox2 "12 августа 2011 г.", автоматически изменились бы значения TexBox1, TextBox3, TextBox4 и т.д. на это же значение. В этом же документе могут соседствовать TextBox-ы с другими именами, которые соответственно вели бы себя также, но реагируя на изменения только своего шаблона (Имя1, Имя2, Имя3...).
Управлять Текстбоксами можно на форме

Цитата:
Private Sub TextBox1_LostFocus()
Dim sObjName as string, li as long,lNon as long
sObjName = "TextBox"
lNon = 1
strDate = TextBox1.Value
For li = 1 to 4
if li <> lNon then
Userform1.Controls(sObjName & li) = strDate
end if
Next li
End Sub
но не в документе. Это было бы возможно, если вместо строчки:
Цитата:
Userform1.Controls(sObjName & li) = strDate
была бы такая строка:
Цитата:
ThisDocument.Controls(sObjName & li) = strDate
поскольку Текстбоксы мне нужны не на форме (Userform1), а в документе (ThisDocument). Но, к сожалению, VBA меня не понимает
Вот посмотрите вложение...
Вложения
Тип файла: doc Текстбоксы.doc (77.0 Кб, 15 просмотров)
vadimn вне форума Ответить с цитированием
Старый 14.09.2011, 21:12   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

В Ворде до контролов в документе приходится добираться окольным путем
Попробуйте
Код:
activedocument.inlineShapes(1).OLEFormat.Object="eee"
Соответственно, чтобы найти контрол по имени, надо перебирать коллекцию inlineShapes, пока ...Object.Name не будет равен нужному.

Если контрол является не "картинкой в тексте", как здесь, а "плавающей картинкой", то надо использовать коллекцию activedocument.Shapes.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 14.09.2011, 23:36   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Можно создать массив коллекций контролов, коллекция соответствует группе.
Потом с ним работать быстро и удобно.
Массив коллекций создается при первом вызове и сохраняется в памяти между вызовами (переменные Static)
В файле созданы две группы. Изучайте:
Вложения
Тип файла: doc Текстбоксы1.doc (93.5 Кб, 34 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 14.09.2011 в 23:38.
Казанский вне форума Ответить с цитированием
Старый 15.09.2011, 03:15   #4
vadimn
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 10
По умолчанию

WOW!
Спасибо, Казанский!
Я - дилетант, но буду пытаться понять как это работает.
vadimn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Коллекции van-ok Помощь студентам 0 25.12.2009 01:47
c# массив текстбоксов Dizell Общие вопросы C/C++ 0 01.10.2009 01:56
Как определить “Index” для коллекции “Words”? Mack Sim Microsoft Office Word 2 22.04.2009 18:10
Последовательность ТекстБоксов в форме КаМММ Microsoft Office Excel 7 05.12.2008 22:24
Коллекции Mike777 Общие вопросы Delphi 0 19.02.2007 11:38