Vba 隐藏/取消隐藏每月更改的工作表

Vba 隐藏/取消隐藏每月更改的工作表,vba,excel,Vba,Excel,我正在寻找一些帮助与每月报告,我运行。我正在尝试将报告自动化,以减少一些人工时间!目前,我运行一个大型的月度报告,这可能会让人望而生畏。我正在努力解决的一个问题是自动隐藏/取消隐藏工作簿中的工作表,因为我试图每个月提取不同的工作表。我已经预先填充了1月18日至12月18日的工作表,正在寻找一种不必手动隐藏/取消隐藏工作表的方法 我目前已经创建了一个userform,其中通过组合框(FormMonth)选择月份。用户可以选择一月到十二月。我还创建了一个单独的文本框,用户可以在其中输入他们搜索的年份

我正在寻找一些帮助与每月报告,我运行。我正在尝试将报告自动化,以减少一些人工时间!目前,我运行一个大型的月度报告,这可能会让人望而生畏。我正在努力解决的一个问题是自动隐藏/取消隐藏工作簿中的工作表,因为我试图每个月提取不同的工作表。我已经预先填充了1月18日至12月18日的工作表,正在寻找一种不必手动隐藏/取消隐藏工作表的方法

我目前已经创建了一个userform,其中通过组合框(FormMonth)选择月份。用户可以选择一月到十二月。我还创建了一个单独的文本框,用户可以在其中输入他们搜索的年份

例如:试图取消隐藏工作表。我目前正试图取消隐藏一个标签为JUL18的工作表。我尝试了以下代码:

worksheets(" " & FormMonth & "18").visible = true
我也试过了

worksheets(" " & FormMonth & "18").visible = xlvisible
我运气不好,希望有人愿意帮忙。作为奖励,任何关于如何自动编码以隐藏前几个月的工作表的帮助都将非常好!例如,如果我取消隐藏JUL18工作表,我将如何编写代码来隐藏JUN18工作表

谢谢


Derek

以下子项显示所选月份的工作表,并隐藏所有其他月份的工作表。 请注意,它会将第一个工作表设置为可见,然后才隐藏其余的工作表-否则,您可能会尝试隐藏所有工作表,这将失败

Sub showMonthSheet(mon As String)
    Const year = "18"

    Dim sheetname As String
    sheetname = mon & " " & year

    ThisWorkbook.Worksheets(sheetname).Visible = True

    Dim ws As Worksheet    
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> sheetname Then
            ws.Visible = False
        End If
    Next ws

End Sub
子showMonthSheet(mon作为字符串)
Const year=“18”
将sheetname设置为字符串
sheetname=mon&&&year
ThisWorkbook.Worksheets(sheetname).Visible=True
将ws设置为工作表
对于此工作簿中的每个ws。工作表
如果ws.Name sheetname那么
ws.Visible=False
如果结束
下一个ws
端接头

(我假设您的工作表名称类似于Jan 18没有前导或尾随空格,但在月份名称和年份之间有空格)

更改
工作表(“&FormMonth&“18”)。visible=true
工作表(FormMonth&18)。visible=true
只是为了确认,运行
Debug.Print FormMonth
时,是否会在即时窗口中获得
Jul
?请尝试
工作表(FormMonth&“18”)。Visible=xlSheetHidden
xlSheetVisible
为什么要在工作表名称前加上一个空格?您的工作表是否实际命名为“JUL18”?在这一行上放置一个断点(将光标放在第行并按F9),然后当它到达断点时,转到您的
立即
窗格,键入
?FormMonth&“18”
,然后按enter键。它是否会吐出“7月18日”
?您好,谢谢您的反馈!我正在学习vba的第3周,这是一个相当好的学习曲线!所有的反馈都很好,我只是有一些错误的语法。我在FormMonth之前删除了间距,它就像宝石一样工作。再次感谢!我认为此
ThisWorkbook.Worksheets(sheetname).Visible=True
将失败,如果工作簿中没有名为
sheetname
的工作表。如果您的FormMonth为“JUL18”,则可以使用ucase获取上一个月的工作表(MonthName(month)(“1”和left(FormMonth,3)和“&Right(FormMonth,2))-1,True))和“18”