Vba “运行时错误”;1004“;具有指定的范围值

Vba “运行时错误”;1004“;具有指定的范围值,vba,excel,range,Vba,Excel,Range,正在尝试返回命名范围的值-first\u yr-即单元格F1595。它有这个公式 =MIN(us_forcst_v2!J9:J14) 当我单步执行宏时,在以下行中出现1004错误: LY1 = Range("last_yr").Value 此外,FY1变量为“空”。我甚至用手动输入的值替换了公式,得到了相同的结果 Sub CommandButton3_Click() Dim us_pop_data As Worksheet Dim i, FY1, LY1, NumYrs1 As Long

正在尝试返回命名范围的值-
first\u yr
-即单元格
F1595
。它有这个公式

=MIN(us_forcst_v2!J9:J14)
当我单步执行宏时,在以下行中出现1004错误:

LY1 = Range("last_yr").Value 
此外,
FY1
变量为“空”。我甚至用手动输入的值替换了公式,得到了相同的结果

Sub CommandButton3_Click()
Dim us_pop_data As Worksheet
Dim i, FY1, LY1, NumYrs1 As Long
Dim first_yr, last_yr, test As Range
Application.ScreenUpdating = False
Sheets("us_pop_data").Range("test").ClearContents
With Sheets("us_pop_data").Activate
    'FY1 = Range("first_yr")
    FY1 = Range("f1595").Value
    LY1 = Range("last_yr").Value  'stops here
    NumYrs1 = LY1 - FY1

    For i = 0 To NumYrs1
        Cells(1596, 15 + i) = FY1 + i
    Next i
End With
Application.ScreenUpdating = True
End Sub
有人能帮忙解决这个错误吗

由于FY1和LY1现在获得了值,我做了一些更改,效果稍微好一些,但是值没有放在“Cells(1596,15+I)=FY1+1”定义的区域中。msgbox在循环时给出正确的值,但值永远不会位于该范围内

Sub CommandButton3_Click()
Dim us_pop_data As Worksheet
Dim i, FY1, LY1, NumYrs1 As Long
Dim frcstcolhdr_t1, first_yr, last_yr, test As Range

Set FY1 = Worksheets("us_pop_data").Range("first_yr")
Set LY1 = Worksheets("us_pop_data").Range("last_yr")
    With Sheets("us_pop_data")
        .Range("frcstcolhdr_t1").ClearContents
        NumYrs1 = LY1 - FY1
        For i = 0 To NumYrs1
            Cells(1596, 15 + i) = FY1 + i
            MsgBox "Value is" & Cells(1596, 15 + i).Value
         Next i
   End With
End Sub

谢谢

声明变量时,您需要为每个变量指定数据类型,行
Dim i,FY1,LY1,NumYrs1 As Long
将只声明
NumYrs1
Long
,其他变量将声明为
Variants
。为了将它们全部声明为
Long
您需要这样的结构:
Dim i as Long,FY1 as Long,LY1 as Long,NumYrs1 as Long
听起来好像没有设置范围或有#Ref错误。在“公式”菜单的“名称管理器”中选中它。另外,检查工作表
us\u pop\u data
上是否为工作表或整个工作簿定义了范围
first\u yr
?您的
With
块没有做任何事情。它应该是这样开始的:
以表单(“us\u pop\u data”)
开始,然后您的
范围和
单元格
调用应该在它们前面有一个句号,如下所示:
.Range(“f1595”).Value
您告诉我们您的命名范围是
第一年
,但随后您尝试访问
范围(“最后一年”)
所以我猜上一年没有范围
?检查您的名称管理器当声明变量时,您需要为每个变量指定数据类型,行
Dim i,FY1,LY1,NumYrs1 As Long
将只声明
NumYrs1
Long
,其他变量将声明为
Variants
。为了将它们全部声明为
Long
您需要这样的结构:
Dim i as Long,FY1 as Long,LY1 as Long,NumYrs1 as Long
听起来好像没有设置范围或有#Ref错误。在“公式”菜单的“名称管理器”中选中它。另外,检查工作表
us\u pop\u data
上是否为工作表或整个工作簿定义了范围
first\u yr
?您的
With
块没有做任何事情。它应该是这样开始的:
以表单(“us\u pop\u data”)
开始,然后您的
范围和
单元格
调用应该在它们前面有一个句号,如下所示:
.Range(“f1595”).Value
您告诉我们您的命名范围是
第一年
,但随后您尝试访问
范围(“最后一年”)
所以我猜上一年没有范围
?查一下你的名字