excel - VBA下标超出范围和Excel的默认变量
问题描述
这是我在这里的第一篇文章,我几乎没有接受过正式的编码培训,所以这可能是一个非常简单的问题。
在运行由以下代码定义的宏时,我遇到了错误 9,VBA 下标超出范围。具体来说,它是 Sub Select_Last() 函数。Excel 不喜欢随后的表达式,但是如果在单独的 Excel 文件中单独使用它,那么它可以正常工作。
我认为问题在于 Excel 的默认变量(Activesheet 等)相互冲突。但我不确定如何解决这个问题。其他潜艇工作正常。任何人都可以帮忙吗?谢谢你。
Public lastsheet As String
Sub Select_Last()
Sheets(lastsheet).Select
End Sub
Sub Protect()
For i = 1 To Sheets.Count
Sheets(i).Protect
Next i
End Sub
Sub UnProtect()
For i = 1 To Sheets.Count
Sheets(i).UnProtect
Next i
End Sub
Sub SelectUnlockedCells()
Dim WorkRng As Range
Dim OutRng As Range
Dim Rng As Range
On Error Resume Next
Set WorkRng = Application.ActiveSheet.UsedRange
Application.ScreenUpdating = False
For Each Rng In WorkRng
If Rng.Locked = False Then
If OutRng.Count = 0 Then
Set OutRng = Rng
Else
Set OutRng = Union(OutRng, Rng)
End If
End If
Next
If OutRng.Count > 0 Then OutRng.Select
Application.ScreenUpdating = True
End Sub
其他功能正常。
解决方案
考虑:
Public lastsheet As String
Sub Select_Last()
lastsheet = Sheets(Sheets.Count).Name
Sheets(lastsheet).Select
End Sub
关键问题是在使用变量之前为其赋值。