Копирование диапазона ячеек на другой лист - PullRequest
0 голосов
/ 31 декабря 2018

Я хочу скопировать диапазон ячеек, скажем F10:F59, листа Form, затем перенести их и вставить в другой диапазон на другом листе с именем Stock Manual Senin, скажем B11:BA25.

* 1006.* Это то, что у меня сейчас есть:

Sub InputPAGS_Senin()

Dim copySheet As Worksheet
Dim pasteSheet As Worksheet
Dim vntRange As Variant
Dim lastRow As Long

Set copySheet = Sheets("Form")
Set pasteSheet = Sheets("Stock Manual Senin")

' Calculate last row of data.
lastRow = pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1).Row

' Copy 2 cells.
pasteSheet.Cells(lastRow + 1, 1).Offset(0, 1) = copySheet.Range("N2").Value

' Paste column range into array.
vntRange = copySheet.Range("F10:F59").Value

' Paste transpose array into row range.
Sheets("Stock Manual Senin").Select
Range("B11:BA25").Select
pasteSheet.Cells(lastRow + 1, 1).Offset(0, 3).Resize(, copySheet _
        .Range("F10:F59").Rows.Count).Value = Application.Transpose(vntRange)

End Sub

result (hilight red)

цель вставки должна бытьв row 11, но он вставляется в row 285, поскольку целевой диапазон находится между строкой таблицы других.

Может кто-нибудь посоветовать мне, как мне продолжить, пожалуйста?Спасибо.

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

xlUp становится xlDown

Вы должны рассчитать последнюю строку от NAMA TOKO вниз (xlDown).Не удаляйте NAMA TOKO и PAGS / MIGO , тогда вы можете использовать следующие

lastRow = pasteSheet.Cells(9, 2).End(xlDown).Offset(1).Row

или даже лучше

lastRow = pasteSheet.Cells(9, 2).End(xlDown).Row + 1 
0 голосов
/ 31 декабря 2018

Работает ли что-то подобное?Я просто сделал ручной поворот, когда выписал значения.

Sub SOTest()
    Dim copySheet       As Worksheet
    Dim CopyRange       As Range
    Dim Cell            As Range
    Dim pasteSheet      As Worksheet
    Dim lastRow         As Long
    Dim ColIndex        As Long

    Set copySheet = ThisWorkbook.Worksheets("Form")
    Set pasteSheet = ThisWorkbook.Worksheets("Stock Manual Senin")
    Set CopyRange = copySheet.Range("F10:F59")
    ColIndex = 2 'Column B

    With pasteSheet
        lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
    End With

    Application.ScreenUpdating = False
    For Each Cell In CopyRange
        pasteSheet.Cells(lastRow, ColIndex).Value = Cell.Value
        ColIndex = ColIndex + 1
    Next
    Application.ScreenUpdating = True

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...