将单元格范围粘贴到第一个空行和空列

时间:2016-10-07 01:29:03

标签: excel vba

我想要实现的是从片材中复制3个第一个细胞" Arkusz1"并粘贴它#34; Arkusz2"到该列中的第一个空列和第一个空行。在此之后,该过程重新进行,直到第一行将填充10个单元格,然后在下一行中继续复制。我有代码将它粘贴到A列的第一个空行,但它不能正常工作,如上所述。我会帮助你。

Sub y()
LastRowy = Sheets("Arkusz2").UsedRange.Rows.Count
lastCol = Sheets("Arkusz2").Cells(LastRowy, Columns.Count).End(xlToLeft).Column

Set targetRNg = Worksheets("Arkusz1").Range("A4")


With Excel.ThisWorkbook.Sheets("Arkusz2")
  colCount = Arkusz2.UsedRange.Rows(LastRowy).Columns.Count
End With
MsgBox colCount
If colCount > 10 Then GoTo Line1 Else GoTo Line2

Line1:

With Excel.ThisWorkbook.Sheets("Arkusz2")
    Set destRng = .Cells(LastRowy, .Columns.Count).End(Excel.xlToLeft).Offset(0, 1).Resize(targetRNg.Rows.Count, targetRNg.Columns.Count)
    destRng.Value = targetRNg.Value

End With

1 个答案:

答案 0 :(得分:0)

我会避免使用像Goto Line 2这样的陈述 相反,读取excel并找出需要复制多少个单元格并创建一个循环以重复多次。

以下陈述对我来说不正确:

colCount = Arkusz2.UsedRange.Rows(LastRowy).Columns.Count

您可以使用以下函数访问所需的行并相应地读取/设置值

Function fn_GetLastColumn(ByVal sSheetName As String, ByVal iRow As Integer) As Integer
    Dim sht As Worksheet
    Set sht = ThisWorkbook.Sheets(sSheetName)
    fn_GetLastColumn = sht.Cells(iRow, sht.Columns.Count).End(xlToLeft).Column

End Function

Function fn_GetLastRow(ByVal SheetName As String, ByVal iColNo As Integer) As Integer
    Dim sht As Worksheet

    Set sht = ThisWorkbook.Sheets(SheetName)

    'Ctrl + Shift + End
    fn_GetLastRow = sht.Cells(sht.Rows.Count, iColNo).End(xlUp).Row

End Function
相关问题