Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: jipingzhuang

[已解决]求助:帮忙写个宏

[复制链接]
发表于 2012-7-9 21:08 | 显示全部楼层
jipingzhuang 发表于 2012-7-9 19:57
麻烦帮忙看看,谢谢。。在线坐等

ARR11(I, 6) = Mid(ARR1(I, 5), 1, InStr(ARR1(I, 5), "户") - 1)  '提取简称

中 i=1 时 ARR1(I, 5) 里的值是  "物料名称"  ,这时面是没有 "户" 字的,所以提示

"无效的参数或调用过程"

关于你说的改名后还能不能用,首先,工作表的几种表示方式你要明白

第一种  codename
  通常我们会看到别人这样写代码  sheet1.range("A1")
  这里的 sheet1 就是工作表的 codename
  使用这种方式的好处是
1,有自动成员列表,如果没有,可以按 Ctrl + J 如果 sheet1 不存在,即使按了也不会出来自动成员列表
2,代码处理数据时,不会受到 改变工作表名称的影响
3,代码处理数据时,不会受到 工作表位置的影响

第二种 sheets("名称")
  这种就是你现在用的 sheets("Data")
  这种的好处是,我们知道每个工作薄中都有一个这样的名称,那么代码就可以直接操作,
  如果是用 Codename 那么每个工作薄的 Data 工作的Codename 是有可能不一样的,这时候就应该考虑使用这种方法

第三种 sheets(顺序)
  有时候会见到 sheets(1).range("A1")
  这里需要注意的是,sheets(1) 和 sheets("1") 是不一样的
  使用了 "" 就成了表的名称了,不使用 ""  就是表的顺序

这里的顺序是指左下角,从左往右 升序排列,如果中间有隐藏的,顺序依然不变
  如第二张表的名称是 Data  你将其隐藏后, sheets(2).name 依然是 Data

这种的发处是,我们知道每个工作薄中的第1张表都是需要处理的表,那就可以直接使用 sheets(序号) 的表示方式来写

三种表式方式,各有优点,若要使用自动成员列表,只有使用 第一种方式

你搞清楚了这三种方式,就能找到最适合自己用的方式了





回复

使用道具 举报

 楼主| 发表于 2012-7-10 08:03 | 显示全部楼层
无聊的疯子 发表于 2012-7-9 21:08
ARR11(I, 6) = Mid(ARR1(I, 5), 1, InStr(ARR1(I, 5), "户") - 1)  '提取简称

中 i=1 时 ARR1(I, 5) 里 ...

恩 ,谢谢,明白。还有一个疑问,表格里面的数据我如果更换了就这个VB就执行不了了,DATA里面的数据也是通过VB提取的,然后执行合并的时候就没反应了
回复

使用道具 举报

发表于 2012-7-10 10:04 | 显示全部楼层
jipingzhuang 发表于 2012-7-10 08:03
恩 ,谢谢,明白。还有一个疑问,表格里面的数据我如果更换了就这个VB就执行不了了,DATA里面的数据也是通 ...

合并以后,需要添加一个辅助变量来记录,还需要添加一个判断

简单的说

A2:A5 是合并单元格,里面的值是 "张三"
A6:A9 是合并单元格,里面的值是 "李四"

那么 Arr=range("A2:A9")

打开本地窗口,你可以看到, 只有 arr(1,1) 是张三, arr(5,1) 是李四
其它的都是 空白的,所以当循环到有值的时候 就给变量赋值,没有值的时候,这个变量自然就是上面那个值了

很多东西你都可以到本地窗口里去查看到结果的

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 16:11 , Processed in 0.262055 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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