Нет, ну я не на столько "начинающий" :)
По образованию я "СИ-шник",
а за VBA в Экселе иногда приходится усаживаться чтобы для наших бухгалтеров сваять что-нибудь эдакое. Вот потихоньку каждый раз и натыкаюсь на нечто новое, нужное в текущем проекте.
Вот сейчас парюсь с адресацией по элементам динамической формы...
Насилу разобрался, в чём проблема (в самом событии TxtBx_Change),
но пока как её разрешить не понял:
возвращаемся к примеру от The_Prist (post_109260.xls) - использую его, чтобы понять физику работы новых для меня "динамических форм".
В процедуре
Private Sub oTxtBx_Change()
Строка
MsgBox oTxtBx.Name
работает замечательно - выводится имя текущего/изменённого текстбокса
Однако придуманная мною "по мотивам" строка
aoTxtBxes(4).oTxtBx.Value = oTxtBx.Name
уже не пашет как надо :( - я хотел в четвёртый текстбокс выводить имя изменённого текстбокса,
НО фишка (которую я часа два "отлавливал") в том, что четвёртый-то
текстбокс тоже изменяется такой операцией - в итоге снова генерится
событие oTxtBx_Change()
и значение aoTxtBxes(4).oTxtBx.Value переписывается на имя этого текстбокса,
т.е. "TextBox4"
И тут событие oTxtBx_Change() генерится самостоятельно уже в ТРЕТИЙ раз! %-)
И туда вписывается снова "TextBox4"
Но поскольку оно равно предыдущему состоянию,
то четвёртый раз oTxtBx_Change() уже не происходит...
:)
Вот такой детектив...
Т.е. стало понятно что внутри процедуры oTxtBx_Change() изменять
принудительно значения этих самых oTxtBx нииззя...
Как быть?
Мне очень надо чтобы по изменению юзером значения, скажем, в первом боксе,
в другом боксе оно выставлялось на основании этого значения в первом.
Причём эти боксы при инициализации создаются динамически и входят в один массив и один класс.
Чую, решение где-то под носом, но бошка уже не варит...
продолжу завтра это творчество...
{quote}{login=Юрий М}{date=10.09.2010 11:45}{thema=Re: }{post}так можете узнать индекс: ActiveControl.TabIndex{/post}{/quote}
Спасибо, погляжу что это такое.