Excel 试图更新现有的文本框,但得到一个“";“所需对象”;错误
我录制了一个宏,以开始更新文本框。不幸的是,正如您所知,录制宏不会设置变量 录制的宏显示:Excel 试图更新现有的文本框,但得到一个“";“所需对象”;错误,excel,vba,Excel,Vba,我录制了一个宏,以开始更新文本框。不幸的是,正如您所知,录制宏不会设置变量 录制的宏显示: ActiveSheet.shapes.Range(Array("TextBox 8")).Select Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _ "Kroger Market 6 " & Chr(13) & "W/E P8 Week 4"
ActiveSheet.shapes.Range(Array("TextBox 8")).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"Kroger Market 6 " & Chr(13) & "W/E P8 Week 4" & Chr(13) & "9/23/2020"
我尝试将其调整为:
With wsWeeklyDivision
Dim EndDate As String
EndDate = Left(Right(.Range("A4"), 24), 23)
End With
With wsFront
Dim shapes As Variant
shapes = shapes.Range(Array("TextBox 8"))
With shapes
.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"Kroger Market 6 " & Chr(13) & "Date Range" & Chr(13) & Format(Now(), "MM.DD.YY")
End With
End With
我甚至将shapes=shapes.Range(数组(“TextBox 8”))
更改为Set shapes=shapes.Range(数组(“TextBox 8”))
,但我仍然得到一个对象所需的错误
我需要更改什么?在进行对象指定时使用
设置
形状从未被限定
shapes=shapes.Range(数组(“文本框8”))
shapes.Range(数组(“文本框8”))
返回一个ShapeRange
With wsFront
Dim ShapeRange As ShapeRange
Set ShapeRange = .Shapes.Range(Array("TextBox 8"))
Dim TextBox8 As Shape
Set TextBox8 = ShapeRange.Item(1)
With TextBox8.TextFrame2.TextRange.Characters
.Text = "Kroger Market 6 " & Chr(13) & "Date Range" & Chr(13) & Format(Now(), "MM.DD.YY")
End With
End With
仅当形状分组时,才需要使用形状标记
With wsFront
Dim TextBox8 As Shape
Set TextBox8 = .Shapes("TextBox 8")
With TextBox8.TextFrame2.TextRange.Characters
.Text = "Kroger Market 6 " & Chr(13) & "Date Range" & Chr(13) & Format(Now(), "MM.DD.YY")
End With
End With
使用正确的类型声明变量可以更容易地编写代码。可以使用TypeName返回对象类型
使用类名或标准属性名时,请确保大小写匹配。T
将形状变暗为变体在进行对象指定时使用
设置
形状从未被限定
shapes=shapes.Range(数组(“文本框8”))
shapes.Range(数组(“文本框8”))
返回一个ShapeRange
With wsFront
Dim ShapeRange As ShapeRange
Set ShapeRange = .Shapes.Range(Array("TextBox 8"))
Dim TextBox8 As Shape
Set TextBox8 = ShapeRange.Item(1)
With TextBox8.TextFrame2.TextRange.Characters
.Text = "Kroger Market 6 " & Chr(13) & "Date Range" & Chr(13) & Format(Now(), "MM.DD.YY")
End With
End With
仅当形状分组时,才需要使用形状标记
With wsFront
Dim TextBox8 As Shape
Set TextBox8 = .Shapes("TextBox 8")
With TextBox8.TextFrame2.TextRange.Characters
.Text = "Kroger Market 6 " & Chr(13) & "Date Range" & Chr(13) & Format(Now(), "MM.DD.YY")
End With
End With
使用正确的类型声明变量可以更容易地编写代码。可以使用TypeName返回对象类型
使用类名或标准属性名时,请确保大小写匹配。T
将形状变暗为变量
设置形状=activesheet.Shapes(“文本框8”)
?和将形状变暗为形状
。使用名为形状
的变量可能会导致问题,因为形状
已经是内置集合。设置形状=活动表。形状(“文本框8”)
?和将形状变暗为形状
。使用名为形状
的变量可能会导致问题,因为形状
已经是一个内置集合。在第二个示例中,分配TextBox8
时缺少集
。除此之外,很好的回答指出了形状
和形状
@FunThomas谢谢@铁皮人谢谢!我确实尝试过使用Set
,但你是对的,我将形状
声明为形状
,而不是形状
。感谢您提供有关使用TypeName
返回对象类型的提示。我以后肯定会用这个!但是,您是如何知道使用项目(1)
来塑形的?我想我对如何确定形状是否分组感到困惑,特别是因为录制的宏声明TextBox 8
是一个数组..@CDay血汗岁月.Range()
表示它将返回一个很可能是一组值的值范围。将Array()
传递到Shapes.Range()
对象中,意味着您将获得这些命名形状的集合。项目也是任何收集的标准方法。类似地,工作表(Array())
将返回工作表的集合
@CDay您还可以通过名称引用ShapeRange集合中的特定形状。Fo示例:wsFront.Shapes.Range(数组(“文本框8”、“文本框9”))).Item(“文本框8”)
在分配TextBox8
时,您在第二个示例中缺少一个集。除此之外,很好的回答指出了形状
和形状
@FunThomas谢谢@铁皮人谢谢!我确实尝试过使用Set
,但你是对的,我将形状
声明为形状
,而不是形状
。感谢您提供有关使用TypeName
返回对象类型的提示。我以后肯定会用这个!但是,您是如何知道使用项目(1)
来塑形的?我想我对如何确定形状是否分组感到困惑,特别是因为录制的宏声明TextBox 8
是一个数组..@CDay血汗岁月.Range()
表示它将返回一个很可能是一组值的值范围。将Array()
传递到Shapes.Range()
对象中,意味着您将获得这些命名形状的集合。项目也是任何收集的标准方法。类似地,工作表(Array())
将返回工作表的集合
@CDay您还可以通过名称引用ShapeRange集合中的特定形状。Fo示例:wsFront.Shapes.Range(数组(“文本框8”、“文本框9”))).Item(“文本框8”)