excel - 尝试更新现有文本框,但收到“需要对象”错误
问题描述
我录制了一个宏,开始更新文本框。不幸的是,如您所知,录制宏不会设置变量。
录制的宏显示:
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(Array("TextBox 8"))
为Set shapes = shapes.Range(Array("TextBox 8"))
,但我仍然收到 Object Required 错误。
请问我需要改什么?
解决方案
Set
在进行对象分配时使用。
形状从来没有资格。
形状 = 形状。范围(数组(“文本框 8”))
shapes.Range(Array("TextBox 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
只需要在对 Shape 进行分组时使用 ShapeRange。
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 返回一个 Objects 类型。
确保在使用 ClassName 或标准属性名称时匹配大小写。吨
变暗的形状
推荐阅读
- c# - Blazor:如果我在 Visual Studio 2019 中设置断点,为什么不会同时触发 onchange 和 onblur 事件?
- c# - 拆分 csv 文件,其中分隔符也出现在文本中
- javascript - Vue.js 在组件渲染后将点击事件绑定到 v-html 内的锚元素
- javascript - 这个动画叫什么?
- sql - SQL 查询以获取以折扣价出售的商品的每个类别的每月销售数据
- reactjs - reactjs这行代码是什么意思?
- javascript - 从 woocommerce_add_to_cart_fragments 传回的 Woocommerce 错误片段
- node.js - NodeJS:异步等待的产品颜色模型问题
- rust - 我的网络之外的主机响应我的 SYN 数据包
- laravel - 如何将集合合并到laravel中的特定列中