Скопируйте определенное значение в переменную позицию на определенном листе

#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)...