Can t execute code in break mode

Can t execute code in break mode

I keep getting this error in my code:

What I’m trying to do in this code is to loop through every 7 instances of the B column, get their value and sum them together, store the sum at the cells starting K22 and start the loop again from the next B cell following, in this case B12, with B12’s sum to be stored in K23 and so forth. What am I doing wrong here? Please let me know, any pointers to the right direction would be great.

I’m trying to make a button for this, when clicking the button will run through my program and start calculating and displaying.

Can’t execute code in break mode

You enter break mode when you suspend execution of code. This error has the following causes and solutions:

  • You tried to run code from the Macro dialog box. However, Visual Basic was already running code, although the code was suspended in break mode. You may have entered break mode without knowing it, for example, if asyntax error orrun-time error occurred. Continue running the suspended code, or terminate its execution before you run code from the Macro dialog box. You can fix the error and choose Continue, or you can return to the Macro dialog box and restart the macro.

For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).

макрос удалит на листе все строки, в которых содержится искомый текст:

Чтобы вместо удаления просто скрыть такие строки, замените строку

Расширенная версия этого макроса — с использованием UserForm для ввода искомого значения

Ещё один вариант кода, позволяющего выполнять поиск (с последующим удалением или скрытием строк) сразу по нескольким условиям:

Вложение Размер Загрузки Последняя загрузка
ConditionalRowsDeleting.xls 24 КБ 8926 9 часов 48 минут назад
ConditionalRowsDeletingUsingUserform.xls 45.5 КБ 206 1 год 12 недель назад
  • 193990 просмотров

Комментарии

Подскажите, пожалуйста, какие изменения нужно внести в ваш макрос для скрытия просто пустых строк в диапазоне от 1 до 150 строки.

А как адаптировать Ваш макрос для ячейки с условием, например удалять строку если в ячейке значение больше, например, нуля?

уже все работает)

Не знаю, что вы там делаете, но строка "If ws.Index = 1 Then" явно не из моего макроса
(в моем макросе нет переменной ws)
Вот если вы показали бы полный код своего макроса — тогда можно было бы сказать, в чем именно ошибка.

У меня не удаляет ничего( Что я делаю не правильно?
удалять только на первом листе, который называется "накладная"
If ws.Index = 1 Then
Правильно?

Спасибо. Все работает как нужно — с Вашей помощью.

А вы попробуйте сначала удалить нули из ячеек

А потом удаляйте строки с пустыми ячейками:

Читайте также:  1999 Год это какой век

Просмотрел много форумов по удалению строк через макрос. Нашел один который частично подходит мне, он удаляет строки если в 5 столбце пусто во всех листах кроме первого. Но не знаю как добавить, чтоб удалял еще и строки если в 4 столбце значение 0. Код быстрый (без цикла) а как дополнить — ума не приложу.
Sub DeleteEmptyRowsToAll()
Application.ScreenUpdating = False ‘ отключаем обновление экрана
On Error Resume Next
Dim ws As Worksheet ‘декларирование переменой
For Each ws In Worksheets
If ws.Index > 1 Then ‘ кроме первого листа
ws.Columns(5).SpecialCells(xlCellTypeBlanks).EntireRow.Delete ‘ удаляем сразу все строки, в которых в 5-м столбце — пусто
End If
Next
End Sub

Огромное спасибо за помощь. 🙂

Про чёрные ячейки в столбце.
Файл обновляется несколько раз в день — делать выборку вручную не вариант, нужен макрос.
А офис 2007 покупать шеф не хочет — 18 компов. Хватит вам и 2003, тем более официальный.
Про форум — пардон, не так назвал. Извините, если обидел.

Используйте фильтр по цвету (он доступен в Excel 2007 и выше): скройте все чёрные ячейки в столбце, после чего удалите видимые строки, и отключите фильтрацию.
Всё быстро и просто — и никаких макросов.

PS: Про какой форум речь? У меня на сайте форума нет, и не предвидится в ближайшем будущем.

Очень хороший форум! Часто им пользуюсь, а вот теперь забуксовал.
задача: имеется таблица, в которой, например, третий из столбец заполнен по принципу — или черная или белая ячейка. Нужно удалить строки с белыми ячейками в этом столбце. Заранее спасибо!

Вовсе необязательно вкладывать 3 условия в макрос.
Я бы на вашем месте в дополнительные столбец поместил формулу типа такой:
=ЕСЛИ(ИЛИ(Q1 2));"";"не удаляем")

