任务:我想复制几个单元格在一行(13时刻),可能包含一些空白。我想将这些值粘贴到列中的13行中。嵌套的循环不能按预期工作
尝试次数:我还没有碰到.Pastespecial , Paste:=xlPasteValues, SkipBlanks:=True, Transpose:= True
。
当前方法:我想使用FOR循环来验证和传输。
Dim j As Long, I As Long
For j = 3 To 16
If Not IsEmpty(Cells(aCell.Row, j)) Then
For i = 16 To 33
oSht.Cells(i, 4).Value = Cells(aCell.Row, j).Value
Next i
End If
Next j
问题:但是这个代码是从Cells(aCell.Row, j).
采取最后一个非空单元格和oSht.Cells(i, 4)
显示它的i
所有值。
请求:我想确定什么是我的FOR循环错误或者是否有更简单的方法来复制几个单元格并粘贴所有非空单元格。
你可以尝试做'oSht.Range(oSht.Cells(16,4),oSht.Cells(33,4))值=细胞(。 aCell.Row,J).Value'? (另外,我强烈建议在'Cells(aCell.Row,...)之前放置另一个表名,以便明确表示该值为何。 – BruceWayne
谢谢@BruceWayne,该建议没有产生任何错误,但它没有在上一篇文章中,我发现用“aCell”定义WB和WS会导致编译器错误。如果我错了,请纠正错误,但由于aCell是一个已定义的单元格,所以对工作簿和工作表的引用是已经存在 –
是的,但是'Cells(aCell.Row,j)'不是完全作用域的,VBA会将它读作'Cells(#,j)',它已经定义了aCell的行但是不级联所以它寻找一个单元格,但是你还没有定义什么范围的单元格,所以它会假定当前具有焦点的单元格。如果你不是在表单之间切换,但是没有像你那样严格 – nbayly