Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2342|回复: 6

请教各位老师,下面这段代码为何放入模块中再调用怎么总是出错?

[复制链接]
发表于 2015-2-2 10:16 | 显示全部楼层 |阅读模式
本帖最后由 tinytiger 于 2015-2-3 12:09 编辑

放在工作表中运行没有问题,放在模块中调用的时候总是出现“运行时错误424,要求对象”,停止在标为红色字体的这一行,这是怎么回事?谢谢各位老师!
Sub sfdj()
  Dim myPath$, sf$, yf$
  Dim lastrow%
  Dim i As Integer, j As Integer
  myPath = ActiveWorkbook.Path & "\"
  sf = "出院随访登记表.xls"
  yf = ActiveSheet.Name
  yf = Left(yf, Len(yf) - 7)
  For i = 1 To Workbooks.Count
    j = j + CInt(Workbooks(i).Name = sf)
  Next i
  If j Then
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Activate
  Else
    If Month(Date) = 1 And Len(Dir(myPath & "出院随访登记表_" & Year(Date) - 1 & ".xls")) = 0 Then
      MsgBox "请再点一次随访!"
      Workbooks.Open Filename:=myPath & sf
      Exit Sub
    Else
      Workbooks.Open Filename:=myPath & sf
      Workbooks(sf).Sheets(yf & "月份出院随访登记表").Activate
    End If
  End If
  lastrow = Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(Rows.Count, 1).End(xlUp).Row
  If lastrow <= 73 Then
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 1) = lastrow
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 2) = Cells(Target.Row, 2)
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 4) = Cells(Target.Row, 3)
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 6) = Cells(Target.Row, 5)
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 8) = Cells(Target.Row, 1)
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 12) = Cells(Target.Row, 10)
    If Cells(Target.Row, 7) = "" Then
      Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 7) = Cells(Target.Row, 6)
    Else
      Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 7) = Cells(Target.Row, 6) + "、" + Cells(Target.Row, 7)
    End If
    Randomize
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 9) = Cells(Target.Row, 1) + Int((14 * Rnd) + 14)
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 11) = Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(Int((16 * Rnd) + 75), 11)
    Workbooks(sf).Sheets(yf & "月份出院随访登记表").Cells(lastrow + 1, 3).Select
    MsgBox "请输入性别及单位地址!"
  End If
End Sub


SF.rar

67.98 KB, 下载次数: 2

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2015-2-3 12:12 | 显示全部楼层
已上传附件,请各位老师指导!!!

点评

这个代码大量运用单元格,效率不会很高,建议详细说明要求,用数组编写  发表于 2015-2-3 15:47
回复

使用道具 举报

发表于 2015-2-3 15:34 | 显示全部楼层
本帖最后由 爱疯 于 2015-2-3 16:01 编辑

SF2.rar (55.06 KB, 下载次数: 2)
回复

使用道具 举报

 楼主| 发表于 2015-2-3 15:59 | 显示全部楼层
本帖最后由 tinytiger 于 2015-2-3 16:01 编辑
爱疯 发表于 2015-2-3 15:34
原因:Target是工作表事件的参数,模块1的sfdj()不可调用、也不认识该参数,所以报错。
解决:把sfdj( ...

谢谢,知道原因了,看来这些代码只能放在工作表中调用了!
因为共有12个登记表,本来想省一些事,看来不行了,有别的方法可以实现吗?
回复

使用道具 举报

发表于 2015-2-4 11:05 | 显示全部楼层
把sfdj搞成带参数的sfdj(r),调用的时候输入r值
回复

使用道具 举报

发表于 2015-2-4 11:06 | 显示全部楼层
call sfdj(target.row)
回复

使用道具 举报

 楼主| 发表于 2015-2-4 12:19 | 显示全部楼层
grf1973 发表于 2015-2-4 11:06
call sfdj(target.row)

还是不行,提示“错误的参数号或无效的属性赋值”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-11 19:13 , Processed in 0.217305 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表