Как мне увеличить диапазон автопополнения в коде Excel VBA? - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь увеличить столбцы, которые автоматически заполняются из раздела ручного ввода D4: G13, в приведенную ниже таблицу из 14 столбцов, которые работают сейчас, и увеличить до 18 столбцов, поскольку я недавно расширил раздел ввода вручную.

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

Так как мне увеличить его до 18?

Я удалил все объединенные строки и сжал таблицу. Я не чувствую, что есть много вариантов для меня, но расширить код.

Спасибо всем за помощь.

Option Explicit

Sub Booking_Load()
With Sheet5
    Dim BkgRow As Long
    Dim BkgCol As Long
    If .range("B1").Value = Empty Then Exit Sub
    BkgRow = .range("B1").Value
    .range("B2").Value = False 'Set New Booking to False
    .range("B3").Value = True 'Set Booking Load to True
    *** For BkgCol = 4 To 14 ***
    *** .range(.Cells(14, BkgCol).Value).Value = .Cells(BkgRow, BkgCol).Value ***'Load Booking Details
    Next BkgCol
    .Shapes("NewBkgGrp").Visible = msoFalse
    .Shapes("ExistBkgGrp").Visible = msoCTrue
    .range("B3").Value = False  'Set Booking Load to False
End With
End Sub

Sub Booking_SaveUpdate()
With Sheet5
    Dim BkgRow As Long
    Dim BkgCol As Long
    If .range("B2").Value = True Then 'New Booking
        BkgRow = .range("D999").End(xlUp).Row + 1  'First available Row
    Else: 'Existing Booking
        BkgRow = .range("B1").Value 'Booking Row
    End If
    * For BkgCol = 4 To 14 *
      * .Cells(BkgRow, BkgCol).Value = .range(.Cells(14, BkgCol).Value).Value *   'Save Booking Details
    Next BkgCol
        .Shapes("NewBkgGrp").Visible = msoFalse
        .Shapes("ExistBkgGrp").Visible = msoCTrue
        .range("B2").Value = False 'Set New Booking to False
        .range("B3").Value = False 'Set Booking Load to False
End With
End Sub

-

- Обновлены изображения по вашему запросу @ Za c 15:48 - 14-01-20

[]

[]

1 Ответ

0 голосов
/ 14 января 2020

Давайте изменим

  For BkgCol = 4 To 14 
      .range(.Cells(14, BkgCol).Value).Value = .Cells(BkgRow, BkgCol).Value
 Next BkgCol

на

 For BkgCol = 4 To 14 
     .range(.Cells(BkgRow, BkgCol).Value).value = .range(.Cells(14, BkgCol).Value).value 
     '=> .range("D24").value = .range(.Cells(14, 4).Value).value
 Next BkgCol

обе процедуры. Может быть ... ~;)

Если я ошибаюсь, возможно, ошибка в том, что ячейка P14 пуста, поэтому

.range(.Cells(14, BkgCol).Value).Value = .range(blank).value => Error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...