Страницы: 1
RSS
Помогите разобраться с функцией Select Case
 
Здравствуйте всем.
Помогите мне разобраться с функцией Select Case. Макрос и описание в приложеном примере. Буду благодарен за разъяснение. В VBA я новичок, но очень хочеться научиться программировать. А пример нужен для решения рабочих задач, не ради забавы.
Изменено: Виталий - 26.10.2013 21:28:12 (Забыл прикрепить файл)
 
В Вашем примере заработает
Код
Select Case True

А это что:
Код
Cells(LastRow + 1, 1) = Cells(LastRow + 1, 1)

Это имеет смысл только чтоб заменить формулу на значение - но там ведь нет формул!
 
Вообще-то Select Case принимает только один параметр, а не кучу. В Вашем случае лучше If ... Then:
Код
If St1 < St2 And St1 < St3 Then
        LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    ElseIf St2 < St1 And St2 < St3 Then
        LastRow = Cells(Rows.Count, 2).End(xlUp).Row
    ElseIf St3 < St1 And St3 < St2 Then
        LastRow = Cells(Rows.Count, 3).End(xlUp).Row
    Else
        LastRow = Cells(Rows.Count, 2).End(xlUp).Row
    End If


Или менять подход к Select Case:
Код
Select Case True   'хочу сравнить и узнать где меньше всего строк
    Case St1 < St2 And St1 < St3
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Case St2 < St1 And St2 < St3
    LastRow = Cells(Rows.Count, 2).End(xlUp).Row
    Case St3 < St1 And St3 < St2
    LastRow = Cells(Rows.Count, 3).End(xlUp).Row
    Case Else
       LastRow = Cells(Rows.Count, 2).End(xlUp).Row
End Select
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
здравствуйте.
1. select case - это не функция. это оператор
2. синтаксис. использованный Вами - недопустим. после слова case должно находиться любое допустимое числовое или строковое выражение. одно.
3. в данном случае оператор Select Case - явно не оптимальный вариант. проще, быстрее и правильнее воспользоваться одной функцией листа Min

Код
lastrow=application.min(st1, st2, st3)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Всем огромное спасибо, учту все советы.
Страницы: 1
Наверх