Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Макрос, зависящий от значения в ячейке

Автор lovko, 13.12.2014, 15:14

« назад - далее »

lovko

Здравствуйте! Подскажите, пожалуйста, как должен выглядеть макрос "если-то-иначе", который выполнял бы действие в зависимости от того, какое значение в ячейке А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

Для оформления кода есть кнопка "#"[МОДЕРАТОР]

vikttur

#1
Так нагляднее:
Private Sub Выход()
    Select Case Sheets("Меню").Range("A32")
        Case 1
            Call Выход1
        Case 2
            Call Выход2
        Case 3
            Call Выход3
    End Select
End Sub

Возможно, ошибка в вызываемых процедурах. Что они выполняют? Если похожие операции, то вполне может быть, что достаточно одного макроса.

lovko

#2
В последующих процедурах ничего необычного: одна закрывает файл без сохранения, другая с сохранением, третья перед закрытием файла открывает другой файл. Проблема в том, что при попытке выполнить макрос Выход вообще ничего не происходит.

Посмотрите, пожалуйста, еще этот макрос. Здесь не выполняется значение ИСТИНА/ЛОЖЬ. Хоть ЛОЖЬ, хоть ИСТИНА в ячейках С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

ShAM

А если вместо ИСТИНА поставить True?

vikttur

#4
lovko, я Вам показал пример применения Select Case. Вы пробовали с ним разобраться? Получилось ли с первым кодом (если это секрет государственного масштаба, можете не отвечать, я пойму :))?
Пробовали применить ко второму показанному коду?

Вы бы показывали не только код, но и пример с ошибкой.

lovko

Спасибо за  True - сработало!  Что касается цифр и варианта с Case еще не пробовал. Начались "Экстрасенсы" по ТНТ, отлучился, извините. В моем макросе всегда срабатывает самый последний вариант - Выход3, какая бы цифра не стояла в ячейке. Почему-то остальные команды макрос пробегает, не реагируя на них. Я попробую ваш вариант с Case и отпишусь. Спасибо всем!

lovko

#6
Через Case все работает. Огромное спасибо! Я и сам пытался применить эту команду, но никак не мог разобраться, как это сделать. Теперь буду знать. Еще раз спасибо!
Помогите, пожалуйста, с еще одним вопросом... удалено [МОДЕРАТОР]

vikttur

lovko, не нужно превращать тему в свалку вопросов.
Вопрос не по теме удален.

lovko