vba脚本excel动态创建索引目录表

来源:互联网 发布:大大网络用语什么意思 编辑:程序博客网 时间:2024/05/16 13:41

       上代码:

'''动态创建目录表:其他表内容的索引,从其他表的每行中拷贝指定的列,拷贝后第一个单元格超链接到所拷贝的行Function makeContent()      contentSheetName = "content"   '清空content表内容   Sheets(contentSheetName).Select   Sheets(contentSheetName).Rows("2:65535").Delete   '一张表最多只能有65535行      '需要从其他表中拷贝的列,如果用例表不同,则修改这个数组   copyCol = Array(1, 2, 4, 8, 10)      '循环遍历除"content"之外的其他表    For Each sh In Worksheets    If sh.Name <> contentSheetName Then        '从第二行开始拷贝,因为第一行是表头        For r = 2 To usedRowCnt(sh)            If sh.Cells(r, 1).Value <> "" Then                '计算“content”表中当前已使用的行数                curTotalRows = usedRowCnt(Sheets(contentSheetName))                            '循环拷贝每一列的数据                i = 0                 For Each col In copyCol                    i = i + 1                    Sheets(contentSheetName).Cells(curTotalRows + 1, i).Value = sh.Cells(r, col).Value                 Next            'content中的行的第一格单元格设置超链接,链接到所拷贝表的行            Sheets(contentSheetName).Hyperlinks.Add Cells(curTotalRows + 1, 1), Address:="", SubAddress:=sh.Name & "!A" & r                        End If                Next            End If    Next       Debug.Print "make conten success"End Function

如果希望excel文件每次打开时更新目录表,那么在VB编辑器中,双击“ThisWorkBook”,右边代码中写上如下代码:

Private Sub Workbook_Open()    Call makeContentEnd Sub

PS:excel表及vba脚本上传到csdn了:



0 0