excel - 无法使用目标复制将一个单元格复制到另一个单元格
问题描述
Range("A1").Copy (Range("E5"))
那失败了,但是如果我将目标范围明确定义为目标,如下所示,它可以工作。
Range("A1").Copy Destination:=Range("E5")
如果我为我的目的地提供工作表参考,如下所示,它也可以:
Range("A1").Copy (Worksheets("Sheet1).Range("E5"))
为什么最简单的形式,不起作用,给我
运行时错误 1004:“Range 类的复制方法失败”
反而?
解决方案
和...之间的不同
Range("A1").Copy (Range("E5"))
和
Range("A1").Copy Range("E5")
是第一个将ByRef
参数转换为ByVal
,而第二个没有。这里的括号代表转换,而不是您所期望的。
请注意,您只能在使用函数(返回值)时使用括号,而在使用过程时则不能。
例子
a = MyFunction(Parameter1, Parameter2) 'correct with parenthesis
MyProcedure Parameter1, Parameter2 'correct w/o parenthesis
a = MyFunction Parameter1, Parameter2 'it will error
MyProcedure(Parameter1, Parameter2) 'it will error
现在只有一个参数
a = MyFunction(Parameter1) 'correct with parenthesis
MyProcedure Parameter1 'correct w/o parenthesis
a = MyFunction Parameter1 'it will error
MyProcedure (Parameter1) 'it will NOT error but convert ByRef into ByVal !!!
上面示例的最后一行所做的事情与您预期的完全不同。您可以注意到过程名称和括号之间的额外空格。和下面的语法一样
a = MyFunction((Parameter1), (Parameter2)) 'convert ByRef into ByVal
MyProcedure (Parameter1), (Parameter2) 'convert ByRef into ByVal
所以我们可以记下:
- 如果函数返回一个我们想要写入变量的值:
您必须使用括号:a = MyFunction(Parameter1)
- 如果过程(或函数)不返回值,则:
不得使用括号:MyProcedure Parameter1
推荐阅读
- python - 图像被 tf.keras.preprocessing.image.save_img 损坏
- javascript - 如何使用获取数组的 Object 更新 useState 挂钩?用打字稿
- flutter - 如何在 dart/flutter 中连接到 ldap?
- amazon-web-services - 如何在 AWS 中存储产品目录
- javascript - 仅使用 Javascript 单击功能后打开子菜单
- c# - 如何创建具有不同事件的按钮
- mysql - 如何使用 Quarkus 从 testcontainer 中提取正确的 mysql
- html - 如何修复模糊的背景图像
- manim - Glib-GIO WARNING Unexpected, UWP app Problem
- summarize - 为什么我的打印输出只有一列?