如何根据表单控件组合框中的选择更改 Excel 工作表?

How do I alter an excel sheet depending on selection in form control combo box?

提问人:aviato 提问时间:9/6/2023 更新时间:9/6/2023 访问量:29

问:

因此,我想要的是让我的工作表以不同的方式显示,具体取决于我在格式控件组合框下拉列表中选择的 3 个选项中的哪一个。

例如,选择 1 将包含文本框和其他下拉列表的一种布局,选择 2 将具有自己的布局,选择 3 将包含自己的布局。

我目前能想到的方法是让脚本取消隐藏包含不同布局的单元格,即在选择 1 时显示布局为 1 的单元格,在选择 2 时显示包含布局 2 的其他单元格,依此类推。或者,我只能想到让VBA代码删除工作表中的所有内容,并在每次更改组合框中的选择时使用所需的布局重新构建它。这两个选项感觉它们很快就会变得滞后,因为我在各自的设置中添加了更多东西,更何况我真的想不出其他选项(让我们假装每个布局都有单独的工作表不是一个选项)。

有没有人知道更好的方法,如果有,如何?

如果不是,如果我们考虑到在单独的布局中会有相当多的文本框、格式控件和设计,那么最好使用其中哪一个?

最后,当我在组合框中选择不同的选项时,我如何实际让它工作,目前由于某种原因,我无法让我的VBA代码工作以实际执行操作?

到目前为止,我的代码看起来像

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    

   If ws.DropDowns(2) = "Option1" Then
       ws.Rows(rowVal & ":" & .Rows.Count).Delete
   End If
End Sub

这显然只是一个测试,看看在更改组合框中的值时,我是否可以让它从第 45 行开始清除单元格,但即使这样也不起作用。

VBA Excel-2010

评论

1赞 Tim Williams 9/6/2023
您使用的是哪种下拉列表(Forms/ActiveX/Data Validation)?您的下拉列表是否链接到单元格?代码是否在工作表代码模块中?
0赞 aviato 9/6/2023
目前主要尝试使用forms/ActiveX。之前提供的代码已放入 vba-window 的 sheets code 模块中。这个想法是将下拉列表链接到另一个工作表上的单元格,当该单元格中的值发生变化时,脚本就会运行。我没有与一种或另一种类型结婚,主要目标是让工作表在外观上发生严重变化,并根据下拉列表中选择的选项显示哪些对象,除此之外,任何一种东西都可以,尽可能无滞后。

答: 暂无答案