Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2011, 01:08   #1
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию Управляющая инструкция If....

Здравствуйте, Все!
Люди добрые,- помогите разобраться с Управляющей инструкцией If Then Else End If
Выдает ошибку Else without if, а почему?
Благодаорю за внимание.

Sub NewUshastok()

Dim i As Long, j As Long, n As Long
Application.ScreenUpdating = False
i = Cells(Rows.Count, 1).End(xlUp).Row
j = i + Cells(i, 1).MergeArea.Rows.Count
If Cells(i - 2, 3) = "Итого:" Then 'Начало проверки
Rows(i & ":" & j).Copy
Rows(j + 1).Insert
n = Cells(i, 1)
i = Cells(Rows.Count, 1).End(xlUp).Row
j = i + Cells(i, 1).MergeArea.Rows.Count
ElseIf Cells(i, 1).MergeArea.Rows.Count > 2 Then 'Начало новой проверки
Rows(i + 1 & ":" & j - 2).Delete
Cells(i, 1) = n + 1
Cells(i, 2).Select
Selection.UnMerge
Range(Cells(i, 2), Cells(i, 22)).ClearContents
Range(Cells(i, 2), Cells(i + 1, 2)).Select
Selection.Merge
Cells(i, 1).Select
With ActiveCell
i = .Row + .MergeArea.Rows.Count
Cells(i + 1, 2).Select
Cells(i - 1, 4).FormulaR1C1 = "=IF(ISBLANK(R[-1]C),"""",SUM(R[-" & i - .Row - 1 & "]C:R[-1]C))"
Cells(i - 1, 5).FormulaR1C1 = _
"=IF(OR(ISBLANK(R[-1]C[-1]),ISBLANK(R[-1]C)),"""",SUMPRODUCT(R[-" & i - .Row - 1 & "]C[-1]:R[-1]C[-1], R[-" & i - .Row - 1 & "]C:R[-1]C) / RC[-1])"
Else ' Новый блок инструкций
Cells(i - 1, 2).Select
End If
End With
Application.ScreenUpdating = True
End Sub
Trimbl вне форума Ответить с цитированием
Старый 02.05.2011, 01:14   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Он у Вас внутри
With ActiveCell

End With
находится
не вникаю особо, т.к. засыпаю уже)))
выровняйте код
просмотрите соответствие
If
Else
End If
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 02.05.2011 в 01:18.
VictorM вне форума Ответить с цитированием
Старый 02.05.2011, 01:36   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Хоть и спит Виктор,но он прав

Код:
Sub NewUshastok()

    Dim i As Long, j As Long, n As Long
    Application.ScreenUpdating = False
    i = Cells(Rows.Count, 1).End(xlUp).Row
    j = i + Cells(i, 1).MergeArea.Rows.Count
    If LTrim(Cells(i - 2, 3)) = "Итого:" Then 'Íà÷àëî ïðîâåðêè
        Rows(i & ":" & j).Copy
        Rows(j + 1).Insert
        n = Cells(i, 1)
        i = Cells(Rows.Count, 1).End(xlUp).Row
        j = i + Cells(i, 1).MergeArea.Rows.Count
    ElseIf Cells(i, 1).MergeArea.Rows.Count > 2 Then 'Íà÷àëî íîâîé ïðîâåðêè
        Rows(i + 1 & ":" & j - 2).Delete
        Cells(i, 1) = n + 1
        Cells(i, 2).Select
        Selection.UnMerge
        Range(Cells(i, 2), Cells(i, 22)).ClearContents
        Range(Cells(i, 2), Cells(i + 1, 2)).Select
        Selection.Merge
        Cells(i, 1).Select
        With ActiveCell
            i = .Row + .MergeArea.Rows.Count
            Cells(i + 1, 2).Select
            Cells(i - 1, 4).FormulaR1C1 = "=IF(ISBLANK(R[-1]C),"""",SUM(R[-" & i - .Row - 1 & "]C:R[-1]C))"
            Cells(i - 1, 5).FormulaR1C1 = _
   "=IF(OR(ISBLANK(R[-1]C[-1]),ISBLANK(R[-1]C)),"""",SUMPRODUCT(R[-" & i - .Row - 1 & "]C[-1]:R[-1]C[-1], R[-" & i - .Row - 1 & "]C:R[-1]C) / RC[-1])"
        End With
    Else 
        Cells(i - 1, 2).Select
    End If

    Application.ScreenUpdating = True
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 02.05.2011, 01:53   #4
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Он у Вас внутри
With ActiveCell

