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
您告诉我们您的命名范围是第一年
,但随后您尝试访问范围(“最后一年”)
所以我猜上一年没有范围
?查一下你的名字