Здравствуйте! Вопрос состоит в том, что внутри цикла есть 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
Добрый день. Без файла не совсем понятно, но как вариант, вставьте внутрь цикла счетчик на выполнение условия If, если в конце цикла счетчик 0, то Msgbox и exit sub
Добрый день. Без файла не совсем понятно, но как вариант, вставьте внутрь цикла счетчик на выполнение условия If, если в конце цикла счетчик 0, то Msgbox и exit subsboy
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 опередил )
или типа такого [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