Excel 错误代码1004 应用程序定义或对象定义错误

Malelion 2012-07-09 09:11:43
' 生成报表
Public Function GetReport(NowDate As Date) As Boolean
GetReport = False
On Error GoTo WZError
Dim NameList, NR As Long, NC As Long, NName As String
NR = Application.ActiveCell.Row '获取当前单元格的行
NC = Application.ActiveCell.Column '获取当前单元格的列
NR = NR + 1: NC = NC + 1
NName = Application.ActiveWorkbook.ActiveSheet.Name
NameList = Array("Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "Q10", "Q11", "H1", "H2", "H3", "H4", "H5", "Q17", "Q18")

'Application.ScreenUpdating = False '禁止屏幕刷新,加快响应速度
'Application.DisplayAlerts = False
'Application.Calculation = xlManual '关闭自动重算代码

Dim SheetN As Integer
SheetN = Application.Sheets.Count '获取总的工作表数目

Const SRow As Long = 4 '搜索的起始行号
Const ERow As Long = 100 '搜索的终止行号
Dim FindRange As String
FindRange = "Q" & SRow & ":" & "Q" & ERow '搜索范围

Dim i As Long, j As Long, NowRow As Long, tRange, IsExist As Boolean
For i = 0 To UBound(NameList) Step 1
IsExist = False
tRange = Application.ActiveWorkbook.Sheets(NameList(i)).Range(FindRange)
For j = 1 To UBound(tRange) Step 1
If tRange(j, 1) = NowDate Then GoTo CreateReport: IsExist = True
Next j
If IsExist = False Then GoTo NextSheet
CreateReport:
With Application.ActiveWorkbook.Sheets(NName)
.Cells(NR, NC).Value = NameList(i)'每次运行到这里就提示“1004 应用程序定义或对象定义错误”
End With
NextSheet:
Next i
GetReport = True: Exit Function
WZError:
MsgBox "错误代码:" & Err.Number & vbCrLf & "错误信息:" & Err.Description, vbOKOnly + vbInformation, "提醒:"
Err.Clear
End Function

错误行是: .Cells(NR, NC).Value = NameList(i)'每次运行到这里就提示“1004 应用程序定义或对象定义错误”,但是在其他函数中不会提示这样的错误,望高手帮忙,谢谢!
...全文
1216 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Malelion 2012-07-09
  • 打赏
  • 举报
回复
是不是只能在宏里面才能执行这样的代码?如果是怎么解决?请高手指点迷津~
Malelion 2012-07-09
  • 打赏
  • 举报
回复
这几个值这个没有问题的,我现在测试下来,好像function中不可以这样用似的,在sub中没有问题。请高手指点。
dsd999 2012-07-09
  • 打赏
  • 举报
回复
打个断点,看看NR,NC,i的值是多少。
dsd999 2012-07-09
  • 打赏
  • 举报
回复
在宏里可以这样用。
Sub aaa()


bbb
End Sub


Function bbb()
Dim NameList
NameList = Array("Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "Q10", "Q11", "H1", "H2", "H3", "H4", "H5", "Q17", "Q18")

With ActiveSheet
For i = 0 To UBound(NameList)
.Cells(i + 1, 1) = NameList(i)
Next i
End With

End Function

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