2016-10-07 53 views
0

我试图实现的是从表“Arkusz1”中复制3个第一个单元格,并将它粘贴到“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 
+0

你在Excel或运行此这是一个VBScript吗? –

回答

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 
+0

嗨,你能解释一下在我的情况下如何使用它? – eurano

+0

不知道你到底想要做什么,它有点困难。但是,根据源数据(在Arkusz1中是固定的还是可变的),我将从源读取数据到变量中(直接从硬编码的单元格中查找数据,然后将其读入变量中)。 然后, iLastCol = fn_GetLastColumn(“Arkusz2”,1)将会给我最后一个空列(假设非空列在第1行数据。 我使用ThisWorkbook.Sheets复制值(“Arkusz2”) .Cells(1,iLastCol)= varSourceValue1 – Yogesh

+0

嗨,谢谢你。经过一段时间,我已经设法正确地使用你的功能并实现了目标。 – eurano

相关问题