我想知道如何定义一个范围,以便从 C5
定义一直到列的最后一个值。 C5
是一个常量,但列表的末尾不是。
Sub Merge()
Worksheets("Sub").Range("C5").End(xlToLeft).Select.copy
Worksheets("Master Worksheet").Range("A1:A23").PasteSpecial Paste:=xlPasteValues
End Sub
我得到一个超出范围错误的下标。任何指导都会非常好。
答案 0 :(得分:3)
您不必复制和粘贴特殊值。直接传输值并避免使用剪贴板。
这可能会使用一个或两个变量赋值来清理代码。
With Worksheets("Sub")
Worksheets("Master Worksheet").Range("A1") _
.Resize(.Range(.Cells(5, 3), .Cells(5, Columns.Count).End(xlToLeft)).Columns.Count, 1) = _
Application.Transpose(.Range(.Cells(5, 3), .Cells(5, Columns.Count).End(xlToLeft)).Value)
End With
Range(Cells, Cells.End)
类型的小区范围参考时,请确保Range.Cells property内的Range object知道他们的Range .Parent property是什么。在这种情况下,我使用With...End With statement并在.Cells
前加上句点(又名句号),以便他们知道它们属于Worksheets("Sub")
Application.Transpose
将值列翻转为行。答案 1 :(得分:1)
你可以这样做:Worksheets("Sub").Range(Cells(5,3),Cells(5,Cells(5,3).End(xltoLeft).column)).Select
这将从单元格C5(又名单元格(5,3))开始,然后向左移动。
编辑:正如Jeeped指出的那样,做起来可能会更好:
With Worksheets("Sub")
.Range(.Cells(5,3),.Cells(5,.Cells(5,3).End(xlToLeft).Column)).Select
End With