VBA运行时错误'91':对象变量或With块变量未设置求助
解决VBA运行时错误'91':对象变量或With块变量未设置
错误原因分析
你遇到的Run-time error '91'核心问题出在变量类型不匹配+对象变量未正确初始化:
- 变量定义错误:
Dim Total_data, Row1, Row2, Row3 As Range中,只有Row3被声明为Range对象,Row1、Row2实际是Variant类型,但你在代码里把它们赋值为单元格地址字符串(比如Row1 = "G" & NEWROW3),这不仅类型不匹配,还因为如果是对象类型,必须用Set关键字赋值,直接赋值字符串会导致对象未初始化。 - 另外,
Dim NEWROW2, NEWROW3, NEWROW4, NEWROW5, NEWROW6 As Integer存在语法问题:VBA中这种声明方式只有最后一个变量是Integer,前几个都是Variant,建议明确每个变量的类型。
修正后的代码
第一步:修正变量声明
把Row1、Row2、Row3声明为字符串类型(因为你只是用它们存储单元格地址),同时明确行号变量的类型:
Dim NEWROW2 As Integer, NEWROW3 As Integer, NEWROW4 As Integer, NEWROW5 As Integer, NEWROW6 As Integer Dim Total_data As Range Dim Row1 As String, Row2 As String, Row3 As String
第二步:保留原有逻辑(字符串赋值无需修改)
原代码中对Row1、Row2、Row3的赋值逻辑是正确的,因为它们现在是字符串类型:
NEWROW2 = SHT1.Range("L" & Rows.Count).End(xlUp).Row NEWROW3 = SHT1.Range("G" & Rows.Count).End(xlUp).Row + 1 Row1 = "G" & NEWROW3 Row2 = "G" & NEWROW2 Row3 = Row1 & ":" & Row2 SHT1.Range("A1").Value = Row2 SHT1.Range(Row3).Value = TherapyNameRe
额外注意事项
- 确保
SHT1是已正确初始化的工作表对象(比如Set SHT1 = ThisWorkbook.Worksheets("Sheet1")),如果SHT1未设置,也会触发同样的91错误。 - 确保
TherapyNameRe变量已正确定义并赋值,避免后续出现其他错误。
内容的提问来源于stack exchange,提问作者Ashu Raj
相关产品推荐
相关产品推荐

