gpt4 book ai didi

vba - 以编程方式将文本添加到现有用户窗体时出错

转载 作者:行者123 更新时间:2023-12-04 20:42:06 25 4
gpt4 key购买 nike

我想向预先存在的用户表单添加一个文本框,并在 VBA Excel 2010 中更改用户表单的高度。我想添加文本框,并在设计时更改高度,但我需要使用代码.以下代码是我到目前为止所拥有的。

Sub Practice()
Dim hght As Single
Dim NameUserForm As String
Dim MyUserForm As Object

'Name of userform
NameUserForm = "test"

Set MyUserForm = ThisWorkbook.VBProject _
.VBComponents(NameUserForm)

hght = MyUserForm.Properties("Height")

With MyUserForm

.Properties("Height") = hght + 25

End With

Set NewTextBox = MyUserForm.Designer.Controls.Add("Forms.TextBox.1")

With NewTextBox
.TextAlign = fmTextAlignCenter
.Width = 66
.Height = 18
.Left = 40
.Top = hght
End With
test.Show

End Sub

我在以下行收到错误
Set NewTextBox = MyUserForm.Designer.Controls.Add("Forms.TextBox.1")

错误内容如下:

Run-time error '-2147319767 (80028029)' Invalid forward reference, or reference to uncompiled type.



我不知道我做错了什么。我也在 mrexcel.com 上问过同样的问题,这里有一个链接到那个 http://www.mrexcel.com/forum/excel-questions/861582-use-visual-basic-applications-add-textbox-existing-userform.html

最佳答案

我知道这是一个旧线程,但我也遇到了这个错误。令人困惑的是,该错误不会让您知道发生了什么。在我的场景中,我以编程方式添加数据透视图。奇怪的是,我知道工作代码。我正在一个不相关的区域进行更新,我的工作代码开始显示此错误。我不知道发生了什么,所以我开始单步调试连接对象。最终,我在枚举 ListObjects 时重现了这个错误。

Sub ViewListObjectsWithQueryTables()
Dim sh, itm
For Each sh In ActiveWorkbook.Sheets
Dim i
i = 1
Do While i <= sh.ListObjects.Count
itm = sh.ListObjects.Item(i)
If sh.ListObjects.Item(i).SourceType = xlSrcQuery Then
itm = sh.ListObjects.Item(i)
End If
i = i + 1
Loop
Next
End Sub

在...处换行
i = i +1

...并检查值。

事实证明,当我点击一个特定的工作表并尝试读取 ListObjects.Count 时,我会收到错误消息。它与我自己的代码无关。

分辨率
  • 删除 horked 电子表格
  • 重新创建

  • 这解决了我的问题。并且可能解释了为什么@Jonny Oliver 能够修复,但不知道为什么。工作表处于僵硬状态。可能在他的故障排除期间,幕后的引用资料可能已经改变。至于他的代码,似乎没有任何理由说明他的原始代码与修改后的代码有任何不同。

    希望这可以帮助。

    关于vba - 以编程方式将文本添加到现有用户窗体时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30852834/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com