|
|
|
| Всем добрый доброго времени суток. Проблема такая. Есть форма, в ней несколько полей и флажков. Необходимо найти флажок, зная его имя, и узнать его значение. Делаю так:
Dim flag_c As Control, flag_p As Control, flag As string
Set frm = Screen.ActiveForm
For Each flag_c In frm.Controls
If flag_c.ControlName = flag Then
flag_p.ControlName= flag_c.ControlName
End If
Next flag_c
Где flag это имя имя этого флажка. Нужно присвоить переменной flag_p этот контрол, что бы дальше работать с ним. Что то ничего не выходит. Может знает кто? | |
|
| |
|
|
|
| Для 2003 так надо:
Set ОбъектнаяПеременная=frm.Controls(ИмяКонтрола)
Для 97 не знаю. | |
|
| |
|
|
|
| Блин, не работает. Ругаться перестала, но обращения к этому контролу нет | |
|
| |
|
|
|
| Объектная переменная какого класса описана?
Попробуйте следующей строчкой за Set ....
добавить:
Debug.Print ОбъектнаяПеременная.Name
и смотрите в окне отладчика. | |
|
| |
|
|
|
| Debug.Print ОбъектнаяПеременная.Name: В окне отладки выодит имя флажка, причем то которое нужно. | |
|
| |
|
|
|
| Ну раз выводит нужное имя, значит ссылка корректная.
Ищите проблему в другом месте. | |
|
| |
|
|
|
| Спасибо, буду рыть. Блин, жара уже задолбала. | |
|
| |
|
|
|
| а что такое ControlName ?
нет у контрола такого свойства | |
|
| |
|
|
|
| ControlName это имя контрола. Можно просто Name. Но так и так не работает. | |
|
| |
|
|
|
| Dim flag_c As Control, flag_p As Control, flag As string
Set frm = Screen.ActiveForm - заорало про описание переменной
For Each flag_c In frm.Controls
If flag_c.ControlName = flag Then
flag_p.ControlName= flag_c.ControlName - заорало Объектная переменная или переменная блока With не задана
End If
Next flag_c
flag_p.ControlName - это про что??? flag_p=Nothing
Нужно присвоить переменной flag_p этот контрол
|
Dim flag_p As Variant
flag_p= flag_c.Value
или
flag_p= flag_c
а мы присваиваем непонятному контролу имя другого контрола, а если так
flag_p= flag_c.ControlName - то ваще смысла нет т.к. это получаем ИМЯ контрола, которое и так известно. | |
|
| |
|
|
|
| вообще все это фигня если только не задание из методички (хотя тоже бред)
Set frm = Screen.ActiveForm
l = Me(flag) - это работает только в форме естественно.
z = Forms!имя_формы.Form(flag)
c = frm(flag)
все это одно и тоже и не нужно никакого цикла, ненужно сравнений | |
|
| |