Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание макроса / 15 сообщений из 15, страница 1 из 1
15.06.2011, 13:18
    #37309148
Matuhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
Подскажите, пожалуйста, как написать макрос по следующей задаче.
Имеется таблица для расчета точки безубыточности.
Один из столбцов - это прибыльность по каждому месяцу.
Нужно, чтоб макрос (при нажатии на кнопку, к которой он привязан) смотрел этот столбец и выделял ту строку, в которой значение уже не отрицательное.
Это нужно для автоматического выделения строки с неотрицательной прибылью при изменении прочих параметров и, соответственно, при изменении точки безубыточности.
Записал макрос выделения строки :) Однако теперь не могу макросу объяснить, что нужно выделять не конкретную строку, а ту, которая удовлетворяет условию "Прибыль - не отрицательная" :)
Не силен в вижуал бейсике, давно его учил :)
Спасибо.
...
Рейтинг: 0 / 0
15.06.2011, 14:04
    #37309234
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
Код: plaintext
1.
2.
3.
4.
5.
For i= 5  To  200 
  If Cells(i,  10 ).Value >= 0  Then
    'выделяем найденную строку
    Exit For
  End If
Next
...
Рейтинг: 0 / 0
15.06.2011, 14:07
    #37309243
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
А снять выделение с "прошлой" выделенной строки?
...
Рейтинг: 0 / 0
15.06.2011, 14:35
    #37309326
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
AndreTMА снять выделение с "прошлой" выделенной строки?
Что такое выделение? Покраска цветом?
Если можешь покрасить красным, почему не можешь покрасить прозрачным?
...
Рейтинг: 0 / 0
15.06.2011, 14:53
    #37309367
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
Это я к тому, что надо не забыть снять предыдущее выделение...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public prevSel

Sub MakeSel(rng As Range, col As Integer)
' rng - диапазон таблицы
' col - номер колонки В ТАБЛИЦЕ
    r =  0 
    For Each c In rng.Columns(col).Cells
        If c.Value >=  0  Then r = c.Row - rng.Row +  1 : Exit For
    Next
    If Not IsEmpty(prevSel) Then rng.Rows(prevSel).Interior.Color = vbWhite
    If r >  0  And r <= rng.Rows.Count Then rng.Rows(r).Interior.Color = vbGreen: prevSel = r
End Sub

Private Sub CommandButton1_Click()
    MakeSel Range("C4:F15"),  4 
End Sub
...
Рейтинг: 0 / 0
15.06.2011, 14:54
    #37309370
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
AndreTMЭто я к тому, что надо не забыть снять предыдущее выделение...

Тьфу, блин, это ты, я думал, я автору отвечаю
...
Рейтинг: 0 / 0
16.06.2011, 06:22
    #37310218
Matuhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
Shocker.Pro,

Слушай, спасибо, конечно :)
Но подставив часть твоего кода и добавив тот, что получился при записи макроса - нифига не получилось :)
Может тогда проще его написать с нуля? А не на полуавтомате?
...
Рейтинг: 0 / 0
16.06.2011, 09:00
    #37310297
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
Matuhan,

Я дал не то что бы код, но наводку.
Может воспользоваться кодом Андре?
...
Рейтинг: 0 / 0
16.06.2011, 12:23
    #37310736
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
Matuhan,

условное форматирование пробовали ?
...
Рейтинг: 0 / 0
16.06.2011, 12:49
    #37310816
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
big-dukeусловное форматирование пробовали ?
Ну, там возникает небольшой гемор с крайними значениями в таблице... решаемый, естественно. Да и возможно наличие нескольких точек перехода, тогда что?
Ну и надо выбирать между обоими вариантами реализации: если разово и условия достаточно просты - то можно и форматированием, а если придется проверять сложное условие или вид таблицы как-то меняется - то ИМХО проще будет кодом.
...
Рейтинг: 0 / 0
16.06.2011, 14:55
    #37311183
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
AndreTM,

Да, можно несолько точек перехода.
Сложные условие пишутся через формулы.
В Excel 2007 условное форматирование стало значительно лучше.
...
Рейтинг: 0 / 0
22.06.2011, 06:15
    #37319115
Matuhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
Вау, ребята :)
Я и не знал про такую возможность, как условное форматирование :) Хотя пользуюсь Excel'ем с 2000 года :)
Во истину, век живи - век учись :)
Буду пробовать. Вероятно, это то, что мне надо.
Спасибо всем за подсказки. И за написанный-таки макрос тоже спасибо.
Если еще будут вопросы - обязательно к Вам обращусь.
...
Рейтинг: 0 / 0
24.06.2011, 17:26
    #37324113
Matuhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
AndreTM,

А нельзя поподробнее по поводу условного форматирования?
Не понял, как формулу правильно написать. Пишу по аналогии - не получается. Написал интуитивно, получается, но выделяются все строчки, в которых значение прибыли неотрицательное, а надо, чтоб выделялась только первая.
...
Рейтинг: 0 / 0
24.06.2011, 17:38
    #37324135
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
...
Рейтинг: 0 / 0
24.06.2011, 23:19
    #37324428
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание макроса
MatuhanПишу по аналогии - не получается. Написал интуитивно, получается, но выделяются все строчки, в которых значение прибыли неотрицательное, а надо, чтоб выделялась только первая.А пример из моего предыдущего поста смотрели? Там, вроде, всё прозрачно:
Ячейка N8: формула =И($N7<0;$N8>=0)
Ячейка M8: формула =И($N7<0;$N8>=0) и т.д.
то есть просто задать формат для одной ячейки, а затем "скопировать только форматы" на всю таблицу...
Помните, что при использовании "такого" условного форматирования вам надо, чтобы ячейка "выше" первой проверяемой содержала отрицательное значение, а "ниже" последней - неотрицательное.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание макроса / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]