|
Модераторы: mihanik |
|
Толик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 4.11.2005 Репутация: нет Всего: нет |
На листе excel расположены 15 флажков checkbox. Они выполняют выбор данных из соответствующих строк таблицы. Для каждого написан код
If CheckBox1.Value = True Then nPk = nPk + 1 Vkk(nPk) = WsResult.Cells(1 + 2, 2) Zpk(nPk) = WsResult.Cells(1 + 2, 3) Rdk(nPk) = WsResult.Cells(1 + 2, 4) End If ... If CheckBox15.Value = True Then nPk = nPk + 1 Vkk(nPk) = WsResult.Cells(15 + 2, 2) Zpk(nPk) = WsResult.Cells(15 + 2, 3) Rdk(nPk) = WsResult.Cells(15 + 2, 4) End If Это работает, но как упростить программу и сделать это в цикле? Пробовал вариант For i=1 to 15 If CheckBox(i).Value = True Then nPk = nPk + 1 Vkk(nPk) = WsResult.Cells(i + 2, 2) Zpk(nPk) = WsResult.Cells(i + 2, 3) Rdk(nPk) = WsResult.Cells(i + 2, 4) End If next i ругается во второй строке. Помогите разобраться с этим делом. |
|||
|
||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 453 |
В приведенном коде нет номеров строк. Это раз. И два - тег "Код" для кого придуман??? исправь исходное сообщение. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Толик |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 4.11.2005 Репутация: нет Всего: нет |
На листе excel расположены 15 флажков checkbox. Они выполняют выбор данных из соответствующих строк таблицы. Для каждого написан код
Это работает, но как упростить программу и сделать это в цикле? Пробовал вариант
ругается во второй строке. Помогите разобраться с этим делом. |
||||
|
|||||
Staruha |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 13 Всего: 27 |
вообще - то объекты перебираются For Each...Next. Но фиг знает где у него control. Самое простое это связать объект со строкой(ячейкой),а потом обрабатывать строки.
-------------------- Возмездие настигнет |
|||
|
||||
likhobory |
|
|||
Опытный Профиль Группа: Участник Сообщений: 466 Регистрация: 17.5.2005 Где: Москва Репутация: 10 Всего: 20 |
один из возможных вариантов:
|
|||
|
||||
javastic |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: нет Всего: 27 |
Вот держи:
-------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
|||
|
||||
Vidocq |
|
|||
Опытный Профиль Группа: Участник Сообщений: 431 Регистрация: 15.12.2004 Где: Запорожье, Украин а Репутация: нет Всего: 7 |
javastic
Опа-опа! А как сделать то же самое, только для
? -------------------- Всё течёт © |
|||
|
||||
Vidocq |
|
|||
Опытный Профиль Группа: Участник Сообщений: 431 Регистрация: 15.12.2004 Где: Запорожье, Украин а Репутация: нет Всего: 7 |
javastic
И ещё вопрос вдогонку: как эти элементы выравнивать (любые, хоть ОЛЕ, хоть msoFormControl) по границе ячейки, добавляя их в цикле? -------------------- Всё течёт © |
|||
|
||||
Staruha |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 13 Всего: 27 |
Я так думаю Range(следующая ячейка).Left
-------------------- Возмездие настигнет |
|||
|
||||
Vidocq |
|
|||
Опытный Профиль Группа: Участник Сообщений: 431 Регистрация: 15.12.2004 Где: Запорожье, Украин а Репутация: нет Всего: 7 |
Staruha
А на каком месте какие координаты стоят? %) CheckBoxes.Add(Range("E1").Next.Left, Range("E1").Next.Top, 49.5, 17.25).Select -------------------- Всё течёт © |
|||
|
||||
Vidocq |
|
|||
Опытный Профиль Группа: Участник Сообщений: 431 Регистрация: 15.12.2004 Где: Запорожье, Украин а Репутация: нет Всего: 7 |
javastic
Staruha Дело в том, что до этого чекбоксы почему-то съезжали вниз. То есть, не печатались строго внутри ячеек, а постепенно смещались вниз (или вверх). И ещё. Я заметил, что каждый раз при добавлении этих чекбоксов у них новые имена: Check Box номер. Так вот "номер" всегда с каждой последующей операцией увеличивается... Можно ли как-нибудь это запретить? -------------------- Всё течёт © |
|||
|
||||
likhobory |
|
|||
Опытный Профиль Группа: Участник Сообщений: 466 Регистрация: 17.5.2005 Где: Москва Репутация: 10 Всего: 20 |
у каждого элемента должно быть уникальное имя, поскольку при создании элемента ты его никак не называешь, то это происходит "автоматом" вышеописанным способом |
|||
|
||||
Vidocq |
|
|||
Опытный Профиль Группа: Участник Сообщений: 431 Регистрация: 15.12.2004 Где: Запорожье, Украин а Репутация: нет Всего: 7 |
likhobory
Каким образом я могу контролировать именование чекбоксов? И кстати, почему после перезапуска процедуры (даже после перезапуска приложения) значение имен не обнуляется? Они так и продолжают хранится в памяти? Можно ли как-то принудительно их сбрасывать, чтоб они именовались " с начала" ? -------------------- Всё течёт © |
|||
|
||||
likhobory |
|
|||
Опытный Профиль Группа: Участник Сообщений: 466 Регистрация: 17.5.2005 Где: Москва Репутация: 10 Всего: 20 |
|
|||
|
||||
Vidocq |
|
||||
Опытный Профиль Группа: Участник Сообщений: 431 Регистрация: 15.12.2004 Где: Запорожье, Украин а Репутация: нет Всего: 7 |
likhobory
Вроде бы разобрался.
А как сделать, чтоб имя присваивалось в while-цикле. Я пробовал так:
Ошибка исполнения: Object variable is not set -------------------- Всё течёт © |
||||
|
|||||
Правила форума "Программирование, связанное с MS Office" | |
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |