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

Вход

Регистрация

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

 

= Мир MS Excel/Перестала работать формула - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Перестала работать формула
Milirina555 Дата: Четверг, 24.04.2025, 13:07 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Когда вставила формулу, она поработала несколько минут, а после стала выдавать ошибку: Subscript out of range

[vba]
Код
Sub Поиск()
Dim searchValue As String
Dim cell As Range, out(), ct&
Dim result As String
Dim searchRange As Range
' Получаем значение для поиска из ячейки B1
searchValue = ThisWorkbook.Sheets("Лист1").Range("B11").Value
' Указываем диапазон для поиска
Set searchRange = ThisWorkbook.Sheets("Лист2").Range("A1:A20")
ReDim out(1 To searchRange.Rows.Count, 1 To 1)
' Инициализируем переменную для хранения результата
result = ""
' Проходим по каждой ячейке в указанном диапазоне
For Each cell In searchRange
If InStr(1, cell.Value, searchValue, vbTextCompare) > 0 Then
' Если найдено совпадение, добавляем значение в результат
ct = ct + 1
out(ct, 1) = cell.Value
End If
Next cell
' Выводим найденные значения в ячейку C15
If ct > 0 Then
With ThisWorkbook.Sheets("Лист1")
.Range("C15", .Range("C15").End(xlDown)).ClearContents
.Range("C15").Resize(ct, 1) = out
End With
End If
End Sub
[/vba]
 
Ответить
СообщениеКогда вставила формулу, она поработала несколько минут, а после стала выдавать ошибку: Subscript out of range

[vba]
Код
Sub Поиск()
Dim searchValue As String
Dim cell As Range, out(), ct&
Dim result As String
Dim searchRange As Range
' Получаем значение для поиска из ячейки B1
searchValue = ThisWorkbook.Sheets("Лист1").Range("B11").Value
' Указываем диапазон для поиска
Set searchRange = ThisWorkbook.Sheets("Лист2").Range("A1:A20")
ReDim out(1 To searchRange.Rows.Count, 1 To 1)
' Инициализируем переменную для хранения результата
result = ""
' Проходим по каждой ячейке в указанном диапазоне
For Each cell In searchRange
If InStr(1, cell.Value, searchValue, vbTextCompare) > 0 Then
' Если найдено совпадение, добавляем значение в результат
ct = ct + 1
out(ct, 1) = cell.Value
End If
Next cell
' Выводим найденные значения в ячейку C15
If ct > 0 Then
With ThisWorkbook.Sheets("Лист1")
.Range("C15", .Range("C15").End(xlDown)).ClearContents
.Range("C15").Resize(ct, 1) = out
End With
End If
End Sub
[/vba]

Автор - Milirina555
Дата добавления - 24.04.2025 в 13:07
Hugo Дата: Четверг, 24.04.2025, 18:16 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3853
Репутация: 813 ±
Замечаний: 0% ±

365
Milirina555, Добрый день.
Не вижу формулы.
А чтобы проверить процедуру - кто-то должен подготовить файл с данными.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеMilirina555, Добрый день.
Не вижу формулы.
А чтобы проверить процедуру - кто-то должен подготовить файл с данными.

Автор - Hugo
Дата добавления - 24.04.2025 в 18:16
  • Страница 1 из 1
  • 1
Поиск:

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