`

Excel VBA: 工作表(Sheet)浏览导航插件

阅读更多

公司的日本人喜欢用excel写文档, 并且喜欢用很多的sheet,

然而在excel中, 随着工作表数量的增加, 工作表的浏览和定位就会变得麻烦起来,

于是我便希望能找到一个方法, 可以更容易, 更直观(一眼看到更多的sheet名)的导航sheet.

 

为此, 我google了一下,解决方案有下面两个

 

方法1 Dave Peterson's Sheet Navigator Toolbar for Workbook Sheets

详细网址如下:

http://www.contextures.com/xlToolbar01.html

效果图如下:

 

这个教程讲解的比较详细, 不仅付有Sheet Navigator的代码,

同时还附有如何自定义一个toolbar, 如果自定义这个Sheet Navigator toolbar.

链接上还附有这个excel插件的下载,

为了防止链接失效, 我把这个addin下载转载到了附件中,

将其置于下面路径中便可以直接使用:

C:\Documents and Settings\<windows username>\Application Data\Microsoft\AddIns

 

同时, 这个插件还有一个excel 2007的版本, 他们的界面有所不同.

Sheet Navigator - List and Sort Excel Sheets - Excel 2007

 

 

方法2. Bob Phillips' BrowseSheets

其中的两个连接如下:

http://help.lockergnome.com/office/Macro-Sheet--ftopict715336.html

http://www.pcreview.co.uk/forums/selecting-workbook-worksheet-browse-button-t966990.html

我自定义了excel的快捷键, 去去执行这段脚本, 同时也为他, 在我自定义的toobar上面追加了一个按钮

他的效果图如下:

代码如下:

 

Sub BrowseSheets()
Const nPerColumn  As Long = 38          'number of items per column
Const nWidth As Long = 13                'width of each letter
Const nHeight As Long = 18              'height of each row
Const sID As String = "___SheetGoto"    'name of dialog sheet
Const kCaption As String = " Select sheet to goto"
                                        'dialog caption

Dim i As Long
Dim TopPos As Long
Dim iBooks As Long
Dim cCols As Long
Dim cLetters As Long
Dim cMaxLetters As Long
Dim cLeft As Long
Dim thisDlg As DialogSheet
Dim CurrentSheet As Worksheet
Dim cb As OptionButton

    Application.ScreenUpdating = False

    If ActiveWorkbook.ProtectStructure Then
        MsgBox "Workbook is protected.", vbCritical
        Exit Sub
    End If

    On Error Resume Next
        Application.DisplayAlerts = False
        ActiveWorkbook.DialogSheets(sID).Delete
        Application.DisplayAlerts = True
    On Error GoTo 0
    Set CurrentSheet = ActiveSheet
    Set thisDlg = ActiveWorkbook.DialogSheets.Add

    With thisDlg

        .Name = sID
        .Visible = xlSheetHidden

        'sets variables for positioning on dialog
        iBooks = 0
        cCols = 0
        cMaxLetters = 0
        cLeft = 78
        TopPos = 40

        For i = 1 To ActiveWorkbook.Worksheets.Count

            If i Mod nPerColumn = 1 Then
                cCols = cCols + 1
                TopPos = 40
                cLeft = cLeft + (cMaxLetters * nWidth)
                cMaxLetters = 0
            End If

            Set CurrentSheet = ActiveWorkbook.Worksheets(i)
            cLetters = Len(CurrentSheet.Name)
            If cLetters > cMaxLetters Then
                cMaxLetters = cLetters
            End If

            iBooks = iBooks + 1
            .OptionButtons.Add cLeft, TopPos, cLetters * nWidth, 16.5
            .OptionButtons(iBooks).text = _
                ActiveWorkbook.Worksheets(iBooks).Name
            TopPos = TopPos + 13

        Next i

        .Buttons.Left = cLeft + (cMaxLetters * nWidth) + 24

        CurrentSheet.Activate

        With .DialogFrame
            .Height = Application.Max(68, _
                Application.Min(iBooks, nPerColumn) * nHeight + 10)
            .Width = cLeft + (cMaxLetters * nWidth) + 24
            .Caption = kCaption
        End With

        .Buttons("Button 2").BringToFront
        .Buttons("Button 3").BringToFront

        Application.ScreenUpdating = True
        If .Show Then
            For Each cb In thisDlg.OptionButtons
                If cb.Value = xlOn Then
                    ActiveWorkbook.Worksheets(cb.Caption).Select
                    Exit For
                End If
            Next cb
        Else
            MsgBox "Nothing selected"
        End If

        Application.DisplayAlerts = False
        .Delete

    End With

End Sub

 

 

 

其他链接

 

Getting Started with Macros and User Defined Functions

http://dmcritchie.mvps.org/excel/getstarted.htm

Ron's Excel Tips

http://www.rondebruin.nl/tips.htm

Application Events

http://www.cpearson.com/excel/AppEvent.aspx

Events And Event Procedures In VBA

http://www.cpearson.com/excel/Events.aspx

 

 

 

 

分享到:
评论

相关推荐

    Excel_VBA.rar_Excel VBA_excel代码编写

    5. **减少工作表对象引用**:每次使用Sheet对象时,VBA都会查找特定的工作表,这会消耗时间。可以将工作表对象赋值给变量,然后使用变量进行操作,如`Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")`...

    Excel导出Sheet文件

    工作表在工作簿中以Sheet1, Sheet2, Sheet3等命名,用户可以根据需要添加或删除工作表。 二、为什么要导出Sheet为独立文件 1. 数据管理:将不同主题的数据分开,便于管理和查找。 2. 分享:若每个Sheet代表不同主题...

    Excel导出多个Sheet.rar

    在Excel中,一个工作簿(通常称为Excel文件)可以包含多个工作表,这些工作表被称为Sheet。Sheet是数据组织的基本单元,每个Sheet都有自己独立的数据和格式设置,可以在同一个文件内进行数据交换和分析。"Excel导出...

    多表分sheet导出到excel

    6. **第三方工具**:除了编程方式,也有一些第三方软件或插件(如Kutools for Excel)提供了批量合并工作表的功能,它们简化了操作流程,适合不熟悉编程的用户。 7. **注意事项**: - 数据一致性:在合并多表时,...

    WPS的vba宏插件.zip

    4. **对象模型**:VBA宏利用Excel的对象模型来访问和操作工作簿、工作表、单元格等元素。例如,`Worksheets("Sheet1").Range("A1")` 就是引用工作表“Sheet1”的A1单元格。 5. **事件驱动编程**:VBA宏支持事件驱动...

    VBA.zip_CAD二次开发_cad vba_cad vba提取块_cad 提取到excel_vbaCAD出图

    这通常涉及创建VBA宏,将数据以特定格式写入Excel工作表,或者利用Excel的COM接口直接操作Excel文件。 “vbacad出图”则涉及利用VBA生成图纸的过程。VBA可以控制AutoCAD执行一系列绘图命令,如绘制线、圆、文字、...

    Excel VBA编程的常用代码.pdf

    通过VBA(Visual Basic for Applications),用户可以编写代码来控制Excel的工作簿、工作表、单元格等元素,提高工作效率。以下是一些Excel VBA编程的常用代码和知识点: 1. **变量声明**: - 在VBA中,使用`Dim`...

    VBA代码大全.rar

    - Excel对象模型:理解工作簿(Workbook)、工作表(Worksheet)、单元格(Range)等对象及其属性和方法,是编写Excel VBA的关键。 - 应用程序对象:如Application对象,可以控制Excel应用程序的行为,如关闭、...

    使用自动化生成Excel数据图表

    要在Excel中运行此宏,你需要将这段代码粘贴到VBA编辑器中,并确保你的工作表包含相应的数据。然后,通过快捷键`Alt + F8`调出宏对话框,选择并运行`GenerateChart`宏。 3. 自动化流程 自动化生成Excel数据图表通常...

    VBA相同项目标记相同颜色.zip

    我们需要引用特定的工作表,如`Sheets("Sheet1")`,来进行数据操作。 2. **循环遍历单元格(For Each...Next Loop)**:为了检查每个单元格的内容,VBA会使用循环结构,例如`For Each cell In Range("A1:A100")`,...

    VBA将excel数据表生成JSON文件

    Set myrange = Worksheets("Sheet1").UsedRange ' 选择工作表中的数据 ' 或者可以选择定义的名称或特定范围 ' myrange = ActiveWorkbook.Names("schoolinfo").RefersToRange ' myrange = Range(Worksheets(...

    简单介绍1

    Excel VBA,全称Visual Basic for Applications,是微软Excel中的内置编程语言,允许用户自定义功能,自动化重复任务,创建动态工作表以及构建复杂的业务应用程序。在本文中,我们将深入探讨如何启用Excel宏,理解...

    Excel问题集合

    在Excel中,若想列出当前工作簿中的所有工作表名称,可以通过编写宏代码来实现。具体步骤如下: 1. **启用开发工具**:在Excel的菜单栏中选择“文件”-&gt;“选项”-&gt;“自定义功能区”,勾选“开发工具”。 2. **录制...

    Excel百宝箱 9.0 破解版 批量导入图片等200种功能

    Sheet创建工作表目录函。一个参数,输入工作表地址即返回工作表名,单击该工作表名进入对应的工作表 File用于创建带链接的文件目录,有三个参数,第一参数指定路径,第二参数定指文件类型。第三参数指定编号(数量) ...

    将多个Excel文件合并为一个文件.txt

    通常情况下,新创建的工作簿会包含一个名为“Sheet1”的空白工作表,在合并完成后,需要删除这个空白工作表。 #### 四、应用场景 - **办公自动化**:可以大大提高办公效率,特别是在需要将多个报告或数据汇总到一...

    怎样把excel中的数据导入matlab中

    A1:B10")` 从Excel的第一个工作表中读取A1到B10的区域。 3. **处理数据**: - 在MATLAB中对读取的数据进行各种操作,如统计分析、绘图等。 4. **返回结果到Excel**: - 使用`MLAppendMatrix`将处理后的数据追加...

Global site tag (gtag.js) - Google Analytics