关于VBA中定义变量类型的格式的探讨!

libfiretwo 2005-10-26 04:14:42
如:A方法:dim x,y as string
B方法:dim x as string
dim y as string 实际上B方法只是把A方法中的两个变量分两行写,按理说是完全相同.

但下面有个实例,VBA的表现确不一样,请大家试一试:
比如:表1名为AAA 表2名为:20050822 表3名为:20050819
表1中有如下数据
A B C
姓名 成绩 班级
张三 85 20050819
李四 86 20050822
王五 87 20050822
赵六 88 20050819
. . .
. . .
. . .

我要用宏把不同班级的学生放在对应班级名的工作表里;我写了下面的宏
dim xm,bj as string
dim cj,x as intege
x=2
do while sheets("AAA").cells(x,1).value<>""
xm=sheets("AAA").cells(x,1).value
cj=sheets("AAA").cells(x,2).value
bj=sheets("AAA").cells(x,3).value
sheets(bj).cells(x,1)=xm
sheets(bj).cells(x,2)=cj
x=x+1
loop
逻辑上应该没问题吧,但运行到第八行时说:下标越界。
但把里面第一行变量定义语句分两行写
dim bj as string
dim xm as string 程序就能运行过去,这是为什么呀!! 求高手赐教!
...全文
693 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
libfiretwo 2005-10-27
  • 打赏
  • 举报
回复
我是反映这种事实,到底分开定义变量和一起定义变量 是不是真的有所区别?
不知有否高手知道!!!
libfiretwo 2005-10-27
  • 打赏
  • 举报
回复
bj=sheets("AAA").cells(x,3).value 这句取到的值是绝对有对应的表的.
青蛙王子 2005-10-27
  • 打赏
  • 举报
回复
VBA试运行时类型检查,这样的问题只能问微软

你可以尝试着自己调调看
bj=sheets("AAA").cells(x,3).value
取道的值对应的Sheet是否存在?

不要把问题停留在表面,深入分析一下。
要不debug干吗?
libfiretwo 2005-10-27
  • 打赏
  • 举报
回复
哦,经楼上的一说,自己再debug试一试,发现果真如此。
原来VBA也有这也有这种搞法,真叫人生不如死。
哎,感概 + 佩服 !
fice_chen 2005-10-27
  • 打赏
  • 举报
回复
在vba中,只能对变量一个一个的定义类型,如楼主的:
A方法:dim x,y as string
B方法:dim x as string
dim y as string
在A方法中,实际上只是定义y为string类型,而x为变体类型;而在B方法中,分别将x与y定义为string类型。如果在debug方式下将鼠标分别放在x和y上,在A方法中会显示:“x=空值”,“y=""”,在B方法中会显示:“x=""”,“y=""”。这应该就是区别吧!

5,139

社区成员

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

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