2016-10-07 92 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

相關問題