Настройка динамического диапазона для нескольких листов в книге, исключая 2 листа. (ошибка 438) VBA

#excel #vba

#excel #vba

Вопрос:

При выполнении этого кода я получаю сообщение об ошибке 438.

В моей книге 16 листов, из которых мне нужно выполнить этот код динамического диапазона для 14 листов.

  1. Чтобы найти диапазон, начинающийся с ячейки A2 на каждом листе (кроме 2 листов).
  2. И очистите содержимое этого выбранного диапазона. * (я не хочу использовать функцию .usedrange) цель кода:

`Sub DynamicRange()

 Dim ws4 As Worksheet
Dim twb As ThisWorkbook
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range
Dim getLastCell As Range
Dim shtrng As Range

'Answer = MsgBox("The file may contain data, which will be lost if you proceed" amp; vbCrLf amp; "Save the
'file with a different file name to retain data" amp; vbCrLf amp; " Or Click Yes to proceed ", vbQuestion  
'vbYesNo   vbDefaultButton2, "Caution")
'If Answer = vbYes Then
    Set twb = Application.ThisWorkbook
        For Each ws4 In twb.Worksheets
            Set ws4 = ActiveSheet
            If ws4.Name <> "Generate Pending Log Report" And ws4.Name <> "PL1.Summary" Then
                ws4.Select
                LastRow = ws4.Cells.Find("*", ws4.Cells(1, 1), xlFormulas, xlPart, xlByRows, _
                        xlPrevious).Row
                lastCol = ws4.Cells.Find("*", ws4.Cells(1, 1), xlFormulas, xlPart, xlByColumns, _
                        xlPrevious).Column
              Set getLastCell = ws4.Cells(LastRow, lastCol)
              Set shtrng = ActiveSheets.Range("A1", getLastCell(ws4)).Select
              'I am getting an error 438
            End If
        Next ws4

'End If
  

End Sub`

Комментарии:

1. Что это должно делать: getLastCell(ws4) когда getLastCell это диапазон, а не функция? Кроме того, удалите .Select из Set shtrng = строки

2. @Rory Честно говоря, я понятия не имею. Я скопировал это из учебного примера по диапазону. можете ли вы предложить мне внести изменения в этот код?. Спасибо

Ответ №1:

Измените это:

 Set shtrng = ActiveSheets.Range("A1", getLastCell(ws4)).Select
  

для этого:

 ActiveSheet.Range("A1", getLastCell).Select