Страница: 1 |
Страница: 1 |
Вопрос: Помогите с кодом
Добавлено: 09.10.09 16:33
Автор вопроса: Блондинко
Привет! Помогите, пожалуйста, разобраться. Спец образования у меня нет, только книги! Есть код, но в этом виде он перебирает переменные "показатель" и ставит конечное значение при переменной "6" в заданную ячейку на активный лист, затем переходит на следующий лист. Я же хочу чтобы значение при переменной "1" отразилось на первом активном листе и перешел на следующий лист на котором отразилось бы значение при переменно "2" и так дальше. Мне нужно как-то прерывать выполнение цикла после каждой переменной и запускать цикл с переходом на следующую страницу. Помогите, пожалуйста.
Dim Показатель As Variant
Dim ws As Worksheet
Показатель = Array("1", "2", "3", "4", "5", "6")
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
Range("F10").Select
For i = 0 To UBound(Показатель)
ActiveCell.FormulaR1C1 = "=SUMIF(X," & Chr(34) & Показатель(i) & Chr(34) & ",Y)"
Next i
Next ws
P.S. Значение X и Y в формуле заменяют диапазон (формула "суммесли" в Excel)
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #1
Добавлено: 09.10.09 20:36
Код не особо хорош. Кстати.
Телепатия подсказывает что надо:
Телепатия меня не подводит???
Номер ответа: 2
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #2
Добавлено: 09.10.09 20:37
Кстати что я написал - тоже отстой. Просто время уже нет написать почеловечески.
Номер ответа: 3
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #3
Добавлено: 09.10.09 20:44
Не, наверное так:
Номер ответа: 4
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #4
Добавлено: 09.10.09 20:45
Предупрежд.: нет проверки ошибок, а поэтому число листов не должно быть больше 6-ти.
Номер ответа: 5
Автор ответа:
Блондинко
Вопросов: 2
Ответов: 12
Профиль | | #5
Добавлено: 12.10.09 09:36
Огромное спасибо. Я только учусь, помогать совершенно некому, поэтому коряво. Но буду стараться )
Номер ответа: 6
Автор ответа:
Блондинко
Вопросов: 2
Ответов: 12
Профиль | | #6
Добавлено: 12.10.09 09:38
Предупрежд.: нет проверки ошибок, а поэтому число листов не должно быть больше 6-ти.
А почему? В книгах я пока не встречала про проверку ошибок. Даже не представляю что она будет проверять.
Номер ответа: 7
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #7
Добавлено: 12.10.09 10:02
При количестве листов больше 6 у тебя будет возникать ошибка - Subscript out of Range, чтобы этого не происходило:
А еще здесь обсуждали:
http://www.vbnet.ru/forum/show.aspx?id=195929
Номер ответа: 8
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #8
Добавлено: 12.10.09 17:25
Лучше будет если не использовать On Error, тем более это здесь более кстати. Надо проверить кол-во листов и кол-во элементов в массиве и в случ. чего выдать пользователю сообщение типа: "кол-во листов слишком большое ...".
Номер ответа: 9
Автор ответа:
Блондинко
Вопросов: 2
Ответов: 12
Профиль | | #9
Добавлено: 12.10.09 18:23
При количестве листов больше 6 у тебя будет возникать ошибка - Subscript out of Range, чтобы этого не происходило:
Ага, кажется поняла. Необходимо чтобы количество листов и переменных было одинаково, так?
У меня сначала было листо на один больше чем переменных, но я в переменные добавила "пустышку" и ошибка больше не возникает.
Показатель = Array("","1", "2", "3", "4", "5", "6"
Только теперь вот думаю, можно ли сдвинуть цикл листов на один, чтобы не писать "пустышку", т.е. чтобы цикл попустил первый лист и навчал со второго. Может так как-нибудь?
Dim ws As Worksheet
ws=Array("2","3","4","5","6" и так далее)
Буду пробовать.
Про ошибку обязательно почитаю.
Спасибо Всем огромное, что помогаете. ))
Номер ответа: 10
Автор ответа:
Блондинко
Вопросов: 2
Ответов: 12
Профиль | | #10
Добавлено: 12.10.09 18:32
Получилось вот так:
А дальше без измененений.
Номер ответа: 11
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #11
Добавлено: 13.10.09 11:41
Т.е. надо заранее знать сколько будет листов у пользователя.
А ведь можно программно узнать сколько листов в документе, создать массив на основе этого числа, .....
Не надо будет заранее знать сколько листов в документе у пользователя.