如何在Excel VBA的Range方法地址参数中使用变量
Range方法使用变量的错误原因与解决方法
你代码报错的核心原因是变量被放在双引号内部,VBA不会解析双引号里的变量名,只会把它当成普通文本处理:你写的Range("C:value")实际会被识别为查找C列到名为"value"的列,不存在对应范围就会触发报错。
修复方式
将报错行的代码调整为以下写法,用&符号把固定字符串和变量拼接即可:
ThisWorkbook.Worksheets("Arkusz1").Range("C:" & value).Select
代码优化建议
VBA中尽量不要使用Select、Activate这类方法,直接操作单元格对象可以大幅提升运行效率,同时避免激活状态异常导致的报错,另外不建议用value作为变量名,避免和Range对象自带的Value属性混淆,优化后的完整代码参考:
Sub Makro1() Dim colValue As String With ThisWorkbook.Sheets("Arkusz1") colValue = .Range("R3").Value ' 直接赋值等效于粘贴值操作,不需要复制粘贴步骤 .Range("C:" & colValue).Value = .Range("C:" & colValue).Value End With End Sub
内容的提问来源于stack exchange,提问作者mean
相关产品推荐
相关产品推荐

