Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 777
от 27.07.2008, 17:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 268, Экспертов: 24
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 140495: Имеется форма с компонентами. Как переименовать между собой два любых компонента c заданными именами? Поменять свойства Name? Имена компонентов задаются пользователем. Например, пользователь задает — компонент с именем ‏L1 поменять име...

Вопрос № 140.495
Имеется форма с компонентами. Как переименовать между собой два любых компонента c заданными именами?
Поменять свойства Name?
Имена компонентов задаются пользователем.
Например, пользователь задает — компонент с именем ‏L1 поменять именем с компонентом Т2. Тип компонентов неизвестен.
В принципе ход решения задачи понятен:

  • Ищем компонент с нужным именем
    Его имя присваиваем временной переменной
    Имя второго компонента присваиваем первому
    Переименовуем второй компонент по временной переменной

Вопрос в том, как получить доступ к свойствам компонентов формы по именам. Пробовал через Me.Controls, но не получается.
Отправлен: 22.07.2008, 17:07
Вопрос задал: Витер Александр Анатольевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: xackera
Здравствуйте, Витер Александр Анатольевич!
Свойства Name у компонентов и переменных VBA во время выполнения программы не меняется! можно обойти это ограничение - создаёте массив компонент (желательно, чтобы компонента имела поле Caption или аналог, который мог бы указывать на данный компонент)... и при перемене местами имён (как бы) меняете местами свойство Caption. Поиск компоненты производиться по данному свойству....
Например это можно сделать так:
Создаёте свой тип данных
Type MyType
Obj As Object 'в этом месте будем хранить ссылку на объект
Name As String
End Type

обявляем массив данного типа
Dim A (10) as MyType

и где нибудь в коде присваиваем значения
a(1).Name = "Объект 1" Set a(1).Obj = ActiveWorkbook.Sheets(0) 'первый лист книги Excel
и так далее

обмен делаете через временную переменную

навигацию производите по полю Name типа MyType


---------
Больше быть, чем казаться! Много делать, но мало выделяться
Ответ отправил: xackera (статус: 6-ой класс)
Ответ отправлен: 22.07.2008, 17:36
Оценка за ответ: 4
Комментарий оценки:
Правильно, но нужно для другого языка


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.0 alpha от 21.07.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное