首页 > 其他分享 >利用VBA实现工作表批量显示/隐藏

利用VBA实现工作表批量显示/隐藏

时间:2024-10-26 21:45:21浏览次数:9  
标签:列表框 sht 批量 VBA 可见 lbHiddenSheets End lbVisibleSheets 隐藏

引言

工作表批量显示/隐藏的UI设计与功能实现,主要是为了在处理包含大量工作表的工作簿时,我们可以根据需求快速隐藏多个非必需的工作表,或者只显示少量但必要的工作表

工作表批量显示/隐藏的演示GIF

UI设计

这里主要使用到了两个列表框和两个按钮控件,主界面设计和相关控件命名如下所示。

图片
界面设计

窗体和控件

命名

窗体

UserForm1

列表框(可见工作表)

lbVisibleSheets

列表框(不可见工作表)

lbHiddenSheets

按钮(→)

cmdbHidden

按钮(←)

cmdbVisible

值得注意的是,列表框的MultiSelect属性,需设置为2-fmMultiSelectExtended。只有这样,我们才可以更灵活地通过Shift、Ctrl键选择列表框的多个项目。

设置MultiSelect属性

VBA实现代码

1.窗体初始化

加载[可见工作表]在左侧的列表框,加载[不可见工作表]在右侧的列表框。

Private Sub UserForm_Initialize()
    Dim sht As Worksheet
    For Each sht In ActiveWorkbook.Worksheets
        If sht.Visible = xlSheetVisible Then
            Me.lbVisibleSheets.AddItem (sht.Name)
        Else
            Me.lbHiddenSheets.AddItem (sht.Name)
        End If
    Next
End Sub

2.将多个工作表隐藏

Private Sub cmdbHidden_Click()
    '清空【不可见工作表】列表框
    lbHiddenSheets.Clear
    '将选中的项目设置为不可见,同时从【可见工作表】列表框移除
    For i = lbVisibleSheets.ListCount - 1 To 0 Step -1
        If lbVisibleSheets.Selected(i) And GetVisibleShtCount(ActiveWorkbook) > 1 Then
            Sheets(lbVisibleSheets.List(i)).Visible = False
            lbVisibleSheets.RemoveItem (i)
        End If
    Next
    '重新加载【不可见工作表】列表框
    Dim sht As Worksheet
        For Each sht In ActiveWorkbook.Worksheets
            If sht.Visible <> xlSheetVisible Then
                lbHiddenSheets.AddItem (sht.Name)
            End If
        Next
End Sub

3.将多个工作表显示​​​​​​​

Private Sub cmdbVisible_Click()
    '清空【可见工作表】列表框
    lbVisibleSheets.Clear
    '将选中的项目设置为可见,同时从【不可见工作表】列表框移除
    For i = lbHiddenSheets.ListCount - 1 To 0 Step -1
        If lbHiddenSheets.Selected(i) Then
            Sheets(lbHiddenSheets.List(i)).Visible = True
            lbHiddenSheets.RemoveItem (i)
        End If
    Next
    '重新加载【可见工作表】列表框
    Dim sht As Worksheet
        For Each sht In ActiveWorkbook.Worksheets
            If sht.Visible = xlSheetVisible Then
                lbVisibleSheets.AddItem (sht.Name)
            End If
        Next
End Sub

4.辅助函数

功能:获取全部可见工作表的数量。

应用:只有在全部可见工作表的数量>1时,才能将可见工作表隐藏。

Function GetVisibleShtCount(ByVal wb As Workbook) As Integer
    Dim count As Integer
    count = 0
    For Each sht In wb.Sheets
        If sht.Visible = xlSheetVisible Then
            count = count + 1
        End If
    Next
    GetVisibleShtCount = count
End Function

标签:列表框,sht,批量,VBA,可见,lbHiddenSheets,End,lbVisibleSheets,隐藏
From: https://blog.csdn.net/VBAMatrix/article/details/143231652

相关文章

  • 我想电脑批量管理 30 台苹果手机,怎么操作更简单方便呢?
    在如今的数字化时代,手机已经成为了我们日常生活中不可或缺的一部分。无论是工作还是娱乐,我们都需要使用各种各样的应用软件来满足自己的需求。而对于那些需要管理大量苹果手机设备的企业来说,如何高效地完成这些任务就成了一个重要问题。毕竟,手动一个个去操作和管理这些设备既......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • WINCC VBA编程练习10
    这一篇学习笔记在新浪博客发表过,这里再次记录一下。歇了一段时间没有做WINCC环境下VBA学习,今晚继续。新建下面的VBA脚本SubAddTrendctrl()'画面上添加趋势控件Dimi,objTrendSetobjTrend=ActiveDocument.HMIObjects.AddActiveXControl("trend","CCAxOnlineTrendContro......
  • 66openpyxl的遍历读写操作(常用于数据批量读出来和写进去)
     importopenpyxlfromopenpyxlimportWorkbook#常用于数据批量读出来和写进去#往表格写入操作defcreate_wb():#创建一个新的工作簿wb=Workbook()#选择默认的工作表ws=wb.active#假设这是你要写入的数据,4行4列data=[......
  • 其实在构建神经网络或训练神经网络的时候,还有另一个隐藏的前提假设,那就是当你选择sigm
    最大熵原理确实与选择激活函数(如sigmoid或softmax)有关。以下是一些相关的要点:最大熵原理:最大熵原理是一种统计推断的方法,旨在在已知信息的情况下,选择最不偏见的概率分布。换句话说,当我们对某个系统的知识有限时,选择熵最大的分布可以避免引入不必要的假设。激活函数与概率分......