我正在运行具有定义范围的函数,并尝试使用End。(xlDown).Select。我收到一条消息“ Range类的选择方法失败”。
我已经编辑了下面的代码,以仅显示问题片段。经过几乎两个小时的尝试,我无法正常工作。
烦人的部分是我必须使用定义的范围,因为该函数是更大的Sub的一部分,一旦使用Select和Activate,它就无法按预期工作。
Function OutputFunction()
Dim rng8 As Range
Set rng8 = ThisWorkbook.Worksheets(5).Range("A2")
rng1.ClearContents 'Works like a charm.
rng2.Copy 'No problem here either.
rng8.End(xlDown).Select 'Fails misserably.
ActiveCell.Offset(0, 13).Select
Range(Selection, Range("N3")).Select
ActiveSheet.Paste
答案 0 :(得分:0)
尝试:
Option Explicit
Sub test()
Dim rng8 As Range
'Have in mind that you refer to a sheet based on it s index, NOT with its name!
'If sheets order change you will refer to another sheet
With ThisWorkbook.Worksheets(5)
Set rng8 = .Range("A2")
rng8.Select
.Range(rng8, rng8.End(xlDown)).Select
End With
End Sub
答案 1 :(得分:0)
rng2.Copy destination:= rng8.parent.range(rng8.End(xlDown).Offset(0, 13), rng8.parent.Range("N3"))
“经过几乎两个小时的尝试,我无法正常工作。”
Excel宏的第一条规则:永远不要在Excel宏中使用SELECT。
Excel宏的第二条规则:不要在Excel宏中使用“选择”
第三个.....
答案 2 :(得分:0)
尝试在我的个人宏中使用 End(xlDown).Select
。首先,我在我编写宏的原始 excel 文件中对此进行了测试,并且它在每个步骤中都运行良好。但是当我在另一个文件中使用它时出现了问题。
经过一些测试后,我将 .Select
更改为 .Activate
并且它起作用了。我不能 100% 确定我们是否在同一页面上讨论,所以请告诉我这是否解决了您的问题,以便我改进我的答案。