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

Вход

Регистрация

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

 

= Мир MS Excel/Создать цикл, который проверяет значение в ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Создать цикл, который проверяет значение в ячейке
S0LDAT Дата: Вторник, 03.02.2015, 03:58 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Добрый день.
Есть код, проверяет, есть ли слово "ОШИБКА!" в ячейке и если есть, выводит сообщение в 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
[/vba]

Спасибо.

Автор - S0LDAT
Дата добавления - 03.02.2015 в 03:58
Michael_S Дата: Вторник, 03.02.2015, 04:31 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
вероятно как-то так....
[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
[/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
[/vba]

Автор - Michael_S
Дата добавления - 03.02.2015 в 04:31
_Boroda_ Дата: Вторник, 03.02.2015, 09:41 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Сергей, а Вам действительно нужно на каждую ошибку выводить сообщение с номером строки? А если их 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_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995


Сообщение отредактировал _Boroda_ - Вторник, 03.02.2015, 09:44
 
Ответить
СообщениеСергей, а Вам действительно нужно на каждую ошибку выводить сообщение с номером строки? А если их 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_
Дата добавления - 03.02.2015 в 09:41
S0LDAT Дата: Вторник, 03.02.2015, 09:55 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Спасибо, а я тут методом тыка навоял

[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]Я предупреждал. Ловите замечание.
 
Ответить
СообщениеСпасибо, а я тут методом тыка навоял

[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
Дата добавления - 03.02.2015 в 09:55
S0LDAT Дата: Вторник, 03.02.2015, 10:03 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Страницу не обновлял долго, вот и не видел сообщения (
вот файл
К сообщению приложен файл: 0001.xlsm (21.5 Kb)


Сообщение отредактировал S0LDAT - Вторник, 03.02.2015, 10:07
 
Ответить
СообщениеСтраницу не обновлял долго, вот и не видел сообщения (
вот файл

Автор - S0LDAT
Дата добавления - 03.02.2015 в 10:03
  • Страница 1 из 1
  • 1
Поиск:

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