新足迹

 找回密码
 注册

精华好帖回顾

· 我的两年的做工找工经历——纪念我们登陆两周年 (刚从GC回来,争取近日更新) (2008-1-14) qqyang · 我的“自白” (2008-9-22) 着我青衣永飘零
· 当了妈妈 更加理解父母 (2008-7-11) 仰望星空 · 三馅包---------香菇菜包、豆沙包、奶黄包 (2006-11-19) poloand
Advertisement
Advertisement
查看: 1571|回复: 20

[IT] Excel VBA code求助 [复制链接]

发表于 2014-3-16 12:13 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这儿有 Excel高手吗 ,求助!

关于 chart update的 :

Sheets("CIT").Select
    Dim iRow As Integer
    iRow = Sheets("Master").Range("B2").Value
    ActiveSheet.ChartObjects("Chart 1").Activate
   
ActiveChart.SetSourceData Source:=Range("C75:C76,K75:" & Chr(75 + iRow - 6) & "76")

红色这段看不懂,chr什么 意思,上引号怎么用的 ?  
Advertisement
Advertisement

发表于 2014-3-16 12:17 |显示全部楼层
此文章由 livetoeat 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 livetoeat 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这是天书么?

发表于 2014-3-16 12:23 |显示全部楼层
此文章由 Aries2012 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Aries2012 所有!转贴必须注明作者、出处和本声明,并保持内容完整
iRow返回的是master这个sheet的B2单元格的值

chr这个函数里面可以放不同的数字,返回的是对应数字代码的字符

所以红色最后返回的应该会是一个字母加上数字对应的单元格。

我最近也在自学VBA中,如果理解错了的话先道个歉。。。

发表于 2014-3-16 12:34 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Aries2012 发表于 2014-3-16 11:23
iRow返回的是master这个sheet的B2单元格的值

chr这个函数里面可以放不同的数字,返回的是对应数字代码的字 ...

谢谢回答。

我现在不理解的是,iRow的这个cell是sheet 1 上的一个cell是指定周的,然后rangesource里面的是指定sheet 2里面这周利润的,随着sheet1每周数字的变换,他会自动pickup新的一周的利润然后显示在图表。但是如果我的source range 改变,且不在连续的两行,我该怎么继续保持 sheet 1 这个variable呢?

发表于 2014-3-16 12:34 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
livetoeat 发表于 2014-3-16 11:17
这是天书么?

我也这么认为,为了工作必须马上要读会他。

发表于 2014-3-16 12:42 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Dim 具体用来做什么的呢?
Advertisement
Advertisement

发表于 2014-3-16 12:42 |显示全部楼层
此文章由 Aries2012 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Aries2012 所有!转贴必须注明作者、出处和本声明,并保持内容完整
JoyRoot 发表于 2014-3-16 12:34
谢谢回答。

我现在不理解的是,iRow的这个cell是sheet 1 上的一个cell是指定周的,然后rangesource里面 ...

这程序是你写的?

貌似不用VBA, 直接用函数好像也能做到你要的效果。。。

发表于 2014-3-16 13:23 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Aries2012 发表于 2014-3-16 11:42
这程序是你写的?

貌似不用VBA, 直接用函数好像也能做到你要的效果。。。 ...

是这样的,做好后是给经理用的,他只要按个commend button 就什么都给他update好了。

我写了最基本一段,最后sourcerange 不是我写的。就这段不理解。

发表于 2014-3-16 13:46 |显示全部楼层
此文章由 Aries2012 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Aries2012 所有!转贴必须注明作者、出处和本声明,并保持内容完整
JoyRoot 发表于 2014-3-16 12:42
Dim 具体用来做什么的呢?

Dim 语句确定变量的数据类型和其他信息

其实我也才学了皮毛,一起等高人帮你解答啦~

发表于 2014-3-16 13:50 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
好的一起学习。
高人不知何时出现。

发表于 2014-3-16 13:57 |显示全部楼层
此文章由 乘物以游心 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乘物以游心 所有!转贴必须注明作者、出处和本声明,并保持内容完整
ActiveChart.SetSourceData Source:=Range("C75:C76,K75:" & Chr(75 + iRow - 6) & "76")

Chr是把整数变成对应的字符,如chr(65)就是A

假设IRow是1(第一周),就变成了

Range("C75:C76,K75:" & Chr(75 + 1 - 6) & "76")

也就是
Range("C75:C76,K75:" & Chr(70) & "76")

