我得到了一个古老但大多数情况下都可以使用的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
。