Добрый день. Есть код, проверяет, есть ли слово "ОШИБКА!" в ячейке и если есть, выводит сообщение в TextBox. Но дело в том, что у меня в столбце "Y" есть 130 строк, надо проверить их все.
[vba]
Код
Private Sub TextBox21_Change() If CStr(Лист1.Range("Y2").Value) = "ОШИБКА!" Then Me.TextBox21.Text = "Ошибка заполнения сумм в строке 2" Else Me.TextBox21.Text = "Ошибок нет" End If End Sub
[/vba]
Спасибо.
Добрый день. Есть код, проверяет, есть ли слово "ОШИБКА!" в ячейке и если есть, выводит сообщение в TextBox. Но дело в том, что у меня в столбце "Y" есть 130 строк, надо проверить их все.
[vba]
Код
Private Sub TextBox21_Change() If CStr(Лист1.Range("Y2").Value) = "ОШИБКА!" Then Me.TextBox21.Text = "Ошибка заполнения сумм в строке 2" Else Me.TextBox21.Text = "Ошибок нет" End If End Sub
Private Sub TextBox21_Change() dim arr(), c, i& with worksheets("Лист1") arr=intersect(.usedrange, .range("y:y")).value end with Me.TextBox21.Text="" for i=1 to ubound(arr) If arr(i,1) = "ОШИБКА!" Then Me.TextBox21.Text = Me.TextBox21.Text & "Ошибка заполнения сумм в строке " & i & chr(10) end if next if Me.TextBox21.Text="" then Me.TextBox21.Text = "Ошибок нет" End If End Sub
[/vba]
вероятно как-то так.... [vba]
Код
Private Sub TextBox21_Change() dim arr(), c, i& with worksheets("Лист1") arr=intersect(.usedrange, .range("y:y")).value end with Me.TextBox21.Text="" for i=1 to ubound(arr) If arr(i,1) = "ОШИБКА!" Then Me.TextBox21.Text = Me.TextBox21.Text & "Ошибка заполнения сумм в строке " & i & chr(10) end if next if Me.TextBox21.Text="" then Me.TextBox21.Text = "Ошибок нет" End If End Sub
Сергей, а Вам действительно нужно на каждую ошибку выводить сообщение с номером строки? А если их 100 штук будет? Может, проще одно сообщение? А уж на 130 строк можно потом и ручками поискать. Кстати, сделайте туда условное форматирование (например, красная заливка), чтобы быстрее искать было. [vba]
Код
Private Sub TextBox21_Change() r1_ = Лист1.Range("Y" & Rows.Count).End(xlUp).Row If r1_ < 2 Then Exit Sub On Error Resume Next n_ = WorksheetFunction.Match("ОШИБКА!", Range("Y2:Y" & r1_), 0) If Err.Number = 0 Then Me.TextBox21.Text = "Есть ошибка заполнения сумм" Else Me.TextBox21.Text = "Ошибок нет" End If End Sub
[/vba] [moder]В следующий раз обязательно прикладывайте свой файл. Иначе будет замечание.
Сергей, а Вам действительно нужно на каждую ошибку выводить сообщение с номером строки? А если их 100 штук будет? Может, проще одно сообщение? А уж на 130 строк можно потом и ручками поискать. Кстати, сделайте туда условное форматирование (например, красная заливка), чтобы быстрее искать было. [vba]
Код
Private Sub TextBox21_Change() r1_ = Лист1.Range("Y" & Rows.Count).End(xlUp).Row If r1_ < 2 Then Exit Sub On Error Resume Next n_ = WorksheetFunction.Match("ОШИБКА!", Range("Y2:Y" & r1_), 0) If Err.Number = 0 Then Me.TextBox21.Text = "Есть ошибка заполнения сумм" Else Me.TextBox21.Text = "Ошибок нет" End If End Sub
[/vba] [moder]В следующий раз обязательно прикладывайте свой файл. Иначе будет замечание._Boroda_
Private Sub TextBox21_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Static b As Long Dim i, c As Integer b = 2 TextBox21.Visible = True TextBox21.MultiLine = True
Me.TextBox21.Text = "Кликните два раза мышкой, чтобы проверить ошибки" For i = 2 To 131 If Range("Y" & i) = "ОШИБКА!" Then
Me.TextBox21.Text = "Ошибка заполнения сумм в строке: " & i & vbCr & CStr(Лист1.Range("A" & i).Value) b = b + 1 End If Next i
If Me.TextBox21.Text = "Кликните два раза мышкой, чтобы проверить ошибки" Then Me.TextBox21.Text = "Ошибок не обнаружено" End If End Sub End Sub
[/vba]
а как все это дело запустить по нажатию кнопки? [moder]Я предупреждал. Ловите замечание.
Спасибо, а я тут методом тыка навоял
[vba]
Код
Private Sub TextBox21_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Static b As Long Dim i, c As Integer b = 2 TextBox21.Visible = True TextBox21.MultiLine = True
Me.TextBox21.Text = "Кликните два раза мышкой, чтобы проверить ошибки" For i = 2 To 131 If Range("Y" & i) = "ОШИБКА!" Then
Me.TextBox21.Text = "Ошибка заполнения сумм в строке: " & i & vbCr & CStr(Лист1.Range("A" & i).Value) b = b + 1 End If Next i
If Me.TextBox21.Text = "Кликните два раза мышкой, чтобы проверить ошибки" Then Me.TextBox21.Text = "Ошибок не обнаружено" End If End Sub End Sub
[/vba]
а как все это дело запустить по нажатию кнопки? [moder]Я предупреждал. Ловите замечание.S0LDAT