根据日期隐藏/显示表单的部分

时间:2011-06-23 11:24:03

标签: vba excel-vba excel

只是一个查询而不是任何东西。不确定我是否可以在这里提问而不提交代码?但无论如何这里都有。

想知道在Excel中是否可以使用vba显示/隐藏表单的各个部分,具体取决于它的日期。我正在创建的表单将用于审计,每个月都会完成不同的审计。表格将按如下所述使用。

工作簿打开----用户输入患者ID号(用于从数据库中检索数据的查找功能(我不需要帮助此位)-----用户从下拉列表中选择是/否

是 - 根据日期显示相关表格 不 - 叶子形式。

无法想出一个合适的方法来解决设置表格并且不知道如何显示/隐藏部分所以任何建议都会感激不尽。

1 个答案:

答案 0 :(得分:1)

你的问题有点开放,显然没有明确的答案。以下是我的一些初步想法:

如果您的表单只是略有不同(即90%相同而且只有10%是可变的)并且只是表单的某个部分有所不同,那么可能会创建每个部分然后有选择地隐藏。

例如,假设我有一个不同的部分取决于用户是否是女性的男性。我可以构建两个部分然后显示/隐藏如下:

If gender = "Male" Then
    Rows("10:20").EntireRow.Hidden = True //Assume you built male section in rows 10 to 20
    Range("20:30").EntireRow.Hidden = false //Assume you built female section in 20 to 30
Else // replicate code for female scenario
    Rows("10:20").EntireRow.Hidden = False
    Rows("20:30").EntireRow.Hidden = True
End if

如果您的表单变化很多(即只有10%的静态和90%的变量),我的经验是您最好在不同的工作表中单独构建每个表单,然后相应地显示:

If gender = "Male" Then
     Worksheets("maleForm").Visible = True
Else
     Worksheets("femaleForm").Visible = True
End if

如果输入字段不同,则可以考虑选择性地禁用某些字段:

 If gender = "Male" Then
      Worksheets("myForm").OLEObjects("lipstickDropDown").Enabled = False //Using Control Toolbox items e.g. textbox, combobox etc...
      Worksheets("myForm").OLEObjects("beerDropDown").Enabled = True
 Else
      Worksheets("myForm").OLEObjects("lipstickDropDown").Enabled = True 
      Worksheets("myForm").OLEObjects("beerDropDown").Enabled = False
 End if

如果我稍后可以添加,我会这样做。这有什么帮助你吗?