#excel #vba #copy
#excel #vba #Копировать
Вопрос:
Я работаю над макрокомандой, которая принимает значение в H2 на 3-м листе рабочей книги и копирует его в столбец за последним использованным столбцом в строке 5 в строке, содержащей слово «страница» в столбце A на листе под названием «Обзор», но только если значение в H2 не равно 0. После этого мне нужно добавить строку в строке 4 в том же столбце, в который было отправлено значение. Кто-нибудь может помочь мне заставить мой код работать? У меня конкретно возникают проблемы с копированием значения. Это то, что у меня есть до сих пор:
'
' example Macro
'
'
Dim cRange As Range
Dim valuessendmemore As Range
Dim Cell As Range
Dim wsDestination As Worksheet, wsSource As Worksheet
'set worksheets
With ThisWorkbook
Set wsSource = .Worksheets(3)
Set wsDestination = .Worksheets("Overview")
End With
LastColumn1 = wsDestination.Cells(5, wsDestination.Columns.Count).End(xlToLeft).Column
Set cRange = wsSource.Range("H2")
For Each Cell In cRange
If Cell.Value > 0 Then
Cell.Value.Copy
'Set the value you want to search
strSearch = "*Page*"
'Set the column you want to seach
ColumnNo = 1
'Create a with statement to point Sheet1.
With wsDestination
'Search for strSearch in column number ColumnNo
Set rngFound = .Columns(ColumnNo).Find(strSearch, LookIn:=xlValues, lookat:=xlWhole)
If Not rngFound Is Nothing Then
'Paste row
wsDestination.Range(LastColumn1 amp; rngFound.Row).PasteSpecial Paste:=xlPasteValues
'Delete row
End If
End With
End If
Next Cell
Application.CutCopyMode = False
End Sub
Ответ №1:
Ваша проблема, без сомнения, заключается в этом утверждении Range(LastColumn1 amp; rngFound.Row)
. Допустим, ваша LastColumn1
оценка равна 25, а rngFound.Row
— 1000. Теперь в вашем заявлении говорится, Range(251000)
что не существует. Правильным переписыванием было бы:
wsDestination.Cells(rngFound.Row, LastColumn1)...