Страница: 1 | 2 |
Вопрос: VBA объект RANGE
Добавлено: 20.02.06 09:23
Автор вопроса: angrynews | Web-сайт:
Такой вопросик назрел
Пишу
Range(Cells(counter, 2), Cells(counter, 21)).Select
Selection.Copy
ругается, воворит, что МЕТОД select из класса Range завершен неверно.
Пишу так
Range(Cells(counter, 2), Cells(counter, 21)).Select: Selection.Copy
работает
Странно, но ведь это одно и тоже, просто записано на одной строке
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
Черный ворон
Разработчик
ICQ: 342881585
Вопросов: 32
Ответов: 256
Профиль | | #1
Добавлено: 20.02.06 09:43
Selection.Copy
А так работает?
Номер ответа: 2
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #2
Добавлено: 20.02.06 09:55
Код выполняется из VB или из VBA?
Номер ответа: 3
Автор ответа:
angrynews
Вопросов: 33
Ответов: 119
Web-сайт:
Профиль | | #3
Добавлено: 20.02.06 10:10
Я ошибся.
Это в другом проекте работает такая запись без косяков:
Range(Cells(counter, 2), Cells(counter, 21)).Select
Selection.Copy
А в том, уоторый щас делаю, эта же НЕ работает. Пишу один в один...
VBA
Номер ответа: 4
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #4
Добавлено: 20.02.06 12:34
И чему равен counter?
И есть ли активный лист?
Номер ответа: 5
Автор ответа:
angrynews
Вопросов: 33
Ответов: 119
Web-сайт:
Профиль | | #5
Добавлено: 20.02.06 12:52
Вот весь код
Private Sub NoZamerTwoDays()
Dim counter As Long
For counter = 4 To 65536
For cellCounter = 7 To 15
If Worksheets("замеры".Cells(1, 1) = "" Then
Worksheets("замеры".Activate
Range(Cells(counter, 2), Cells(counter, 21)).Select'тут ругается
Selection.Copy
Sheets("нет замера 2 сут".Cells(counter, 2).Select
ActiveSheet.Paste
End If
Next cellCounter
Next counter
End Sub
Номер ответа: 6
Автор ответа:
angrynews
Вопросов: 33
Ответов: 119
Web-сайт:
Профиль | | #6
Добавлено: 20.02.06 13:26
Жопа какая-то...из той программы, в которой все работает перенес - тот-же косяк...может причина как-то в том сидит, что этот код (см выше) выполняется в процедуре, которая вызывается из основной....??
Номер ответа: 7
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #7
Добавлено: 20.02.06 13:46
Нет.
Скажи смысл кода словами. Потому что написано так, что не понятно.
Номер ответа: 8
Автор ответа:
angrynews
Вопросов: 33
Ответов: 119
Web-сайт:
Профиль | | #8
Добавлено: 20.02.06 13:58
В общем в основной процедуре вызывается ЭТА NoZamerTwoDays. Аргументы не передуются никакие. Эта процедура должна при выполнении условия
Номер ответа: 9
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #9
Добавлено: 20.02.06 14:57
Я не понимаю, зачем в цикле каждый раз проверяется If Worksheets("замеры".Cells(1, 1) = "". 65533*9 раз проверяется.
Плюс циклы, счётчики которых нигде не используются. Плюс твоё объяснение - которое окончательно всё запутывает...
Номер ответа: 10
Автор ответа:
angrynews
Вопросов: 33
Ответов: 119
Web-сайт:
Профиль | | #10
Добавлено: 21.02.06 06:30
Ладно, я уже разобрался!
GSerg - счетчик проверяет пустоту ячейки - это необходиое условие выполнения дальнейших операторов.
В общем затык такой - эта SELECT работает тогда. когда код пишется на этом же листе, из которого надо брать диапазон...не понял правда почему так...обидно, я хотел вест листинг на первом листе сделать
Номер ответа: 11
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #11
Добавлено: 21.02.06 09:12
В общем, от тебя внятного объяснения алгоритма не добьёшься... Может всё-таки ответишь, зачем 65533*9 раз проверять одну и ту же ячейку и зачем счётчики циклов, которые нигде не используются?
Когда сам поймёшь сей факт, приспособишь данный код под себя.
set w=worksheets("замеры"
set w2=worksheets("нет замера 2 сут"
...
w.range(w.cells(counter,2),w.cells(counter, 21)).copy w2.cells(counter,2)
Номер ответа: 12
Автор ответа:
angrynews
Вопросов: 33
Ответов: 119
Web-сайт:
Профиль | | #12
Добавлено: 26.02.06 09:33
эээ
Может я путано говорил
Счетчики используются, т.к. просматриваются строки со второй по НЕПУСТУЮ, поэтому до 65536. А пустота проверяется при начале обработки каждой строки! Есть конечно еще одна инструкиця (да нверное их куча), но тоже сиди в цикле 65536. Я просматриваю ведь весь лист, а цикл выполняется пока ячейка НЕПУСТАЯ. Вроде так работает!
Номер ответа: 13
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #13
Добавлено: 26.02.06 12:14
Да?
Объясни, как это относится к просмотру всего листа.
Номер ответа: 14
Автор ответа:
angrynews
Вопросов: 33
Ответов: 119
Web-сайт:
Профиль | | #14
Добавлено: 26.02.06 12:44
этот код неактуален. а его писал, когда по разному пытался с select разобраться!
Уже все работает как и задумано было, просто необходимо было лист активировать. а не просто на него сослаться
Номер ответа: 15
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #15
Добавлено: 26.02.06 13:33
Нет никакой необходимости выделять что-то, чтобы обратиться к нему.
См. № 11.