Vba Excel VB脚本问题-隐藏/显示工作表
我发现下面的代码,我已经稍微修改了我的需要。我遇到的问题是它不能完全满足我的需求。具体地说,我在每张工作表的A1中都有一个下拉菜单,其中有三张工作表的名称,即我的工作簿中的发货、订单和库存。我试图做到的是,每当用户选择一个下拉菜单项时,不管他们在哪个工作表中工作,都会显示相关的工作表,而隐藏另外两个工作表 下面的代码有效,但仅当所有三张图纸在所选下拉列表中具有相同的图纸名称时有效,当两张图纸被隐藏时,这将变得不可用。我不确定如何克服这个问题,但希望这里比我更好的人能给我一些建议 当前VB代码:Vba Excel VB脚本问题-隐藏/显示工作表,vba,excel,Vba,Excel,我发现下面的代码,我已经稍微修改了我的需要。我遇到的问题是它不能完全满足我的需求。具体地说,我在每张工作表的A1中都有一个下拉菜单,其中有三张工作表的名称,即我的工作簿中的发货、订单和库存。我试图做到的是,每当用户选择一个下拉菜单项时,不管他们在哪个工作表中工作,都会显示相关的工作表,而隐藏另外两个工作表 下面的代码有效,但仅当所有三张图纸在所选下拉列表中具有相同的图纸名称时有效,当两张图纸被隐藏时,这将变得不可用。我不确定如何克服这个问题,但希望这里比我更好的人能给我一些建议 当前VB代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "Shipping" Then
Sheets("Shipping").Visible = True
Sheets("Orders").Visible = False
Sheets("Inventory").Visible = False
ElseIf Target.Value = "Orders" Then
Sheets("Orders").Visible = True
Sheets("Shipping").Visible = False
Sheets("Inventory").Visible = False
ElseIf Target.Value = "Inventory" Then
Sheets("Inventory").Visible = True
Sheets("Shipping").Visible = False
Sheets("Orders").Visible = False
End If
End Sub
这是您的代码,适合灵活性。这将隐藏任何不等于目标值的图纸,并取消隐藏不等于目标值的图纸
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim x As Worksheet
Set x = Excel.ActiveSheet
For Each ws In Excel.ActiveWorkbook.Worksheets
If Trim(ws.Name) <> Trim(Target.Value) and ws.Name <> x.Name Then
ws.Visible = xlSheetHidden
Else
ws.Visible = xlSheetVisible
End If
Next ws
End Sub
Private子工作表\u更改(ByVal目标作为范围)
将ws设置为工作表
将x标注为工作表
Set x=Excel.ActiveSheet
对于Excel.ActiveWorkbook.Worksheets中的每个ws
如果Trim(ws.Name)Trim(Target.Value)和ws.Name x.Name,那么
ws.Visible=xlSheetHidden
其他的
ws.Visible=xlSheetVisible
如果结束
下一个ws
端接头
如果您想知道Trim()
命令,它会从字符串值中删除前导空格和尾随空格。有时很难在工作表名称中找到这些名称:)
编辑
我在if语句中添加了
ws.Name x.Name
部分,以确保当前工作表(即下拉控件所在的工作表)保持可见 从所有三张图纸可见开始,并在所有三张图纸中使用此代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "Shipping" Then
Sheets("Shipping").Visible = True
Sheets("Shipping").Select
Sheets("Orders").Visible = False
Sheets("Inventory").Visible = False
ElseIf Target.Value = "Orders" Then
Sheets("Orders").Visible = True
Sheets("Orders").Select
Sheets("Shipping").Visible = False
Sheets("Inventory").Visible = False
ElseIf Target.Value = "Inventory" Then
Sheets("Inventory").Visible = True
Sheets("Inventory").Select
Sheets("Shipping").Visible = False
Sheets("Orders").Visible = False
End If
End Sub