我得到了一个古老但大多数情况下都可以使用的Excel解决方案。
它使用了许多DialogSheets(UserForms之前的Excel 5/95技术)。

现在,我试图弄清楚作者想要做什么,代码太可怕了。我偶然发现的一个问题是:

某些工作表可以很好地与以下代码配合使用:

DialogSheets("Name1").Show
DialogSheets("Name1").Labels.Visible = True
DialogSheets("Name1").EditBoxes.Visible = True
DialogSheets("Name1").CheckBoxes.Visible = True
DialogSheets("Name1").DropDowns.Visible = True


在其他方面,我得到:


运行时错误1004“无法设置Labels类的Visible属性”


我不能完全解决区别,并且Dialogsheets上的文档很少。如果有人有任何想法,我将不胜感激。

更新资料

答案表明某些DialogSheets可能没有标签,因此抛出了1004。情况并非如此。这发生在InstantWindow中:

?DialogSheets("Name1").Labels.Count
205
?DialogSheets("Name2").Labels.Count
7
DialogSheets("Name1").Labels.Visible = True ' Throws 1004
DialogSheets("Name2").Labels.Visible = True ' executes fine
?DialogSheets("Name2").Labels.Visible = True ' returns true
True

最佳答案

上面的代码将Labels,DropDowns,EditBoxes和CheckBoxes的可见性设置为True

它将引发错误1004,因为在某些DialogSheets上缺少Labels,DropDowns,EditBoxes或CheckBoxes。它适用于所有四个都存在的那些。



要使其正常运行,请关闭所有Excel应用程序。然后打开一个全新的代码并运行以下代码:

Sub TestMe()

    Dim someDialogSheet As DialogSheet
    Set someDialogSheet = ThisWorkbook.Sheets.Add(Type:=xlDialogSheet)

    With someDialogSheet
        .Name = "SoReadyToHelp"
        .Labels.Add(5, 5, 5, 5).Select
        .DropDowns.Add(10, 10, 10, 10).Select
        .CheckBoxes.Add(15, 15, 15, 15).Select
        Debug.Print .Labels.Visible
        Debug.Print .CheckBoxes.Visible
        Debug.Print .DropDowns.Visible
        .Show
    End With

End Sub




或者,在代码上某处可以使用On Error Resume Next

07-26 04:48