Excel精英培训网

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

[已解决]VBA 多个工作簿之间的工作表赋值报错

[复制链接]
 楼主| 发表于 2022-4-21 09:30 | 显示全部楼层
vitrel 发表于 2022-4-20 17:28
楼主,我又多事了。7楼网友的意思是,正确、完整的代码应该是:

sxws.Range(sxws.Cells(3 + sum, 4),  ...

已解决,感谢哈。之前以为指定了工作表的Range对象就不用指定Cells了,看来还得很严谨才行。非常感谢您跟7楼的指导~
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2022-4-21 09:33 | 显示全部楼层
vitrel 发表于 2022-4-20 17:28
楼主,我又多事了。7楼网友的意思是,正确、完整的代码应该是:

sxws.Range(sxws.Cells(3 + sum, 4),  ...

另外想请教下,如果换成用WITH语法,应该是怎么写?主要赋值的两个Range对象都不一样
回复

使用道具 举报

发表于 2022-4-21 11:27 | 显示全部楼层
save008 发表于 2022-4-21 09:33
另外想请教下,如果换成用WITH语法,应该是怎么写?主要赋值的两个Range对象都不一样

With的用法是为了省略父对象,用到您的代码中,就是在With sxwb到End With之间,所有sxwb都可省略。如:

  1. With sxwb
  2.     .Range(.Cells(3 + sum, 4), .Cells(3 + sum + count, 4)) = Application.Transpose(shuxingji)
  3.     .Range(.Cells(3 + sum, 5), .Cells(3 + sum + count, 5)) = Application.Transpose(shuxing)
  4. End With
复制代码


对于一段代码中,某一父对象经常出现的情况下,使用With,确实可以简化不少代码。

回复

使用道具 举报

 楼主| 发表于 2022-4-21 14:32 | 显示全部楼层
vitrel 发表于 2022-4-21 11:27
With的用法是为了省略父对象,用到您的代码中,就是在With sxwb到End With之间,所有sxwb都可省略。如:
...

实测用了并不能赋值到汇总表sxwb,只能在当前把数组赋值到当前工作表
回复

使用道具 举报

发表于 2022-4-21 17:28 | 显示全部楼层
save008 发表于 2022-4-21 14:32
实测用了并不能赋值到汇总表sxwb,只能在当前把数组赋值到当前工作表

楼主,您好!
暂不知您反映的这个情况问题出在哪,
With代码在我的电脑上测试是成功的,
取消Activate,使用With后,赋值在sxwb中,与谁是当前工作簿、当前工作表无关。
附上我的测试文档,如果楼主有兴趣的话可以测试一下,Test3。

Test.rar

60.08 KB, 下载次数: 1

回复

使用道具 举报

 楼主| 发表于 2022-4-22 11:44 | 显示全部楼层
vitrel 发表于 2022-4-21 17:28
楼主,您好!
暂不知您反映的这个情况问题出在哪,
With代码在我的电脑上测试是成功的,

感谢,应该是我写法问题,没把cells上加上'.'。那意思是WITH xx   END WITH之间的,跟xx.cells,xx.range,xx.usedrange的意思一样。都可以省略对象名

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 03:42 , Processed in 0.422194 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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