我有一个具有100多个HTML文本框的excel,需要更新其控件值以匹配单元格引用。我收到运行时错误1004,应用程序或对象定义的错误。
我尝试了以下所有组合均无济于事。
来自的测试2和3https://www.pcreview.co.uk/threads/addressing-htmltext-object-in-spreadsheet-vba-script.4014065/
Sub test()
'test1
Dim TB As OLEObject
'test2
'Dim TB As TextBox
'test3
'Dim TB As msforms.TextBox
Set TB = ActiveSheet.TextBoxes(HTMLText99)
'Set TB = ActiveSheet.OLEObjects(HTMLText99)
TB.Value = ActiveSheet.Cells(5, 7)
'TB.Text = ActiveSheet.Cells(5, 7)
'TB.Object.Value = ActiveSheet.Cells(5, 7)
'TB.Object.Text = ActiveSheet.Cells(5, 7)
End Sub
有趣的是,如果我只是执行一个简单的代码(请参见下文),则HTML框的可见值会按预期变化,但是一旦我在开发人员标签中点击“详细信息视图”,该可见值就会恢复为控制值,我可以在HTML文本框中打开属性时看到。
ActiveSheet.HTMLText99.Value = ActiveSheet.Cells(5, 7)
尚不清楚对象的命名方式,但这可能会给您一些想法:
Dim o, i As Long
For Each o In ActiveSheet.OLEObjects
If TypeName(o.Object) = "HTMLText" Then
Debug.Print o.TopLeftCell.Address, o.Name, _
o.Object.HTMLName, o.Object.Value
End If
Next o
仅供参考,控件的“运行时”和“设计时”属性之间存在差异:如果对文本框进行更改,则在工作表上进入“设计”模式时,它将恢复原状。