VBA中If函数的下标超出范围
我正在做一个工资单应用程序,在尝试为VBA脚本执行if函数时,我一直收到此消息 这是If语句的第一行,这让我很难过VBA中If函数的下标超出范围,vba,excel,Vba,Excel,我正在做一个工资单应用程序,在尝试为VBA脚本执行if函数时,我一直收到此消息 这是If语句的第一行,这让我很难过 Sub PayPeriod() If Sheets("sheet30").Range("e17") = "1" Then 'ERROR HERE Sheets("Week 1").Select ElseIf Sheets("sheet30").Range("e17") = "2" Then Sheets("Week 2").Selec
Sub PayPeriod()
If Sheets("sheet30").Range("e17") = "1" Then 'ERROR HERE
Sheets("Week 1").Select
ElseIf Sheets("sheet30").Range("e17") = "2" Then
Sheets("Week 2").Select
ElseIf Sheets("sheet30").Range("e17") = "3" Then
Sheets("Week 3").Select
ElseIf Sheets("sheet30").Range("e17") = "4" Then
End If
End Sub
尝试使用变量并正确声明它们。您需要限定图纸位置。在顶部声明变量,给它们赋值一次,然后在代码中使用该变量。这样,如果图纸名称或单元格引用发生更改,可以在一个位置快速调整宏。我在示例中留下了.Select语句,但请注意,您几乎不需要选择元素来处理它们
Option Explicit
Sub PayPeriod()
Dim ws As Worksheet
Dim rng As Range
Set ws = ThisWorkbook.Sheets("Sheet30")
Set rng = ws.Range("E17")
If rng = "1" Then
ws.Range("Week1").Select
[rest of your code]
End Sub
检查您的工作簿是否真的有工作表30,并尝试此工作簿。工作表30.Range17这是工作表30,我刚刚尝试了那一行,得到了相同的结果。您是说这是工作表30?是它的号码还是名字?