这是较大代码的一部分,但是此代码段无效。我试图将两个像元设置为彼此相等,但是它不起作用。当我使用.Range(“ v1_copy”)时,代码运行,但是当我命名该范围并将其放置为变量(myCopyRange)时,代码无法运行,并且出现错误:编译错误:方法或数据找不到成员。任何帮助,将不胜感激!

Sub copy_paste_test()

Dim myCopyRange As Range
Dim myPasteRange As Range
Dim myWS1 As Worksheet
Dim myWS2 As Worksheet

Set myWS1 = Sheets("Sheet1")
Set myWS2 = Sheets("Sheet2")

myCopyRange = Range("v1_copy")
myPasteRange = Range("v1_paste")

'myWS2.Range("v1_paste").Value = myWS1.Range("v1_copy").Value
' This line works, but the below line doesn't
 myWS2.myPasteRange.Value = myWS1.myCopyRange.Value
' This should be the exact same, just substituting the variable, but doesn't work

End Sub

最佳答案

您没有为SetRangemyCopyRange对象引用分配分配myPasteRange关键字。

但是,对于检索命名范围,如果您想要完全明确的代码执行所说的内容并说出所做的事情,那么最好的方法是从适当的Name集合中取消引用Names

如果名称是工作簿范围的名称,请使用Workbook对象-这里是book对象变量,但根据需要ActiveWorkbookThisWorkbook也可以工作:

Set myRange = book.Names("name").RefersToRange


如果名称是工作表范围的名称,请使用Worksheet对象-这里是sheet对象变量进行限定,但是ActiveSheet同样适用:

Set myRange = sheet.Names("name").RefersToRange


这样,如果重命名工作簿或用户更改工作表的“选项卡名称”,则代码不会中断。只要名称存在于查询的Names集合中,它就不会中断。




'myWS2.Range("v1_paste").Value = myWS1.Range("v1_copy").Value
' This line works, but the below line doesn't
 myWS2.myPasteRange.Value = myWS1.myCopyRange.Value
' This should be the exact same, just substituting the variable, but doesn't work



这应该是完全相同的-不。 myWS1.myCopyRange是非法的:myWS1Worksheet对象:Worksheet接口没有myCopyRange成员,因此未找到方法或数据成员。

由于myCopyRangeRange对象,因此它知道其所属的ParentWorksheet:不需要限定它……也不需要再次取消引用它-这足够了:

myPasteRange.Value = myCopyRange.Value

07-26 02:01