Добрый день! Прошу помощи!
Возникает проблема с макросом такого характера. Есть таблица, на листе 1 15 столбцов и неограниченное кол-во строк. Необходимо, чтобы при вводе значения в столбец F, макрос проверял значение в столбце O той же строки. Если в O значение равное 0, то строка удаляется из листа 1 и переносится на лист 2. Если же значение отличное от 0, то строка остается на месте. Вот макрос:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastRow1 As Long, lastRow2 As Long
Dim i As Long
Set ws1 = ThisWorkbook.Sheets("Лист1")
Set ws2 = ThisWorkbook.Sheets("Лист2")
lastRow1 = ws1.Cells(ws1.Rows.Count, "F").End(xlUp).Row
If Not Intersect(Target, ws1.Range("F:F")) Is Nothing Then
For i = lastRow1 To 2 Step -1
If ws1.Cells(i, "O") = 0 Then
lastRow2 = ws2.Cells(ws2.Rows.Count, "F").End(xlUp).Row
ws1.Rows(i).Copy ws2.Rows(lastRow2 + 1)
ws1.Rows(i).Delete
End If
Next i
End If
End Sub
Проблема в том, что при вводе значения в F с нулевым значением в O (например в строке 100) сама строка 100 переносится на лист 2, но удаляются с листа 1 все строки 1-99. При этом нет проблем с строками с ненулевым значением в O.
Заранее спасибо!
Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.
Пустые ячейки есть в столбце O? Эксель считает, что пустые ячейки содержат ноль.
В столбце O применена формула вычитания из столбцов K,M,L, т.е. она всегда с значением. Но и без формул все равно такая же проблема
Я тестовый файл сделал, удаляются строки только, если в столбце "O" ноль или пусто.
Нужно смотреть ваш файл.
Вот тестовый файл. В столбец A введите "Наим", в столбец "O" введите ноль, затем введите значение в столбец "F". Строка исчезнет.
Если же в столбец "O" ввести не ноль (число или текст), а затем ввести значение в столбец "F", то строка не будет удалена.
Похоже на ту же проблему. Если сделать, например 30 строк с 0 и в столбце F на какой-нибудь 25 строке ввести любое значение, то строки с 0 исчезают в никуда
Сделайте в том файле, который я выложил, но не запускайте макрос, а выложите на форуме. Я сам запущу.
Или если не хотите выкладывать файл на форум по каким-то причинам, то заполните лист и сделайте скриншот.
Да в том же файле я просто заполнил 30 строк. Если по порядку строку F заполнять, то они переносятся нормально. А если, например, в 20 строчки в F что-то написать, то исчезнут бесследно все что выше с 0. У меня такая же проблема была
Всё правильно, ваш макрос просматривает не только одну строку, в которой произошли изменения, а двигается снизу вверх от последней заполненной строки в столбце F и до строки 2. Если в столбце "O" есть ноль, строка удалится.
А вам как надо? Чтобы переносилась только одна строка, в которой пользователь сделал изменения?
Макрос вы писали?
Мне необходимо, чтобы в условной сотне строк, каждая строка индивидуально при вводе значения в F и нулевом O переносилась на лист 2, удаляясь с листа 1.
Например, строка 34 в O будет 0, то я в F пишу что-то и она удаляется с листа 1 и переносится на лист 2. Потом 46 строчку, например, так же хочу убрать с листа 1 и тд
Писала нейросеть)
Здесь возможны две ситуации.
Ситуация 1. Пользователь вносит изменения только в одну ячейку в столбце F.
Ситуация 2. Пользователь вносит изменения сразу в несколько ячеек в столбце F. Например, пользователь выделил ячейки F2:F10 и очистил ячейки.
В обеих ситуациях должен запускаться макрос или только когда пользователь вносит изменения только в одну ячейку в столбце F?