#excel #vba
#excel #vba
Вопрос:
При выполнении этого кода я получаю сообщение об ошибке 438.
В моей книге 16 листов, из которых мне нужно выполнить этот код динамического диапазона для 14 листов.
- Чтобы найти диапазон, начинающийся с ячейки A2 на каждом листе (кроме 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