Excel精英培训网

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

[已解决]输入结构类似的sub的时候,有没有批量的简便方法?

[复制链接]
发表于 2015-2-11 17:03 | 显示全部楼层 |阅读模式
比如我现在做的这个代码,
都是从外部工作簿中提取数据,
然后把数据放在数组中。
Public Function lastunblankrow(location, sh, col)
lastunblankrow = location.Worksheets(sh).Range(col & "65536").End(xlUp).Row
End Function

Sub getdatanotified()
Set wbnotified = GetObject("C:\Users\Administrator\Desktop\new.xls")
e = lastunblankrow(wbnotified, "sheet1", "a")
namenotified = wblicensed.Worksheets("sheet1").Range("D3:D" & e)
locnotified = wblicensed.Worksheets("sheet1").Range("c3:c" & e)
ubnamenotified = UBound(namenotified, 1)
End Sub

Sub getdatalicensed()
Set wblicensed = GetObject("C:\Users\Administrator\Desktop\批准列表.xls")
e = lastunblankrow(wblicensed, "第一页", "a")
namelicensed = wblicensed.Worksheets("第一页").Range("c3:c" & e)
serial = wblicensed.Worksheets("第一页").Range("b3:b" & e)
ubnamelicensed = UBound(namelicensed, 1)
End Sub

getdatanotified()和getdatalicensed()
两个东西,结构是很相似的。
我就是想问下有没有办法,可以像函数一样,我只要把变量输入,
它就可以自动写出结构类似的sub来?

最佳答案
2015-2-13 22:45
你这里既然用X传递变量,应该做为模块级变量声明。
  1. Dim x

  2. Sub q()
  3. x = 1
  4. End Sub

  5. Function a(c)
  6. Dim d$
  7. d = c
  8. Application.Run d
  9. a = x
  10. End Function

  11. Sub test4()
  12. m = a("q")
  13. MsgBox m
  14. End Sub
复制代码
发表于 2015-2-11 21:30 | 显示全部楼层
  1. Sub demo2()
  2.     Dim a$
  3.     a = "demo3"
  4.     Application.Run a
  5. End Sub

  6. Sub demo3()
  7.     MsgBox "demo3"
  8. End Sub
复制代码
这样子?
回复

使用道具 举报

 楼主| 发表于 2015-2-13 14:49 | 显示全部楼层
hwc2ycy 发表于 2015-2-11 21:30
这样子?

显示未找到demo 3
回复

使用道具 举报

 楼主| 发表于 2015-2-13 14:57 | 显示全部楼层
这个帮我看看,为什么也不行
Sub q()
x = 1
End Sub

Function a(c)
Dim d$
d = c
Application.Run.d
a = x
End Function

Sub test4()
m = a("q")
MsgBox m
End Sub
回复

使用道具 举报

发表于 2015-2-13 22:44 | 显示全部楼层
  1. Sub q()
  2. x = 1
  3. End Sub

  4. Function a(c)
  5. Dim d$
  6. d = c
  7. Application.Run d
  8. a = x
  9. End Function

  10. Sub test4()
  11. m = a("q")
  12. MsgBox m
  13. End Sub
复制代码
回复

使用道具 举报

发表于 2015-2-13 22:45 | 显示全部楼层    本楼为最佳答案   
你这里既然用X传递变量,应该做为模块级变量声明。
  1. Dim x

  2. Sub q()
  3. x = 1
  4. End Sub

  5. Function a(c)
  6. Dim d$
  7. d = c
  8. Application.Run d
  9. a = x
  10. End Function

  11. Sub test4()
  12. m = a("q")
  13. MsgBox m
  14. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-2-15 09:37 | 显示全部楼层
thx
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 21:41 , Processed in 0.329644 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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