设置用户窗体时,Excel 在运行时识别错误的对象

问题描述 投票:0回答:0

我有这段代码初始化一个用户表单。它有时会使 Excel 崩溃(有时它不会崩溃:|)。经过一段时间的狩猎,归结为这一行

Private Sub UserForm_Activate()
EntryFormInitialization
End Sub

Public Sub OpenEntryForm()
If entrySh Is Nothing Then Set entrySh = Sheets("Data Entry")
ResetFormulaSheet (False)
If Not CheckShapeExist(picNameDefault) Then InsertDoc
entrySh.Shapes("Cover").OnAction = ""
entrySh.Shapes("Cover").Visible = msoCTrue
entrySh.Shapes("Cover").ZOrder msoBringToFront
entrySh.Shapes(picNameDefault).ZOrder msoBringToFront
Sheets("Data Entry").ScrollArea = ""
EntryForm.Show
ResizeEntryForm
End Sub

Sub EntryFormInitialization
'more codes
    Debug.Print TypeName(EntryForm.FrameGoods) 'Return CommandButton in the 2nd image.
    With EntryForm.FrameGoods 'Code stopped here in screenshot.
    .ScrollBars = fmScrollBarsVertical 'Crashes here
    .ScrollHeight = .InsideHeight * 8.5
    .ScrollWidth = .InsideWidth * 9
    End With
'more codes
End Sub

事实证明,对象

EntryForm.FrameGoods
在运行时被识别为命令按钮。我不知道为什么会发生这种情况,因为它是手动绘制的控件。这已经拖了我两天的时间了。我可以列出我尝试过的事情,但其中大多数听起来都很愚蠢,因为它显然行不通,但我却束手无策。这种情况我能做什么?

excel vba controls runtime userform
© www.soinside.com 2019 - 2024. All rights reserved.