Vba 试图将一个单元格连接到上面的单元格时出现对象必需错误

Vba 试图将一个单元格连接到上面的单元格时出现对象必需错误,vba,Vba,这是我试图运行的代码: Sub AppendToCellAbove() Dim Above As Range Set Above = ActiveCell.Offset(-1) With Above Above.Value = cell.Value & " " & ActiveCell.Value End With End Sub 我对一些编码语言(Python和Java)有基本的了解,因此我非常感谢您对我的学习所作的任何解

这是我试图运行的代码:

Sub AppendToCellAbove()

Dim Above As Range

Set Above = ActiveCell.Offset(-1)

With Above
    Above.Value = cell.Value & " " & ActiveCell.Value
    End With
    

End Sub

我对一些编码语言(Python和Java)有基本的了解,因此我非常感谢您对我的学习所作的任何解释。

您缺少模块顶部的
选项Explicit
。把它放进去

Option Explicit

Sub AppendToCellAbove()

    Dim Above As Range
    Set Above = ActiveCell.Offset(-1)

    With Above
        Above.Value = cell.Value & " " & ActiveCell.Value
    End With
    
End Sub
现在代码停止编译,编译器抱怨
单元格
变量未声明

如果没有显式
选项
,VBA会当场将
单元格
声明为
变量/空
。因为它没有被分配到任何地方,所以当调用
.value
成员时,它仍然持有一个
Variant/Empty
值,此时VBA会说“稍等一分钟,该成员调用必须是一个对象才能有效”,并抛出一个只说“需要对象”的错误

它的意思是,您试图调用不包含对象引用的标识符上的成员

使用
Option Explicit
,您现在被迫声明所有使用的变量,未声明的标识符(和拼写错误!)成为编译时错误,比运行时错误更容易修复

这可能会修复它(注意
With
块是限定
.Value
-如果您明确限定上面的
.Value
,则不需要
With
块):


模块顶部缺少显式选项。把它放进去

Option Explicit

Sub AppendToCellAbove()

    Dim Above As Range
    Set Above = ActiveCell.Offset(-1)

    With Above
        Above.Value = cell.Value & " " & ActiveCell.Value
    End With
    
End Sub
现在代码停止编译,编译器抱怨
单元格
变量未声明

如果没有显式
选项
,VBA会当场将
单元格
声明为
变量/空
。因为它没有被分配到任何地方,所以当调用
.value
成员时,它仍然持有一个
Variant/Empty
值,此时VBA会说“稍等一分钟,该成员调用必须是一个对象才能有效”,并抛出一个只说“需要对象”的错误

它的意思是,您试图调用不包含对象引用的标识符上的成员

使用
Option Explicit
,您现在被迫声明所有使用的变量,未声明的标识符(和拼写错误!)成为编译时错误,比运行时错误更容易修复

这可能会修复它(注意
With
块是限定
.Value
-如果您明确限定上面的
.Value
,则不需要
With
块):


单元格。Value
应该在
上方。Value
不需要
单元格。Value
应该在
上方。Value
不需要
我知道我不应该发表评论(或者可能我搞错了?溢出指南说“请只发布答案,并将其中一个标记为已接受,不要评论”),但这是非常有用和彻底的。我真的很感激it@VBALearner谢谢!您可能也会发现它非常有用(例如,它的代码检查会对未声明的变量发出警告).干杯=)干杯-我会调查rubberduck。谢谢你,我知道我不应该发表评论(或者我可能弄错了?溢出指南说“请只发布答案,并将其中一个标记为已接受,不要发表评论”),但这非常有用和彻底。我真的很感激it@VBALearner谢谢!你可能也会觉得很有用(例如,它的代码检查会警告未声明的变量)。干杯=)干杯-我会调查rubberduck。再次感谢