powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание макроса
15 сообщений из 15, страница 1 из 1
Создание макроса
    #37309148
Matuhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как написать макрос по следующей задаче.
Имеется таблица для расчета точки безубыточности.
Один из столбцов - это прибыльность по каждому месяцу.
Нужно, чтоб макрос (при нажатии на кнопку, к которой он привязан) смотрел этот столбец и выделял ту строку, в которой значение уже не отрицательное.
Это нужно для автоматического выделения строки с неотрицательной прибылью при изменении прочих параметров и, соответственно, при изменении точки безубыточности.
Записал макрос выделения строки :) Однако теперь не могу макросу объяснить, что нужно выделять не конкретную строку, а ту, которая удовлетворяет условию "Прибыль - не отрицательная" :)
Не силен в вижуал бейсике, давно его учил :)
Спасибо.
...
Рейтинг: 0 / 0
Создание макроса
    #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
Создание макроса
    #37309243
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А снять выделение с "прошлой" выделенной строки?
...
Рейтинг: 0 / 0
Создание макроса
    #37309326
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMА снять выделение с "прошлой" выделенной строки?
Что такое выделение? Покраска цветом?
Если можешь покрасить красным, почему не можешь покрасить прозрачным?
...
Рейтинг: 0 / 0
Создание макроса
    #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
Создание макроса
    #37309370
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMЭто я к тому, что надо не забыть снять предыдущее выделение...

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

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

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

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

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

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


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