Удалить ячейки из Excel через VBA - PullRequest
0 голосов
/ 10 декабря 2018

Я использую приведенный ниже код для удаления всех данных из A13 в «Последняя строка» в столбце A.

Dim lastRowA As Long
With Application
  .Calculation = xlCalculationManual
  .ScreenUpdating = False
   lastRowA = .Cells(.Rows.Count, "A").End(xlUp).Row
   Range("A13:A" & lastRowA).Select

   For i = Selection.Rows.Count To 13 Step -1
      If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
          Selection.Rows(i).EntireRow.Delete
      End If
   Next i
  .Calculation = xlCalculationAutomatic
  .ScreenUpdating = True
End With

Это очищает значения, как и ожидалось.Тем не менее, это не УДАЛЕНИЕ этих строк.то есть я все еще могу прокрутить вниз до строки # 10000 (с помощью полосы прокрутки), хотя в этих ячейках нет данных.Однако последней строкой, в которой есть данные в моей ячейке, является строка № 12.

Если я выберу все эти ячейки, щелкну правой кнопкой мыши и удалю эти строки + Сохраню рабочую таблицу, у меня больше не будет доступа (через scroolbar) к10000-й ряд.Это то, чего я пытаюсь достичь с помощью VBA.

Очевидно, что используемый мной код не выполняет чистое удаление строк по какой-то причине.Пожалуйста, помогите!

1 Ответ

0 голосов
/ 10 декабря 2018

Если я правильно понял, и вы хотите удалить все данные из диапазона A13, где в столбце «А» ничего нет, вы можете попробовать:

Sub delete()
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
        On Error Resume Next
        Range("A13:A" & Rows.Count).SpecialCells(xlCellTypeBlanks).EntireRow.delete
        On Error GoTo 0
        ActiveWorkbook.Save
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Убедитесь, что вы делаете копиюВаш файл раньше на случай, если что-то пойдет не так.Обратите внимание, что ожидается, что он будет запущен на активном листе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...