Цикл по строке с выделенной ячейкой

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ilona
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 07.10.2005 (Пт) 15:16
Откуда: Киев

Цикл по строке с выделенной ячейкой

Сообщение Ilona » 07.10.2005 (Пт) 15:43

Люди помогите плиз!
Мне нужно чтобы при запуске макроса в строке с выделенной первой ячейкой производилось сравнение каждой четвертой ячейки с некоторым значением. Сам цикл я осилю, подскажите плиз как написать условие чтобы он запускался именно в строке с активной 1-й ячейкой.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 07.10.2005 (Пт) 15:51

Наверное, речь идет об экселе? (кстати, на будущее - это лучше писать, а для обсуждения макросов в Microsoft Office есть раздел форума "VBA")

Объект ActiveCell - это ячейка, активная в данный момент, у него есть свойство .Row - ряд ячейки. Соответственно, цикл должен проходить по строке с номером ActiveCell.Row.

Достаточно, или будем заморачиваться на вещи типа: выделено больше одной ячейки, макрос запущен не с того листа или вообще с диаграммы, на компьютере пользователя не установлен Майкрософт Офис и т. д.? :D
Быть... или не быть. Вот. В чём вопрос?

Ilona
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 07.10.2005 (Пт) 15:16
Откуда: Киев

Сообщение Ilona » 07.10.2005 (Пт) 16:11

Давай заморочимся на "выделено больше одной ячейки"

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.10.2005 (Пт) 16:19

Но сначала всё-таки вопрос сформулируем немного почётче...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ilona
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 07.10.2005 (Пт) 15:16
Откуда: Киев

Сообщение Ilona » 07.10.2005 (Пт) 16:35

2GSerg:
Формулируем почетче :?
Эксель. Выделяем первую ячейку одной из строк. Запускаем макрос.
Он должен в этой строке произвести сравнение значения в каждой 4-й ячейке с неким числом при привышении которого ячейка будет выделяться цветом.
Собственно вопрос: КАКИМ должно быть условие выполнения этого цикла чтобы сравнения производились только в строке (строках) с выделенной 1-й ячейкой.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.10.2005 (Пт) 16:36

Ilona, я бы обошелся без макросов, формулами и условным форматированием.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.10.2005 (Пт) 16:37

То есть если выделена вторая ячейка, макрос работать не должен? Важен сам факт нахождения курсора на строке? В чём цель выделения именно первой ячейки?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ilona
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 07.10.2005 (Пт) 15:16
Откуда: Киев

Сообщение Ilona » 07.10.2005 (Пт) 16:53

Макросом проще т.к. очень большая таблица и таких строк будет много. А так напишу 1 маленький циклик и будет счастье :)
2GSerg - Важен факт нахождения курсора, т.к. значение этой ячейки будет потом использоваться.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.10.2005 (Пт) 17:21

Ilona
Будет использоваться значение первой ячейки строки или той ячейки, которая выделена, независимо от того, первая ли она?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 07.10.2005 (Пт) 17:26

Ilona, в такой постановки задачи я тоже голосую за условное форматирование :) Оно предназначенно для решения именно таких задач. Размерность таблицы не важна, поскольку можно одновременно задать форматирование для любого числа ячеек (для нескольких столбцов, например), также его можно растягивать, как обычные формулы. Преимущество - не нужно каждый раз запускать макрос, все ячейки будут подсвечиваться автоматически.
Быть... или не быть. Вот. В чём вопрос?

Ilona
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 07.10.2005 (Пт) 15:16
Откуда: Киев

Сообщение Ilona » 07.10.2005 (Пт) 17:32

GSerg
Значение первой ячейки

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.10.2005 (Пт) 17:34

Если так, то я не понимаю, зачем нужно обязательно выделять первую ячейку...

Но условное форматирование рулит. Оно и только оно :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ilona
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 07.10.2005 (Пт) 15:16
Откуда: Киев

Сообщение Ilona » 07.10.2005 (Пт) 17:43

Условное форматирование не подходит. В таблицу уже забито много формул, и если я начну растягивать условное форматирование то все прийдется забивать заново. К тому же по значениям в строках с выделенной 1-й ячейкой макрос будет строить диаграмму на отдельном листе. Сразу скажу что просто построить диаграмму по этим строкам (без макроса) мне не подходит, т.к. таких строк будет около 50, а диаграмма в конкретный момент нужна будет только одна. А если построить ее вручную то это будет либо 50 линий на одном графике, либо 50 графиков для каждой строки. Вот. :roll:

Ilona
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 07.10.2005 (Пт) 15:16
Откуда: Киев

Сообщение Ilona » 07.10.2005 (Пт) 17:52

Нет, не оно и только не оно.
В дополнение к вышесказанному добавлю что нужные строки идут не подряд, между ними может быть 2, а может и 10 строк. Посему таскать хваленое усл. форм-е там нельзя.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.10.2005 (Пт) 18:06

То есть настоить форматирование один раз сложнее, чем каждый раз запускать макрос, предварительно выделяя нужные ячейки?
Оригинально, но не круто.


ЗЫ: условновное форматирование копируется кисточкой, а не растягиванием. Без затрагивания существующих формул.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ilona
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 8
Зарегистрирован: 07.10.2005 (Пт) 15:16
Откуда: Киев

Сообщение Ilona » 07.10.2005 (Пт) 18:24

Однако график мне эта кисточка не построит.
Вобщем кто знает как должно выглядеть условие напишите плиз, условное форматирование поможет тут только частично.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.10.2005 (Пт) 18:32

Код: Выделить всё
dim r as range

for each r in selection.entirerow.rows
  with r.cells(1,4)
    if .value = 1 then .interior.color=vbred
  end with
next
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 119

    TopList