End With
находится
не вникаю особо, т.к. засыпаю уже)))
выровняйте код
просмотрите соответствие
If
Else
End If
VictorM спасибо, для меня ответ немного мутноватый, но смысл понимаю.
Спокойной ночи. Хороших снов.
Trimbl вне форума Ответить с цитированием
Старый 02.05.2011, 02:08   #5
Trimbl
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 135
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Хоть и спит Виктор,но он прав

Код:
Sub NewUshastok()

    Dim i As Long, j As Long, n As Long
    Application.ScreenUpdating = False
    i = Cells(Rows.Count, 1).End(xlUp).Row
    j = i + Cells(i, 1).MergeArea.Rows.Count
    If LTrim(Cells(i - 2, 3)) = "Итого:" Then 
        Rows(i & ":" & j).Copy
        Rows(j + 1).Insert
        n = Cells(i, 1)
        i = Cells(Rows.Count, 1).End(xlUp).Row
        j = i + Cells(i, 1).MergeArea.Rows.Count
    ElseIf Cells(i, 1).MergeArea.Rows.Count > 2 Then 
        Rows(i + 1 & ":" & j - 2).Delete
        Cells(i, 1) = n + 1
        Cells(i, 2).Select
        Selection.UnMerge
        Range(Cells(i, 2), Cells(i, 22)).ClearContents
        Range(Cells(i, 2), Cells(i + 1, 2)).Select
        Selection.Merge
        Cells(i, 1).Select
        With ActiveCell
            i = .Row + .MergeArea.Rows.Count
            Cells(i + 1, 2).Select
            Cells(i - 1, 4).FormulaR1C1 = "=IF(ISBLANK(R[-1]C),"""",SUM(R[-" & i - .Row - 1 & "]C:R[-1]C))"
            Cells(i - 1, 5).FormulaR1C1 = _
   "=IF(OR(ISBLANK(R[-1]C[-1]),ISBLANK(R[-1]C)),"""",SUMPRODUCT(R[-" & i - .Row - 1 & "]C[-1]:R[-1]C[-1], R[-" & i - .Row - 1 & "]C:R[-1]C) / RC[-1])"
        End With
    Else 
        Cells(i - 1, 2).Select
    End If

    Application.ScreenUpdating = True
End Sub
doober, благодарю за готовое решение.
1. А. не могли-бы вы прокоментировать строку
If LTrim(Cells(i - 2, 3)) = "Итого:" Then
а именно, что это такое - LTrim ?
2. В учебном пособии встретил такое выражение:
В инструкции If Then Else 'End If ключевые слова ElseIf и Else являются необязательными. Как понимать выражение - "являются необязательными"?
Trimbl вне форума Ответить с цитированием
Старый 02.05.2011, 02:37   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

LTrim это скорее всего привычка моя пробелы в начале строки убирать.
читайте вложение
Вложения
Тип файла: txt 4. Операторы и функции.txt (25.5 Кб, 149 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инструкция switch Mans_Star Помощь студентам 1 24.02.2011 11:11
Инструкция and. Ibanez Wizard Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 23.02.2011 14:25
Нераспознная управляющая последовательность _-Re@l-_ Общие вопросы .NET 1 25.11.2010 20:37
Инструкция Execute Desha Microsoft Office Access 6 10.06.2010 20:11
Инструкция программисту Desha Помощь студентам 10 19.11.2009 21:45