Ошибка автозаполнения VBA, когда последний столбец уже заполнен - PullRequest
1 голос
/ 06 июня 2019

У меня есть этот код (см. Ниже), который определяет, нужно ли удалять столбец в начале листа, когда удаляются все столбцы, которые необходимо было удалить. код находит последний использованный столбец и заполняет лист до тех пор, пока он не достигнет столбца DO.

Но теперь, когда столбец уже заполнен с последнего раза, когда я нажал кнопку, и ни одна строка не была удалена. код вылетает и говорит

Ошибка 1004 при выполнении. Ошибка автозаполнения класса Range.

Работает только тогда, когда столбец DO еще не используется.

Это мой код:

Dim lColumn As Long
Dim iCntr As Long

    lColumn = 20
    For iCntr = lColumn To 12 Step -1
        If Cells(3, iCntr) = 0 Then
        Columns(iCntr).Delete
End If
Next

With Workbooks("Bureauplanning2backup.xlsm").Worksheets("Planning")
Dim rngStart As Range
Set rngStart = .Cells(2, .Columns.Count).End(xlToLeft).Offset(, 
-1).EntireColumn

Dim rngEnd As Range
Set rngEnd = .Cells(2, .Columns.Count).End(xlToLeft).EntireColumn

Dim rng As Range
Set rng = .Range(rngStart, .Columns("DO"))

Dim rngX As Range
Set rngX = .Range(rngStart, rngEnd)

End With
rngX.AutoFill rng, Type:=xlFillDefault

Есть ли способ проверить, заполнен ли уже столбец DO и когда он заполнен, код просто не запускает строку:

rngX.AutoFill rng, Type:=xlFillDefault

1 Ответ

1 голос
/ 06 июня 2019

Вы можете посчитать, сколько ячеек в DO имеют данные

If Application.WorksheetFunction.CountA(.Columns("DO")) = 0 Then
    'zero cells have data so autofill
    rngX.AutoFill rng, Type:=xlFillDefault
Else
    'at least one cell has data so don't autofill
    MsgBox "Column DO has already data"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...