Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проверить, если в цикле не совпадает if, то выйти из sub - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Проверить, если в цикле не совпадает if, то выйти из sub
tmttm Дата: Среда, 31.05.2017, 15:37 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте!
Вопрос состоит в том, что внутри цикла есть if, и если if ни разу не совпал со значением, то нужно вывести сообщение о несовпадении и выйти из процедуры.
Файл выложить не могу, поскольку он превышает 100 кб даже когда я его "обрезаю", поэтому выложу часть кода. Нужная часть начинатся от 'Отстройка от предыдущей строки до 'зачистка полей перед вставкой (цветом не выделяется, скорее всего потому, что руки кривые):
[vba]
Код
Private Sub ДругойУровень_Click()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim ТаблицаСопротивлений(1 To 2, 1 To 10) As Variant
    Dim n, i, w, a, q, s, z, g, p, y As Integer
    Dim x, d, c As String
        q = Interaction.InputBox("Введите количество рассчитываемых линий")
        If q = "" Then
            Exit Sub
        End If
        Worksheets("макрос").Cells(3, 5).Value = q
'Отстройка от предыдущей строки
    For i = 73 To э
        x = Sheets("расчет").Cells(i, 11)
        If x = "ОСТАЛЬНЫЕ ЭЛЕМЕНТЫ СОПТ" Then
            y = i + 5
'зачистка полей перед вставкой
            For n = 2 To ъ Step 2
                Cells(y - 1, n).Clear
                For s = y + 1 To y + 10
                    Cells(s, n).Clear
                Next
            Next
            ...
Exit For
    End If
    Next
    Application.ScreenUpdating = True
    MsgBox "таблицы построены"
End Sub
[/vba]

Суть такова, что когда x = "ОСТАЛЬНЫЕ ЭЛЕМЕНТЫ СОПТ", допустим, находится в ячейке вне цикла (Cells(1,11)), то в If x = "ОСТАЛЬНЫЕ ЭЛЕМЕНТЫ СОПТ" Then не заходит, однако выводит на экран "таблицы построены".
Как сделать, чтобы при нахождении x вне цикла (или его отсутсвия в excel), выводилось MsgBox "НЕ НАЙДЕНО", и выходило из процедуры (Exit Sub).
Заранее оговорюсь, навыки в VBA на уровне первоклассника.
 
Ответить
СообщениеЗдравствуйте!
Вопрос состоит в том, что внутри цикла есть if, и если if ни разу не совпал со значением, то нужно вывести сообщение о несовпадении и выйти из процедуры.
Файл выложить не могу, поскольку он превышает 100 кб даже когда я его "обрезаю", поэтому выложу часть кода. Нужная часть начинатся от 'Отстройка от предыдущей строки до 'зачистка полей перед вставкой (цветом не выделяется, скорее всего потому, что руки кривые):
[vba]
Код
Private Sub ДругойУровень_Click()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim ТаблицаСопротивлений(1 To 2, 1 To 10) As Variant
    Dim n, i, w, a, q, s, z, g, p, y As Integer
    Dim x, d, c As String
        q = Interaction.InputBox("Введите количество рассчитываемых линий")
        If q = "" Then
            Exit Sub
        End If
        Worksheets("макрос").Cells(3, 5).Value = q
'Отстройка от предыдущей строки
    For i = 73 To э
        x = Sheets("расчет").Cells(i, 11)
        If x = "ОСТАЛЬНЫЕ ЭЛЕМЕНТЫ СОПТ" Then
            y = i + 5
'зачистка полей перед вставкой
            For n = 2 To ъ Step 2
                Cells(y - 1, n).Clear
                For s = y + 1 To y + 10
                    Cells(s, n).Clear
                Next
            Next
            ...
Exit For
    End If
    Next
    Application.ScreenUpdating = True
    MsgBox "таблицы построены"
End Sub
[/vba]

