VBA中Range变量赋值异常咨询:为何变量变为单元格文本?
VBA中Range变量赋值后变成单元格值而非对象的问题解决
这是因为你给Range类型变量赋值时没使用Set关键字——VBA里所有对象类型(包括Range、Worksheet这类)的赋值都必须用Set,直接用=的话,会自动取对象的默认属性值赋值给变量。
Range对象的默认属性是Value,所以你写A = Cells(1,1)时,实际是把Cells(1,1).Value(也就是单元格里的"BB")赋给了变量,哪怕你声明A是Range类型,也会被强制转换成值类型。
修正后的正确代码:
Dim A As Range Set A = Cells(1, 1) ' 用Set关键字赋值Range对象本身
这样变量A就会指向Range("A1")这个对象,之后你可以通过它操作单元格,比如A.ClearContents或者取A.Value拿到"BB"。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

