我想创建一个隐藏工作表的按钮。理想情况下,它会隐藏按钮所在的工作表。
简单来说,表1有一个表格可以填写。典型的名称,地址,电话号码等。第2页和第3页也有相同的字段,这些字段将被引用到'数据'标签也是如此。在名为' Data'的工作表中,我将添加仅使用=选项填充的字段(= Data!...)
但是,添加信息后,我不希望数据页面在视图中。我们都知道简单的右键单击和隐藏表。但有时候对于那些使用这张表的人来说太过分了,漂亮的按钮会更好。
我成功使用: 第1单元
Sub SheetCommand()
If Worksheets("Sheet1").Range("C2").Value <> vbNullString Then
Worksheets("Sheet2").Visible = False
Else
Worksheets("Sheet2").Visible = True
End If
End Sub
Sheet1代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$2" Then Exit Sub
Run "SheetCommand"
End Sub
然而,我并不是非常精通VB并且已经走到了尽头。有人可以帮我告诉我如何将其应用于按钮吗?我并不希望它引用示例中提到的$ C $ 2字段,但只要有人按下按钮,工作表就会消失。我并不担心得到它,因为有人可以准备好以老式的方式。这将有助于本手册的数据输入过程变得更加容易。
编辑:基本上,我需要帮助创建一个可以隐藏页面的vba代码。我想创建一个按钮,一旦点击,它就会隐藏该页面。我展示了一个代码示例,我将其运行,但只有在填充该单元格时才有效。如何使按钮点击工作?
我发现这个代码能够满足我的需要,但我想告诉它一个特定的工作表名称而不必在B6和B7中输入它。
Sub ShowHideWorksheets()
Dim Cell As Range
For Each Cell In Range("B6:B7")
ActiveWorkbook.Worksheets(Cell.Value).Visible = Not
ActiveWorkbook.Worksheets(Cell.Value).Visible
Next Cell
End Sub
答案 0 :(得分:0)
实际上我不太清楚你的目标是什么
例如,假设“Sheet 2”和“Sheet2”指向同一张纸,在您的问题中,您似乎将其称为“Form”表(“...表1有一个表格填写.... 表2 和3也有相同的字段...“)和”数据“表(Worksheets("Sheet2").Visible = False
)
所以这里遵循一些可能的解决方案:
1)您希望在关闭
中包含的工作簿之前隐藏“数据”表然后将以下代码放在包含“数据”表
的工作簿的“ThisWorkbook”代码窗格中Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Worksheets("Data").Visible = False
End Sub
2)一旦在“数据”以外的任何工作表中填写了一些单元格,您想要隐藏“数据”表单
然后将以下代码放在包含“数据”表
的工作簿的“ThisWorkbook”代码窗格中Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "Data" Then
With Sh
'here follows code to check if "the information is added"
'for instance:
If WorksheetFunction.CountA(.Range("A2:C2")) = .Range("A2:C2").Count Then ThisWorkbook.Worksheets("Data").Visible = False 'check if all cells in range "A2" to "C2" has been filled with some data
End With
End If
End Sub
3)您想要在“数据”以外的所有工作表中填写某些单元格后隐藏“数据”表单
然后将以下代码放在包含“数据”表
的工作簿的“ThisWorkbook”代码窗格中Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim sht As Worksheet
Dim hideBool As Boolean: hideBool = True 'set initial value as true
If Sh.Name <> "Data" Then
For Each sht In ThisWorkbook.Worksheets
With Sh
'here follows code to check if "the information is added"
'for instance:
hideBool = hideBool And WorksheetFunction.CountA(.Range("A2:C2")) = .Range("A2:C2").Count ''check if all cells in range "A2" to "C2" of current sheet has been filled with some data
End With
If Not hideBool Then Exit For
Next sht
ThisWorkbook.Worksheets("Data").Visible = Not hideBool ' hide if ALL sheets met "information is added" condition
End If
End Sub
4)否则提供有关所需行为的更多信息