Суть такова, что когда x = "ОСТАЛЬНЫЕ ЭЛЕМЕНТЫ СОПТ", допустим, находится в ячейке вне цикла (Cells(1,11)), то в If x = "ОСТАЛЬНЫЕ ЭЛЕМЕНТЫ СОПТ" Then не заходит, однако выводит на экран "таблицы построены".
Как сделать, чтобы при нахождении x вне цикла (или его отсутсвия в excel), выводилось MsgBox "НЕ НАЙДЕНО", и выходило из процедуры (Exit Sub).
Заранее оговорюсь, навыки в VBA на уровне первоклассника.

Автор - tmttm
Дата добавления - 31.05.2017 в 15:37
sboy Дата: Среда, 31.05.2017, 15:48 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Без файла не совсем понятно, но как вариант, вставьте внутрь цикла счетчик на выполнение условия If, если в конце цикла счетчик 0, то Msgbox и exit sub


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Без файла не совсем понятно, но как вариант, вставьте внутрь цикла счетчик на выполнение условия If, если в конце цикла счетчик 0, то Msgbox и exit sub

Автор - sboy
Дата добавления - 31.05.2017 в 15:48
tmttm Дата: Среда, 31.05.2017, 15:53 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я счетчиком еще не пользовался, почитаю как с ним работать, попробую и отпишусь. А так на вскидку, должно сработать.
 
Ответить
СообщениеЯ счетчиком еще не пользовался, почитаю как с ним работать, попробую и отпишусь. А так на вскидку, должно сработать.

Автор - tmttm
Дата добавления - 31.05.2017 в 15:53
sboy Дата: Среда, 31.05.2017, 17:22 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
почитаю как с ним работать

не найдете...
можно проще
в начале цикла делаете логическую переменную
[vba]
Код

flag = true
for....
if.....
flag = false
.....
end if
next
if flag then msgbox "...": exit sub
[/vba]


Яндекс: 410016850021169
 
Ответить
Сообщение
почитаю как с ним работать

не найдете...
можно проще
в начале цикла делаете логическую переменную
[vba]
Код

flag = true
for....
if.....
flag = false
.....
end if
next
if flag then msgbox "...": exit sub
[/vba]

Автор - sboy
Дата добавления - 31.05.2017 в 17:22
nilem Дата: Среда, 31.05.2017, 17:24 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
или типа такого
[vba]
Код
Private Sub ДругойУровень_Click()
Dim bu As Boolean
'..........
'Отстройка от предыдущей строки
For i = 73 To 100
    x = Sheets("расчет").Cells(i, 11)
    If x = "ОСТАЛЬНЫЕ ЭЛЕМЕНТЫ СОПТ" Then
        bu = True
        '........
    End If
Next i
If bu = False Then MsgBox "Не найдено", 64: Exit Sub
'..............
End Sub
[/vba]
sboy опередил )


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Среда, 31.05.2017, 17:24
 
Ответить
Сообщениеили типа такого
[vba]
Код
Private Sub ДругойУровень_Click()
Dim bu As Boolean
'..........
'Отстройка от предыдущей строки
For i = 73 To 100
    x = Sheets("расчет").Cells(i, 11)
    If x = "ОСТАЛЬНЫЕ ЭЛЕМЕНТЫ СОПТ" Then
        bu = True
        '........
    End If
Next i
If bu = False Then MsgBox "Не найдено", 64: Exit Sub
'..............
End Sub
[/vba]
sboy опередил )

Автор - nilem
Дата добавления - 31.05.2017 в 17:24
buchlotnik Дата: Среда, 31.05.2017, 19:31 | Сообщение № 6
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
вот вы тут стараетесь, отвечаете, а "ответ мечты" (это цитата ТС-а) уже получен - кросс на планете
 
Ответить
Сообщениевот вы тут стараетесь, отвечаете, а "ответ мечты" (это цитата ТС-а) уже получен - кросс на планете

Автор - buchlotnik
Дата добавления - 31.05.2017 в 19:31
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!