И потом бы макросом (или через автофильтр) удалил пустые строки по доп.столбцу

Добрый день, подскажите как написать макрос для скрытия и открытия (Или удаления) строк таблицы если в диапазоне ячеек [Пример:(d5:g100)] строка содержит в ячейках нули (или формулу, но отображает по формуле ноль)

Это как раз то что я так долго искал! Большое спасибо за информацию!

Помогите пожалуйста решить чуть более сложную задачу.
Есть несколько условий для удаления,
1) если значение ячейки (числовое) в столбце "Q" меньше "число" — удаляем строку
2) если значение ячейки (текстовое) в столбце "I" содержит "текст" — удаляем строку
И самое, наверное сложное:
3) если значение ячейки (текстовое) в столбце "L" встречается на листе только 1 раз и при этом значение ячейки (числовое) в столбце "Q" больше "число" — удаляем строку

И как все эти условия правильно в циклы вложить
PS В файле больше 30000 строк

Заранее спасибо! С уважением!

Большое спасибо за помощь! Работает!

Чтобы обработка ячеек начиналась с 15-строки, надо изменить анализируемый диапазон:

Читайте также:  Burnrecovery что это за программа

Т.е. поиск будет производится на пересечении используемого диапазона листа, и диапазона строк с 15-й по последнюю строку листа
(таким образом мы отсекаем первые 14 строк)

Кир Булычев, причину такого поведения вашего макроса я не знаю.
Надо смотреть файл — возможно, проблема в нём.
И, кстати, для 10000 строк надо использовать другие, более правильные и быстрые, алгоритмы
(хотя бы потому, что Union работает медленно, и не может вмещать в себя более 1000 ячеек. Т.е. если у вас с нулями и единицами будет 1500 строк, — то удалится только около 1000 строк, остальные макрос пропустит)

PS: За помощью лучше обращайтесь на форумы по Excel
(я помогаю не бесплатно)

Вот пользовался макросом который Вы посоветовали (я заменил только локацию данных):

Sub УдалениеСтрокСТремяЗначениями()
‘ удаляются части строк, в кторых в столбце "O" находится 0, 1 или #N/A
On Error Resume Next
Dim cell As Range, delra As Range: Application.ScreenUpdating = False

For Each cell In Range("O:O").SpecialCells(xlCellTypeConstants)
If Val(cell) = 0 Or Val(cell) = 1 Then
If delra Is Nothing Then Set delra = cell Else Set delra = Union(delra, cell)
End If
Next cell
If Not delra Is Nothing Then Intersect(delra.EntireRow, Range("M:O")).Delete
Intersect(Range("O:O").SpecialCells(xlCellTypeConstants, xlErrors).EntireRow, Range("M:O")).Delete

— но вот недавно, увеличилось число обрабатываемых данных (со 180 до 380 строк, а будет и до 10 000) и если раньше макрос удалял данные в строках с "М" по "О" если в "О" содержатся "1", "0" или "N/A" и поднимал их вверх (т.е. удалял строки) — то теперь он также удаляет данные НО стирает не строки а 2 соседних столбца справа. При возврате к меньшему кол-ву обрабатываемых ячеек/данных — всё снова работает нормально.
Решил опять к Вам обратится за помощью т.к. составные этого макроса к сожалению находятся за граню моих познаний в VBA.

Буду очень благодарен если посоветуете что-нибудь.

Скажите, пжта, если надо начать рассматривать массив начиная допустим с 15-й строки. Какие изменения претерпит макрос?

