尝试select范围时出现语法错误
下面的代码一直给我语法错误,只要我跑到这一行: Range(“SheetList[Worksheet Index]”).Select
:
Private Sub Worksheet_Activate() Dim sheet As Object Dim SheetName As String On Error GoTo Error With Sheets("Index").ListObjects("SheetList") If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete End If End With Range("SheetList[Worksheet Index]").Select '<--------- syntax error For Each sheet In Sheets SheetName = sheet.Name ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _ SubAddress:=SheetName & "!A1", _ TextToDisplay:=SheetName ActiveCell.Offset(1, 0).Select Next sheet Exit Sub Error: MsgBox "Unable to create index" End Sub
我已经创build了SheetList
表和Index
表。
任何人都可以帮我解决这个问题吗?
范围期望范围(列字母行号)
EX:范围(“A1”)
要么
范围(列信件行号:列信件行号)
EX:范围(“A1:B22”)
还有其他一些使用Range的方法。 看这里。 https://msdn.microsoft.com/en-us/library/office/ff838238.aspx
什么是SheetList [工作表索引],我们如何select它。 我不确定select它存在的范围将做到这一点。 为什么你要通过select这个对象来做?
您正在尝试select刚刚删除的内容。 Range("SheetList[Worksheet Index]")
引用SheetList
结构化表的.DataBodyRange
中的Worksheet Index
标题下的列。 您先前用.DataBodyRange.Delete
其与所有其他数据一起删除了几行。 你的意思是简单的.ClearContents
?
如果您要开始放置新logging,则至less需要Range("SheetList").DataBodyRange
。
With Sheets("Index").ListObjects("SheetList") If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete End If .ListRows.Add 'leave at least one row to select below End With Range("SheetList[Worksheet Index]").Select '<~~now it selects the empty row we created
如果将.ListRows.Add
移动到For Each … Next语句中作为每个新条目的前言,则不必依赖.Select
和ActiveCell
来实现您的目标。