Vba 排序数组大小
我正在尝试使用visual basic在目录上创建各种工作表的超链接 第一页是目录。因此,目录中包含的工作表从工作表2开始。我无法将数组更改为从工作表2开始 这是我的代码行Vba 排序数组大小,vba,excel,Vba,Excel,我正在尝试使用visual basic在目录上创建各种工作表的超链接 第一页是目录。因此,目录中包含的工作表从工作表2开始。我无法将数组更改为从工作表2开始 这是我的代码行 'Create Table of Contents ' Create array with locations Set firstsheet = Worksheet(2).Value ' Dim arrworksheets(2 To Worksheets.Count) As Long Fo
'Create Table of Contents
' Create array with locations
Set firstsheet = Worksheet(2).Value
' Dim arrworksheets(2 To Worksheets.Count) As Long
For x = arr(firstsheet) To UBound(myArray)
Set sht = Worksheets(myArray(x))
sht.Activate
With Content_sht
.Hyperlinks.Add .Cells(x + 2, 3), "", _
SubAddress:="'" & sht.Name & "'!A1", _
TextToDisplay:=sht.Name
.Cells(x + 2, 2).Value = x
End With
Next x
提前非常感谢 据我所知,您希望遍历工作簿中的所有工作表,但不包括列表中的第一个工作表-目录页 有一个很好的例子说明了如何实现这一点,根据代码中的相似性判断,您可能已经看过了 您要查看的相关部分是:
'Create Array list with sheet names (excluding Contents)
ReDim myArray(1 To Worksheets.Count - 1)
For Each sht In ActiveWorkbook.Worksheets
If sht.Name <> ContentName Then
myArray(x + 1) = sht.Name
x = x + 1
End If
Next sht
试试这个
选项显式
Public Sub MakeTOC()'创建目录
常数TOC_COL=3
Const TOC_行=5
将wsTOC设置为工作表,ws设置为工作表,nextRow设置为长,linkAddress设置为字符串
设置wsTOC=ThisWorkbook.Worksheets(“Sheet3”)“TOC工作表
使用wsTOC.Cells(TOC_行-2,TOC_列)'设置标题单元格
.Value2=“目录”
.Font.Size=14
.Font.Bold=True
.HorizontalAlignment=xlCenter
以
nextRow=TOC_行
对于此工作簿中的每个ws。工作表的添加工作表名称列表
如果ws.Name wsTOC.Name,则
linkAddress=“”&ws.Name&“!A1”
带wsTOC.单元(下一步,TOC_COL)
.Value2=ws.Name
.Hyperlinks.Add.Cells(1),vbNullString,子地址:=linkAddress_
TextToDisplay:=ws.Name
.Font.Bold=True
.Offset(,-1)=nextRow-TOC_行+1
.偏移量(,-1).水平对齐=xlCenter
以
nextRow=nextRow+1
如果结束
下一个
wsTOC.Columns(TOC_COL).Columns.AutoFit
wsTOC.UsedRange.verticalignment=xlCenter
端接头
输出
您的实际问题是什么?什么不起作用?数组不是从工作表2开始的这一行没有意义
Set firstsheet=worksheet(2).Value
。它应该做什么?第一页(目录)的名称是什么?
Dim x As Integer
Dim count As Integer
Dim Content_sht As Worksheet
Dim sht_nam As String
count = ActiveWorkbook.Worksheets.count
Set Content_sht = Worksheets("Sheet1") 'whatever your contents page is called
For x = 2 To count
sht_nam = Worksheets(x).Name
With Content_sht
.Hyperlinks.Add .Cells(x + 2, 3), "", _
SubAddress:="'" & sht_nam & "'!A1", _
TextToDisplay:=sht_nam
.Cells(x + 2, 2).Value = x
End With
Next x
Option Explicit
Public Sub MakeTOC() 'Create Table of Contents
Const TOC_COL = 3
Const TOC_ROW = 5
Dim wsTOC As Worksheet, ws As Worksheet, nextRow As Long, linkAddress As String
Set wsTOC = ThisWorkbook.Worksheets("Sheet3") 'TOC Sheet
With wsTOC.Cells(TOC_ROW - 2, TOC_COL) 'Set title cell
.Value2 = "Table of Contents"
.Font.Size = 14
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
nextRow = TOC_ROW
For Each ws In ThisWorkbook.Worksheets 'Add list of Sheet Names
If ws.Name <> wsTOC.Name Then
linkAddress = "'" & ws.Name & "'!A1"
With wsTOC.Cells(nextRow, TOC_COL)
.Value2 = ws.Name
.Hyperlinks.Add .Cells(1), vbNullString, SubAddress:=linkAddress, _
TextToDisplay:=ws.Name
.Font.Bold = True
.Offset(, -1) = nextRow - TOC_ROW + 1
.Offset(, -1).HorizontalAlignment = xlCenter
End With
nextRow = nextRow + 1
End If
Next
wsTOC.Columns(TOC_COL).Columns.AutoFit
wsTOC.UsedRange.VerticalAlignment = xlCenter
End Sub