Здравствуйте !
У меня вопрос по макросу "позволяющему выполнять поиск (с последующим удалением или скрытием строк) сразу по нескольким условиям:"

Мне нужно чтоб удалялись строки со значением НОЛЬ.
Ставлю "0" и удаляются все значения в значении которого есть НОЛЬ.

Как сделать что бы такого не происходила! Сохранив при этом удаление по нескольким условиям.

А можно как-то сделать так, чтобы этот макрос всегда был включен при заходе в файл Exela и работал динамически. К примеру, если поменяются данные в ячейках C2:CI2, то сразу скроются или отобразяться ячейки согласно макросу.

Вы правы. Спасибо большое, он работает хорошо! У меня неполучилось потому что я буквы ставил в ячейки, если подставить цифры то все будет работать правильно 🙂

Неужели? Плохо проверяли.
Этому макросу нет разницы, что в ячейках — формулы или значения.

Читайте также:  Evolve возникла проблема с вашей учетной записью

Sub СкрываемПустыеСтолбцы()
Dim cell As Range: Application.ScreenUpdating = False
For Each cell In [c2:ci2].Cells
‘ скрываем столбцы, если в ячейке ноль или пусто
cell.EntireColumn.H > Next cell
End Sub

Спасибо большое за данный макрос, но он не совсем работает так как мне нужно, я проверил его и окозалось что он опознает ячейки только с введенными данными в ручную, а формулы он не распознает. Допиши пожалуйста макрос, который сможет определять данный полученные формулами в этих ячейках.

Моя задача решена. Спасибо огромное))) В целом — действовала по предложенному Вами плану))) Спасибо!)))))

В макросе в выражении ra.Find(word, , xlValues , xlPart) есть опция xlValues — она отвечает за поиск В ЗНАЧЕНИЯХ.
Есть и другие варианты этой опции:
xlFormulas — поиск в формулах
xlComments — поиск в комментариях к ячейке

Спасибо большое за данный макрос, но он не совсем работает так как мне нужно, я проверил его и окозалось что он опознает ячейки только с введенными данными в ручную, а формулы он не распознает. Допиши пожалуйста макрос, который сможет определять данный полученные формулами в этих ячейках.

Как бы для меня очень затруднительным получается п.3. ((((

Т.е. создать бегунок по строкам (нахожу совпадение — копирую) нереально?(((((

Здравствуйте, Ольга.
Тут многое зависит от того, насколько "огромный" ваш файл (тысячи, десятки или сотни тысяч, миллион строк?)
При разных объёмах данных — разные алгоритмы.

Представленный мной код корректно работает для небольших таблиц (где число скрываемыхудаляемых строк не превышает тысячи)
Это ограничение легко обойти, но для увеличения производительности необходимо полностью изменить алгоритм макроса
(что моментально работает на тысячах строк, может нещадно тормозить на миллионе строк)

Самый простой способ, который приходит мне на ум — с использованием формулы в доп.столбце:
1) на отдельном листе делаем список из 50 позиций
2) в дополнительном (пустом) столбце с огромной таблицей пишем формулу, которая проверяет наличие одного из 50 слов в строке
3) применяем автофильтр в этому доп. столбцу, оставляя видимыми лишь те строки, для которых формула вернула результат "совпадение найдено"
4) выделяем и копируем видимые строки на другой лист

Подскажите, пожалуйста, как можно решить такую задачу:
В документе Excel нужно организовать поиск: сразу искать по 50 позиций (огромный файл нужен быстрый поиск по огромному кол-ву материалов)и выводить на новый лист уже найденные позиции и все, что соответствует этим позициям в строке (например, найти среди строительных материалов песок, гравий и т.д. и вывести вместе с количеством на новый лист). Даже не знаю, как лучше эти 50 позиций для поиска делать: лучше бы через UserForm, но пока не получается((((

Буду признательна за любую помощь.
Спасибо)

Вам поможет такой макрос:
(не самый быстрый — но экономить миллисекунды не вижу смысла)

Ссылка на основную публикацию
Adblock detector