Привет! Я работаю над некоторым VBA, чтобы скопировать ячейки на другой лист в той же книге.Однако я сталкиваюсь с ошибкой.Вот вызов:
- Рабочий лист с данными для поиска.
- Я перебираю ячейки в столбце A и ищу слово Свойства: если слова найдены, я хочу скопировать и вставить специальные (транспонировать) значения в соседние ячейки до трех строк вниз на другой листв той же книге.Так, например, если в ячейке A9 найдено слово «Свойства», мне нужно скопировать значения в B10: B12 и вставить специальную транспонирование в следующую пустую строку на листе метаданных.
Я получил его вскопируйте ячейку Offset (1,1), однако у меня возникли трудности с расширением диапазона копирования. См. код ниже. Закомментированный код работает нормально, но строка чуть ниже - это то, что я пытаюсь, но это не сработает.
Private Sub Search_n_Copy()
Application.ScreenUpdating = False
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Dim rngCopy As Range, aCell As Range, srchRng As Range
Dim strSearch As String
Dim QueryResults As Worksheet
Set QueryResults = ThisWorkbook.Sheets.Add(After:=Worksheets(Worksheets.Count))
QueryResults.Name = "MetaData"
strSearch = "Properties"
Dim LastRow As Long
With QueryResults
QueryResults.Range("A1").Value = "SI_ID"
QueryResults.Range("B1").Value = "SI_NAME"
QueryResults.Range("C1").Value = "SI_WEBI_DOC_PROPERTIES"
End With
With ws
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' last row in column A
Set srchRng = .Range("A1:A" & LastRow)
For Each aCell In srchRng
If aCell.Value = "Properties" Then
''aCell.Offset(1, 1).Copy
.Range("aCell.Offset(1, 1):aCell.Offset(3,1)").Copy
QueryResults.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End If
Next aCell
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub