我想要实现的是从片材中复制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
答案 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