Excel 错误1004 VBA:如何设置单元格范围内形状的文本

Excel 错误1004 VBA:如何设置单元格范围内形状的文本,excel,vba,Excel,Vba,我想设置单元格范围内形状的文本 在下面的代码中,我在我的activesheet中循环浏览形状,如果给定的范围masqueA与topleftcell相交,则选择此形状并设置此选择的文本 Sub numShape() Dim masqueA As Range Set masqueA = Range("b33:l42") cpt = 1 For Each shapeTemp In ActiveSheet.Shapes If Not Intersect(Range("masqueA"), s

我想设置单元格范围内形状的文本
在下面的代码中,我在我的
activesheet
中循环浏览形状,如果给定的范围
masqueA
topleftcell
相交,则
选择此形状并设置此
选择的文本

Sub numShape()

Dim masqueA As Range
Set masqueA = Range("b33:l42")
cpt = 1

For Each shapeTemp In ActiveSheet.Shapes
    If Not Intersect(Range("masqueA"), shapeTemp.TopLeftCell) Is Nothing Then
        shapeTemp.Select
        Selection.TextFrame.Characters.Text = "cpt"
        cpt = cpt + 1
    End If
Next shapeTemp

End Sub
但是我有一个错误:
运行时错误'1004':应用程序定义的错误或对象定义的错误

是否有人能向我解释我为什么会有这个错误以及如何修复它。 顺便问一下,我的代码正在做我想做的事情吗


谢谢

masqueA
是一个范围,而不是定义的名称。如果要按名称引用范围,请使用
range(“b33:l42”).name=“masqueA”
range(“masqueA”)
原样使用
Intersect(masqueA,shapeTemp.TopLeftCell)

Sub numShape()

    Dim masqueA As Range
    Set masqueA = Range("b33:l42")
    cpt = 1

    For Each shapeTemp In ActiveSheet.Shapes
        If Not Intersect(masqueA, shapeTemp.TopLeftCell) Is Nothing Then
            shapeTemp.TextFrame.Characters.Text = "cpt"
            cpt = cpt + 1
        End If
    Next shapeTemp

End Sub

我明白你的意思,我按照你的建议做了改变。但是我仍然有同样的错误,我不知道发生了什么。没有理由选择该形状。我修改了我的答案。如果您将工作簿链接到我,我将查看它。感谢您删除
选择
:)请始终告诉我们产生错误的行。有几十种可能会发生这种错误。不得不猜测并不能让人们更容易回答。也就是说,
cpt
的目的是什么?你想让每个形状都准确地表示cpt,还是希望它们表示“1”、“2”、“3”…
?是的,我确实希望形状表示1,2,3。。。它确实显示了错误产生的位置,或者我不知道在哪里查看。在这种情况下,您需要执行
Selection.TextFrame.Characters.Text=“”&cpt&
(如果您希望引号显示,则每个引号有4个。否则它只是
。Text=cpt
)。关于错误,这有点让人困惑。编译项目(从调试菜单)时会发生什么情况?@Inarion我终于解决了我的问题。我在错误的工作表中执行此操作。谢谢你抽出时间!