首先,我对 VBA 和一般编码非常陌生。如果您能解释一下代码的作用,我将非常感激。我不打算经常使用 VBA,如果我再次查看代码,可能会迷失方向。
我正在尝试创建一个交互式雨水计算 Excel 工作簿,它将根据下拉列表取消隐藏某些工作表。我为不同的雨水控制(沉积物收集器、沉积池、湿池塘、洼地等)创建了 Excel 模板。理想情况下,所有这些都将被隐藏,当用户从下拉列表中选择他们想要使用的控制措施时,该工作表将变得可见。
我只是不知道解决这个问题的最佳方法。在我的脑海中,我想象出一些类似的东西(我知道这是一个非常糟糕的代码)
For Each cell in Range("C10:C15")
If Cell.Value = text then
Worksheets(Cell.Value).Visible = True
然后我碰壁了,不知道该怎么办。我希望代码从 C10:C15 读取每个单元格中的值并打开
具有相同名称的工作表。
我走在正确的道路上吗?将工作表名称放入数组中会使代码更容易吗?
如果用户返回并从下拉列表中取消选择工作表,如何重新隐藏该工作表?可以内置隐藏功能吗?
If a sheet within array {Sediment Trap, Sediment Basin, Wet Pond, Swale} is not selected in C10:c15 then
worksheets(Not_in_C10:C15).Visible = false
Sub Demo()
Dim c as range, oDic As Object, Sht As Object
Set oDic = CreateObject("scripting.dictionary")
For Each c in Range("C10:C15")
Thisworkbook.Worksheets(c.Value).Visible = True
oDic(c.Value) = ""
Next
For Each Sht in Thisworkbook.Sheets
If Not oDic.exists(Sht.Name) Then Sht.Visible = False
Next
End Sub