VBA中如何将变量值存入地址变量对应的目标单元格?
解决VBA中"Object required"错误的方案
错误根源
你把目标单元格的地址存在了字符串变量EE里,但字符串类型本身没有.Value属性,直接调用EE.Value自然会触发"对象缺失"错误——VBA需要的是Range对象,而不是一个纯文本地址。
修正方案一:把字符串地址转为Range对象操作
直接修改代码最后一行,将字符串地址传入Range()函数生成对象后再赋值,同时可以省去中转单元格P20的步骤:
Public Sub Upgrade_Click() Dim UEquip As Variant Dim EE As String EE = Intersect(Selection.EntireRow, Range("E1").EntireColumn).Address '直接将用户输入赋值到目标单元格,无需中转P20 Range(EE).Value = Phone_Upgrade_Form.UEquip End Sub
修正方案二:直接存储Range对象(更推荐)
没必要先存地址字符串,直接把EE定义为Range类型,用Set语句绑定单元格对象,操作更高效还能避免地址转换问题:
Public Sub Upgrade_Click() Dim UEquip As Variant Dim EE As Range '改为Range类型 '用Set绑定Intersect返回的单元格对象 Set EE = Intersect(Selection.EntireRow, Range("E1").EntireColumn) '增加判断,避免选中无效区域时出错 If Not EE Is Nothing Then EE.Value = Phone_Upgrade_Form.UEquip End If End Sub
内容的提问来源于stack exchange,提问作者Alienjester
相关产品推荐
相关产品推荐

