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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2009, 09:12   #1
transgd
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 37
По умолчанию Ошибка при работе с объектами

Почему при выполнении кода:

Dim iObject As Object
For Each iObject In Me.Objects

Next


на For Each iObject In Me.Objects выдает ошибку:

Method or data member not found (не найден метод или член данных)?
transgd вне форума Ответить с цитированием
Старый 24.06.2009, 10:18   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

О чем идет речь? Рабочий лист? Форма? Что в данном случае "Me"? Какие объекты Вам нужны? Что это за коллекция Objects?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.06.2009, 10:26   #3
transgd
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 37
По умолчанию SAS888

Да, это форма. Хочется перебрать объекты TextBox этой формы, присвоить ячейкам в конкретных листах значения .Text этих объектов.
transgd вне форума Ответить с цитированием
Старый 24.06.2009, 10:46   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Например, так:
Код:
For Each Ctrl In Me.Controls
    If Ctrl.Name Like "TextBox*" Then
        'Ваш код
    End If
Next
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.06.2009, 11:04   #5
transgd
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 37
По умолчанию SAS888

Да, Me.Controls - работает. Спасибо.
Извините за не правильную (неполную) формулировку вопроса в теме.
Попробую реализовать "тело" данной процедуры.
Прошу заглянуть сюда еще, возможно появится еще вопрос по перебору всех указанных выше объектов. Их имена с TextBox6 по TextBox36 (т.е. 31 объект). Цифры в именах этих объектов совпадают с номерами колонок ячеек, в которые необходимо записать значения этих объектов.
Хочется реализовать это в цикле.
transgd вне форума Ответить с цитированием
Старый 24.06.2009, 11:20   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно, например, так:
Код:
Dim i As Integer, Ctrl As Control
For Each Ctrl In Me.Controls
    If Ctrl.Name Like "TextBox*" Then
        i = Val(Replace(Ctrl.Name, "TextBox", ""))
        If i > 5 And i < 37 Then Cells(1, i) = Ctrl.Text
    End If
Next
Данный код поместит значения TextBox-ов с 6 по 36 в ячейку активного листа в строку 1 столбец, номер которого совпадает с номером соответствубщего TextBox-а.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 24.06.2009 в 11:22.
SAS888 вне форума Ответить с цитированием
Старый 24.06.2009, 12:29   #7
transgd
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 37
По умолчанию SAS888

Да, примерно так я и сделал, только вместо Replace использовал Right и Len.
Еще раз - СПАСИБО.
И еще один вопрос: можно ли обращаться к объекту, имя которого сохранено в переменной? Т.е. обращаться к нему через переменную.
transgd вне форума Ответить с цитированием
Старый 24.06.2009, 13:40   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
вместо Replace использовал Right и Len
Можно и так, но т.к. TextBox-ы есть и с однозначным, так и с двузначным числовым обозначением, то по-моему, с Replace проще.
Цитата:
можно ли обращаться к объекту, имя которого сохранено в переменной? Т.е. обращаться к нему через переменную.
Конечно, можно.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.06.2009, 14:06   #9
transgd
Пользователь
 
Регистрация: 16.04.2009
Сообщений: 37
По умолчанию SAS888

А каким образом обращаться к объекту через переменную, в которой хранится его имя или свойство.
Допустим: sЗначение = "TextBox" & i & ".Text"
Как сохранить в ячейке (допустим Cells(iRow,i) значение из TextBox1.Text, через переменную - sЗначение?
transgd вне форума Ответить с цитированием
Старый 24.06.2009, 14:17   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Например, так:
Код:
sЗначение = Controls("TextBox" & i).Value
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при работе с БД Access Evgen1976 БД в Delphi 8 16.06.2009 21:29
Ошибка при работе с компонентой Нюська Компоненты Delphi 12 27.05.2009 00:35
Ошибка при работе с структурой Nullator Общие вопросы C/C++ 11 07.03.2008 23:52
Ошибка при работе с файлом LeoN Общие вопросы Delphi 1 07.12.2007 15:21
Ошибка при работе с БД malevich БД в Delphi 8 25.11.2007 15:10