Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: lovko от 13.12.2014, 15:14

Название: Макрос, зависящий от значения в ячейке
Отправлено: lovko от 13.12.2014, 15:14
Здравствуйте! Подскажите, пожалуйста, как должен выглядеть макрос "если-то-иначе", который выполнял бы действие в зависимости от того, какое значение в ячейке А32? Если короче: почему не работает ниже приведенный макрос? Спасибо!

Private Sub Выход()
    If Sheets("Меню").Range("A32") = 1 Then
        Call Выход1
    Else
        If Sheets("Меню").Range("A32") = 2 Then
            Call Выход2
        Else
            If Sheets("Меню").Range("A32") = 3 Then
                Call Выход3
            End If
        End If
    End If
End Sub

Для оформления кода есть кнопка "#"[МОДЕРАТОР]
Название: Re: Макрос, зависящий от значения в ячейке
Отправлено: vikttur от 13.12.2014, 15:22
Так нагляднее:
Private Sub Выход()
    Select Case Sheets("Меню").Range("A32")
        Case 1
            Call Выход1
        Case 2
            Call Выход2
        Case 3
            Call Выход3
    End Select
End Sub

Возможно, ошибка в вызываемых процедурах. Что они выполняют? Если похожие операции, то вполне может быть, что достаточно одного макроса.
Название: Re: Макрос, зависящий от значения в ячейке
Отправлено: lovko от 13.12.2014, 15:44
В последующих процедурах ничего необычного: одна закрывает файл без сохранения, другая с сохранением, третья перед закрытием файла открывает другой файл. Проблема в том, что при попытке выполнить макрос Выход вообще ничего не происходит.

Посмотрите, пожалуйста, еще этот макрос. Здесь не выполняется значение ИСТИНА/ЛОЖЬ. Хоть ЛОЖЬ, хоть ИСТИНА в ячейках С32, С33, цифры 1 и 2 все равно прибавляются. Как сделать так, чтобы 1 прибавлялась только тогда, когда в ячейке С32 - ИСТИНА, а 2 прибавлялось только тогда, когда ИСТИНА в ячейке С33? Спасибо!

Private Sub Выход()
If Sheets("Меню").Range("C32") = ИСТИНА Then
Sheets("Формулы_5.1").[a20] = Sheets("Формулы_5.1").[a20] + 1
Else
If Sheets("Меню").Range("C33") = ИСТИНА Then
Sheets("Формулы_5.1").[a20] = Sheets("Формулы_5.1").[a20] + 2
End If
End If
End Sub
Название: Re: Макрос, зависящий от значения в ячейке
Отправлено: ShAM от 13.12.2014, 16:12
А если вместо ИСТИНА поставить True?
Название: Re: Макрос, зависящий от значения в ячейке
Отправлено: vikttur от 13.12.2014, 16:43
lovko, я Вам показал пример применения Select Case. Вы пробовали с ним разобраться? Получилось ли с первым кодом (если это секрет государственного масштаба, можете не отвечать, я пойму :))?
Пробовали применить ко второму показанному коду?

Вы бы показывали не только код, но и пример с ошибкой.
Название: Re: Макрос, зависящий от значения в ячейке
Отправлено: lovko от 13.12.2014, 17:22
Спасибо за  True - сработало!  Что касается цифр и варианта с Case еще не пробовал. Начались "Экстрасенсы" по ТНТ, отлучился, извините. В моем макросе всегда срабатывает самый последний вариант - Выход3, какая бы цифра не стояла в ячейке. Почему-то остальные команды макрос пробегает, не реагируя на них. Я попробую ваш вариант с Case и отпишусь. Спасибо всем!
Название: Re: Макрос, зависящий от значения в ячейке
Отправлено: lovko от 13.12.2014, 18:35
Через Case все работает. Огромное спасибо! Я и сам пытался применить эту команду, но никак не мог разобраться, как это сделать. Теперь буду знать. Еще раз спасибо!
Помогите, пожалуйста, с еще одним вопросом... удалено [МОДЕРАТОР]
Название: Re: Макрос, зависящий от значения в ячейке
Отправлено: vikttur от 13.12.2014, 19:33
lovko, не нужно превращать тему в свалку вопросов.
Вопрос не по теме удален.
Название: Re: Макрос, зависящий от значения в ячейке
Отправлено: lovko от 13.12.2014, 20:20
Не буду.