也就是
Range("C75:C76,K75:" & ”F“ & "76")

也就是
Range("C75:C76,K75:F76")

通过这种方式,来选择表格的数据源。

超然世外,欲乘物以游心,
逍遥驰骋,必先了悟宇宙之真谛。
Advertisement
Advertisement

发表于 2014-3-16 14:05 |显示全部楼层
此文章由 yang~_~ 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yang~_~ 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Dim是声明变量用的。
chr是根据数字取相对应ASCII字符,如chr(13)代表回车。你代码中的chr(75)代表K。如果iRow=10,那么就是chr(79)代表O,这句代码就等同于ActiveChart.SetSourceData Source:=Range("C75:C76,K75:O76")

发表于 2014-3-16 14:10 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 JoyRoot 于 2014-3-16 13:38 编辑
乘物以游心 发表于 2014-3-16 12:57
ActiveChart.SetSourceData Source:=Range("C75:C76,K75:" & Chr(75 + iRow - 6) & "76")

Chr是把整数变成 ...


那如果我要现实的数据不在连续的行呢,我要图片选在

日期行在:K75 到 O75

数据行在: K83到 O83 是

这句话该怎么写?

   ActiveChart.SetSourceData Source:=Range("K75:" & Chr(75 + iRow - 6) & "75", "K83: " & Chr(75 + iRow - 6) & "83") ?

好像not working .

结果我这样写了,可以用只是数据先update 然后再update x轴的日子。

ActiveChart.SetSourceData Source:=Range("K83:" & Chr(75 + iRow - 6) & "83")
ActiveChart.SeriesCollection(1).XValues = "='sheet1'!$K$75:" & Chr(75 + iRow - 6) & "75"

这个可用了,您看呢。

发表于 2014-3-16 14:18 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 JoyRoot 于 2014-3-16 19:36 编辑
yang~_~ 发表于 2014-3-16 13:05
Dim是声明变量用的。
chr是根据数字取相对应ASCII字符,如chr(13)代表回车。你代码中的chr(75)代表K。如果i ...


谢谢你的指点。

发表于 2014-3-16 20:41 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
好像有bug, 如果输入的这周是21周以上- 52周,Chart 就不会update了。错误提示如下:

‘运行时错误1004
’方法Rang 作用于对象‘-Global'时失败。

发表于 2014-3-16 22:12 |显示全部楼层
此文章由 jy00064164 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jy00064164 所有!转贴必须注明作者、出处和本声明,并保持内容完整
JoyRoot 发表于 2014-3-16 20:41
好像有bug, 如果输入的这周是21周以上- 52周,Chart 就不会update了。错误提示如下:

‘运行时错误1004

按照你的设定来看 irow的值应该是[-4,21],分别代表A-Z
超过这个范围就不起作用了
代码本身就局限性,超过Z列的数据就会报错
建议用cells函数或者用named range来控制
Advertisement
Advertisement

发表于 2014-3-16 22:50 |显示全部楼层
此文章由 voidray 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 voidray 所有!转贴必须注明作者、出处和本声明,并保持内容完整
能用自带函数解决的问题最好不要弄vba。现在遇到runtime error还有个提示,万一vba在提数据的时候出错那可连提示都没有。我可有切身体会的。

发表于 2014-3-17 18:25 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
jy00064164 发表于 2014-3-16 21:12
按照你的设定来看 irow的值应该是[-4,21],分别代表A-Z
超过这个范围就不起作用了
代码本身就局限性,超过 ...

谢谢,你说的name range 是用dynamic chart 吗?

发表于 2014-3-17 18:26 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
voidray 发表于 2014-3-16 21:50
能用自带函数解决的问题最好不要弄vba。现在遇到runtime error还有个提示,万一vba在提数据的时候出错那可 ...

谢谢指点。

发表于 2014-3-18 20:24 |显示全部楼层
此文章由 jy00064164 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jy00064164 所有!转贴必须注明作者、出处和本声明,并保持内容完整
JoyRoot 发表于 2014-3-17 18:25
谢谢,你说的name range 是用dynamic chart 吗?

formula => define name/name manager

发表于 2014-3-18 20:25 |显示全部楼层
此文章由 JoyRoot 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 JoyRoot 所有!转贴必须注明作者、出处和本声明,并保持内容完整
jy00064164 发表于 2014-3-18 19:24
formula => define name/name manager

已经用macro搞定了,谢谢。
Advertisement
Advertisement

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部