Excel VBA,用于根据单元格值有条件地取消隐藏或隐藏工作表

Excel VBA,用于根据单元格值有条件地取消隐藏或隐藏工作表,excel,vba,Excel,Vba,我尝试过很多次为这个问题制定代码,甚至尝试过在这个网站上找到的一些代码字符串,但我一直无法找到解决方案 我的目标是,当用户从另一张工作表上某个单元格的下拉列表中选择“是”以供用户输入备注时,将隐藏的工作表弹出为“未隐藏”,如果该单元格填充为“不适用”,则选择“保持工作表隐藏” 有人能帮忙吗 以下是我最近尝试的代码: Sheets("Prop. Pres. Notes 206-261").Activate If Range("G39").Value = "YES" Then Sheets("Pro

我尝试过很多次为这个问题制定代码,甚至尝试过在这个网站上找到的一些代码字符串,但我一直无法找到解决方案

我的目标是,当用户从另一张工作表上某个单元格的下拉列表中选择“是”以供用户输入备注时,将隐藏的工作表弹出为“未隐藏”,如果该单元格填充为“不适用”,则选择“保持工作表隐藏”

有人能帮忙吗

以下是我最近尝试的代码:

Sheets("Prop. Pres. Notes 206-261").Activate
If Range("G39").Value = "YES" Then
Sheets("Prop. Pres. Notes 206-261").Visible = True
Else
Sheets("Prop. Pres. Notes 206-261").Visible = False
End If

将其放置在Microsoft Excel对象的主工作表下

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$G$39" Then
        'Change Sheet1 to the name of your main sheet
        If ActiveWorkbook.Worksheets("Sheet1").Range("G39").Value = "YES" Then
            Sheets("Prop. Pres. Notes 206-261").Visible = True
        Else
            Sheets("Prop. Pres. Notes 206-261").Visible = False
        End If
    End If
End Sub

你还没有提到第39页是什么 如果在Sheet1上,请尝试比较小写字符串:

单张纸。压力注释206-261.Visible=LCaseSheets1.Range39.Value2=yes
听起来您需要将此代码放在工作表\u Change宏中。到目前为止,您是如何调用此代码的?G39是否与您正在使其可见/不可见的代码在同一张纸上?如果是这样,一旦图纸不可见,用户如何更改G39的值?如果G39中的公式引用了包含下拉列表的其他单元格,则需要更改工作表的是其他工作表,并且代码需要检查目标是否是用户实际更改的单元格,而不是隐藏/取消隐藏的工作表上的G39。我将其用作工作表更改,我隐藏或取消隐藏的工作表不在同一工作表上。当他们输入“是”值时,它位于单独的工作表上。我希望该工作表显示。这仍然无法正常工作。它一直处于隐藏状态,当选择为“是”时不会取消隐藏。您是否使用下拉列表选择“是/否”选项?我实际上使用的是下拉列表。该列表位于另一张工作表上。因此,当您从下拉列表中选择“是”并点击tab键时,会发生什么?什么都没有。我看到的标签与我隐藏的标签相同,但保持隐藏状态。小写字母对我有什么作用?只是好奇。是在下拉列表的第1页上,它是大写的。在您的描述和评论中,您没有提到它是大写的,您使用的是,所以我涵盖了所有的可能性;此外,我不确定下拉列表是如何创建的,因此我会更进一步,使用TrimlCasheets1.RangeG39.Value2=是的,我有一张表,上面有多个不同的下拉列表,但下拉列表也在那里。我将尝试修剪,但周围没有空格是的。它也用大写字母拼写。然后它可能是其他的,但是如果我们能够比较VBA正在比较的完全相同的值,可能会有帮助。为每个值打印Debug.Print>&Sheets1.RangeG39.Value2&我能够使用这种类型的代码,但我发现这个小故障与我所引用的一些细胞的设置方式不完全相同有关。谢谢你的帮助!