Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.09.2008, 15:43   #1
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию Как прописатьв макросе повтор...

Доброго времени суток уважаемые...
Сразу вопрос как прописать в макросе повтор несколько раз какой-либо операции. В частности мне нужно End(xlDown)
Мне нужно чтобы макрос несколько раз прошелся вниз с CTRL

А то неохота несколько раз писать:
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select

Можно ли это сократить это до одной строки?

Заранее спасибо...
Bu$ter вне форума
Старый 17.09.2008, 15:52   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
повтор несколько раз какой-либо операции
могут помочь организовать циклы.
А вот что конкретно нужно сделать в Вашем случае, простите, не совсем понятно.
И еще посмотрите вот это Управляющие структуры VBA ... Циклы
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 17.09.2008 в 16:32.
VictorM вне форума
Старый 17.09.2008, 16:26   #3
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Код:
Windows("Sales").Activate
Sheets("Sheet1").Select
Range("C3").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Sales2").Activate
Sheets("Sheet1").Select
Range("A6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("d3").Select
Это часть кода...
Смысл в том, что на листе sheet1 в файле Sales необходимо операцию Selection.End(xlDown).Select выполнить 6 раз. Вопрос - можно ли эти 6 строк заменить одной?

З.Ы. Ссылка битая...
Bu$ter вне форума
Старый 17.09.2008, 16:40   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Повторить любую операцию несколько раз можно, наример так
Код:
For i = 1 To 6'в данном случае 6 повторов
Selection.End(xlDown).Select
Next i
но честное слово не пойму для чего нужно 6 раз повторять Selection.End(xlDown).Select

p.s. да , а ссылка правда не отвечает, хотя адрес верный....мож сайт временно недоступен... жаль, хороший сайт.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 17.09.2008, 16:57   #5
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Спасибо огромное, я бы с удовольствием объяснил, но боюсь это будет слишком долго....

Еще раз спасибо....
Bu$ter вне форума
Старый 17.09.2008, 20:33   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
жаль, хороший сайт.
Без паники! Сайт ЖИВ! ссылка на msoffice.nm.ru/vba уже работает...

а по поводу шесть раз xlDown:
А может Вам нужно просто найти последнюю занятую ячейку в столбце??
Это можно сделать без циклов.
например, так:
Прыгаем вверх до последней заполненной ячейки в нужном столбце:
Код:
Cells(ActiveSheet.UsedRange.Rows.Count,col).End(xlUp).Select
где col - номер нужного столбца...

и ещё - постарайтесь в макросах не использовать .Select .Activate без крайней на то необходимости!
поверьте найти нужную ячейку, скопировать диапазон можно и без того, чтобы делать эти ячейки выделенными...
Serge_Bliznykov вне форума
Старый 18.09.2008, 09:40   #7
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Без паники! Сайт ЖИВ! ссылка на msoffice.nm.ru/vba уже работает...

а по поводу шесть раз xlDown:
А может Вам нужно просто найти последнюю занятую ячейку в столбце??
Это можно сделать без циклов.
например, так:
Прыгаем вверх до последней заполненной ячейки в нужном столбце:
Код:
Cells(ActiveSheet.UsedRange.Rows.Count,col).End(xlUp).Select
где col - номер нужного столбца...

и ещё - постарайтесь в макросах не использовать .Select .Activate без крайней на то необходимости!
поверьте найти нужную ячейку, скопировать диапазон можно и без того, чтобы делать эти ячейки выделенными...
Спасибо за совет, но страктурв файла такова, что по иному как несколько раз xlDown не получается...
Сайт тоже очень информативный...
Bu$ter вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исключить повтор в делфи murzinani Помощь студентам 4 27.05.2008 22:13
Суммирование элементов массива в макросе IgorKr Общие вопросы C/C++ 1 14.04.2008 01:22
Константы в Макросе valerij Microsoft Office Excel 2 03.02.2008 23:33
использование в макросе другой книги Роня Microsoft Office Excel 19 13.09.2007 15:47