Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA中If函数的下标超出范围_Vba_Excel - Fatal编程技术网

VBA中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

我正在做一个工资单应用程序,在尝试为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").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?是它的号码还是名字?