Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 添加允许用户查看隐藏工作表的命令按钮_Vba_Excel_Commandbutton - Fatal编程技术网

Vba 添加允许用户查看隐藏工作表的命令按钮

Vba 添加允许用户查看隐藏工作表的命令按钮,vba,excel,commandbutton,Vba,Excel,Commandbutton,我不熟悉在excel中使用宏/VB,需要一些帮助(您可以用最简单的方式指导我) 我有一本有两张纸的工作簿。我已经在工作表1上创建了一个表单,允许用户输入数据,然后在隐藏的工作表(工作表2)中填充数据 我想在工作表1上添加一个按钮,供用户查看他们在工作表2中输入的隐藏“列表数据”,但他们无法编辑数据-只能查看它 任何帮助都将不胜感激。在表单的工作表上插入一个形状(我更喜欢它而不是ActiveX控件)。我将形状命名为“showdata”,并为按钮提供了相同的标题。现在将以下代码添加到标准代码模块(V

我不熟悉在excel中使用宏/VB,需要一些帮助(您可以用最简单的方式指导我)

我有一本有两张纸的工作簿。我已经在工作表1上创建了一个表单,允许用户输入数据,然后在隐藏的工作表(工作表2)中填充数据

我想在工作表1上添加一个按钮,供用户查看他们在工作表2中输入的隐藏“列表数据”,但他们无法编辑数据-只能查看它

任何帮助都将不胜感激。

在表单的工作表上插入一个形状(我更喜欢它而不是ActiveX控件)。我将形状命名为“showdata”,并为按钮提供了相同的标题。现在将以下代码添加到标准代码模块(VBE将其命名为“Module1”)

将包含数据的工作表的名称更改为您在项目中为该工作表指定的名称。然后右键单击按钮(形状)并选择“分配宏”。分配“ShowData\u Click”宏。现在,当您单击按钮时,隐藏的工作表将变为可见并被激活

在数据表的代码表(通常隐藏)中,将以下步骤添加到程序中

Option Explicit

    Dim ThisSheet As String

Private Sub Worksheet_Activate()
    ' 25 Jul 2017
    ThisSheet = ActiveSheet.Name
End Sub

Private Sub Worksheet_Deactivate()
    ' 25 Jul 2017
    On Error Resume Next
    Worksheets(ThisSheet).Visible = xlSheetVeryHidden
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    ' 25 Jul 2017

    Static ShowMsg As Integer

    With Application
        .EnableEvents = False
        .Undo
        ShowMsg = ShowMsg + 1
        If (ShowMsg Mod 3) = 1 Then
            MsgBox "Data in this sheet may not be modified." & vbCr & _
                   "Your changes have been removed.", _
                   vbInformation, "Invalid action"
        End If
        .EnableEvents = True
    End With
End Sub
当按下“新建”按钮时,第一个按钮将在激活板材时运行。它将记住工作表的名称。这样您就不需要硬编码名称

无论何时激活工作簿中的其他工作表,都将运行第二个过程。它将再次隐藏该表。因此,可以通过按下按钮来显示图纸,并通过选择其他图纸来隐藏图纸

我不是Excel保护的朋友。因此,我建议另一种防止用户修改数据的方法。这是代码。将其安装在已经有激活和停用程序的同一代码表上

Option Explicit

    Dim ThisSheet As String

Private Sub Worksheet_Activate()
    ' 25 Jul 2017
    ThisSheet = ActiveSheet.Name
End Sub

Private Sub Worksheet_Deactivate()
    ' 25 Jul 2017
    On Error Resume Next
    Worksheets(ThisSheet).Visible = xlSheetVeryHidden
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    ' 25 Jul 2017

    Static ShowMsg As Integer

    With Application
        .EnableEvents = False
        .Undo
        ShowMsg = ShowMsg + 1
        If (ShowMsg Mod 3) = 1 Then
            MsgBox "Data in this sheet may not be modified." & vbCr & _
                   "Your changes have been removed.", _
                   vbInformation, "Invalid action"
        End If
        .EnableEvents = True
    End With
End Sub

此代码将撤消用户所做的任何更改。用户每三次尝试修改某些内容时,都会收到一条这样的消息。

使用密码保护工作表2以防止其编辑不是更容易吗?欢迎使用堆栈溢出!有关编写好问题的提示,请访问。如果您对该网站有任何疑问,可以访问或访问