Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: hcy1185

下面代码不正确,请高手指正代码!

  [复制链接]
 楼主| 发表于 2012-3-10 16:15 | 显示全部楼层
happym8888 发表于 2012-3-10 15:03

谢谢happym8888老师!
Sub 生成工作表目录()
    With Sheet1
    Dim j As Long
    j = .UsedRange.SpecialCells(xlLastCell).Column + 1 '.Range("iv1").End(xlToLeft).Column + 1
        .Columns(j).Clear
        .Cells(1, j) = "工作表目录"
        m = 0
        For i = 1 To Sheets.Count
            If Sheets(i).CodeName <> Sheets(1).CodeName Then
                m = m + 1
                .Hyperlinks.Add Anchor:=.Cells(m + 1, j), Address:="", SubAddress:= _
                Sheets(i).Name & "!A1", TextToDisplay:=Sheets(i).Name
            End If
        Next i
        .Cells(2, j).Select  '活动工作表不在sheet1时,提示range对于Select方法无效
    End With
End Sub
回复

使用道具 举报

发表于 2012-3-10 16:31 | 显示全部楼层
hcy1185 发表于 2012-3-10 16:15
谢谢happym8888老师!
Sub 生成工作表目录()
    With Sheet1

什么意思啊?????
回复

使用道具 举报

发表于 2012-3-10 17:45 | 显示全部楼层
hcy1185 发表于 2012-3-10 16:15
谢谢happym8888老师!
Sub 生成工作表目录()
    With Sheet1

纯事件打造,打开工作薄自动自成
添加删除工作表时,需要关闭工作薄重新打开,
也可以将 刷新目录 添加到模块中,然后设置快捷键来操作,
添加到 模块1 中,
则 open 事件中的  Call 刷新目录   应改为 Call 模块1.刷新目录


  1. Dim Lx As Byte
  2. Private Sub Workbook_Open()
  3.   Call 刷新目录
  4. End Sub
  5. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  6. With Target
  7.     If .Count > 1 Then Exit Sub
  8.     If .Row = 1 Then Exit Sub
  9.     Lx = Sh.Range("IV1").End(xlToLeft).Column
  10.     If .Row > Sh.Cells(1, Lx).End(xlDown).Row Then Exit Sub
  11.     If Not Sh.Cells(1, Lx).Value Like "工作表目录" Then Exit Sub
  12.     If .Column = Lx Then Sheets(.Value).Select
  13.   End With
  14. End Sub
  15. Sub 刷新目录()
  16. Dim Hx As Byte
  17. Dim Sh As Worksheet, Sh1 As Worksheet
  18.   For Each Sh In Worksheets
  19.     With Sh
  20.       Lx = .Range("Iv1").End(xlToLeft).Column + 1
  21.       Hx = 1
  22.       If Not .Cells(1, Lx - 1).Value Like "工作表目录" And Lx > 2 Then
  23.       .Cells(Hx, Lx).Value = "工作表目录"
  24.         For Each Sh1 In Worksheets
  25.           If Sh1.Name <> Sh.Name Then
  26.             Hx = Hx + 1
  27.             With .Cells(Hx, Lx)
  28.               .Value = Sh1.Name
  29.               .Font.Underline = 2
  30.               .Font.ColorIndex = 5
  31.               .HorizontalAlignment = 3
  32.             End With
  33.           End If
  34.         Next
  35.       End If
  36.     End With
  37.   Next
  38. End Sub
复制代码

回复

使用道具 举报

发表于 2012-3-10 21:04 | 显示全部楼层
学习代码VBA                  
回复

使用道具 举报

 楼主| 发表于 2012-3-10 21:43 | 显示全部楼层
在各位老师的指导下,定稿了
Sub 生成工作表目录()
    With Sheet1
    Dim j As Long
    j = .UsedRange.SpecialCells(xlLastCell).Column + 1
        .Columns(j).Clear
        .Cells(1, j) = "工作表目录"
        m = 0
        For i = 1 To Sheets.Count
            If Sheets(i).CodeName <> Sheets(1).CodeName Then
                m = m + 1
                .Hyperlinks.Add Anchor:=.Cells(m + 1, j), Address:="", SubAddress:= _
                Sheets(i).Name & "!A1", TextToDisplay:=Sheets(i).Name
            End If
        Next i
    End With
    Sheets(1).Select
    Cells(2, j).Select
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-9-24 13:33 , Processed in 0.402756 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表