Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
25.04.2024, 15:19:23

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 243 Сообщений в 5 458 Тем от 6 763 Пользователей
Последний пользователь: tetrapack
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
  Просмотр сообщений
Страниц: [1]
1  Основные форумы / Вопросы по Office для MAC / Автоматический запуск макроса при изменении ячейки (зависает) : 17.01.2014, 11:00:18
Еще такой вопрос. На работе я использую Windows, дома Mac. Данный сценарий отрабатывает успешно на Windows, однако автоматический запуск сценария при изменении ячейки не работает на Mac. Только ручной запуск скрипта. Не подскажете, как исправить? Может имел кто опыт написания макросов на Office for Mac.

Спасибо заранее.
2  Основные форумы / Вопросы по Excel и VBA / Re:Автоматический запуск макроса при изменении ячейки (зависает) : 16.01.2014, 11:53:12
Спасибо большое. Это решило проблему.
3  Основные форумы / Вопросы по Excel и VBA / Автоматический запуск макроса при изменении ячейки (зависает) : 16.01.2014, 11:19:48
Добрый день, господа!

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

Код: (vb)

Sub test()
    Dim checkRow As Range
    Dim colorRow As Range
    Dim visaCell As Range
    Dim i As Integer
    i = ActiveCell.Row
    Set visaCell = Cells(i, "E")
    Set checkRow = Range("B" & i & ":E" & i & "")
    Set colorRow = Range("A" & i & ":Д" & i & "")
    For Each cell In checkRow
        v = cell.Value
        If IsEmpty(v) Then
            colorRow.Interior.Color = RGB(230, 184, 183) 'highlight in red
            visaCell.Value = "NO"
            Exit For
        ElseIf visaCell.Value = "NO" Then
            colorRow.Interior.Color = RGB(253, 248, 179) 'highlight in yellow
        Else
            colorRow.Interior.Color = RGB(195, 239, 177) 'highlight in green
        End If
    Next
End Sub


Алгоритм работы следующий. При изменении ячейки в диапазоне А2:Е4 макрос проверяет условия заполнения четырех ячеек. Если одна из ячеек диапазона B:D пуста, строка A:D закрашивается красным, а поле E заполняется значением "NO", если все ячейки диапазона B:D заполнены, но поле E содержит значение "NO", строка закрашивается желтым, если все поля диапазона B:D заполнены и поле E содержит значение "YES", строка закрашивается зеленым.

Проблема заключается в том, что скрипт отрабатывает нормально при запуске вручную. При подключении к вызову Worksheet_Change Excel падает при вызове первого условия из цикла
Код: (vb)

If IsEmpty(v) Then
            colorRow.Interior.Color = RGB(230, 184, 183) 'highlight in red
            visaCell.Value = "NO"
            Exit For


Вот код Worksheet_Change:
Код: (vb)

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Set rng = Range("A2:E4")
    If Not Application.Intersect(rng, Range(Target.Address)) _
    Is Nothing Then
        test
    End If
End Sub


Подскажите, что не так.
Заранее спасибо. Файл xlsm приложил. Прим. Д кириллицей потому, как на форуме D латиницей замещается смайлом.
Страниц: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru