无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 15884|回复: 12
打印 上一主题 下一主题

[求助] 请问VBA的AddComment报错可能是什么情况?

[复制链接]
跳转到指定楼层
1#
发表于 2023-6-20 12:49:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
RT,VBA中使用addcomment报错,尝试过类似以下几种写法:cells(8,1).addComment("xxx")
range(cells(8,1)).addcomment
range(cells(8,1),cells(8,1)).addcomment
range(cells(8,1).address(0,0)).addcomment


主要是行列要用变量,所以用range不太方便,有没有懂行的大佬来指导下这是啥毛病?

2#
 楼主| 发表于 2023-6-20 12:55:54 | 只看该作者
补充一下,使用cells(8,1).value是可正常对单元格进行赋值和读取的
回复

使用道具 举报

3#
发表于 2023-6-20 13:21:05 | 只看该作者
本帖最后由 2011ohte 于 2023-6-20 13:24 编辑


一般Cells比Range方便
批注要先清除再增加


  1. Sub test()
  2. Cells(9, 1).ClearComments
  3. Cells(9, 1).AddComment "http://bbs.wuyou.net/"
  4. End Sub
复制代码



点评

能不能用Cells批量添加批注,试了下Range("A1:B5")=数组的形式直接写速度快些,用Cells时我用用for to 循环,效率低速度慢了一拍  详情 回复 发表于 2023-6-21 16:35
原来是要先清除才能添加,我试好久都没搞定,还以为哪有问题呢...  详情 回复 发表于 2023-6-20 14:29
很少做这项题目,学习了  发表于 2023-6-20 13:33
回复

使用道具 举报

4#
 楼主| 发表于 2023-6-20 14:29:33 | 只看该作者
2011ohte 发表于 2023-6-20 13:21
一般Cells比Range方便
批注要先清除再增加

原来是要先清除才能添加,我试好久都没搞定,还以为哪有问题呢...
回复

使用道具 举报

5#
 楼主| 发表于 2023-6-21 16:35:48 | 只看该作者
2011ohte 发表于 2023-6-20 13:21
一般Cells比Range方便
批注要先清除再增加

能不能用Cells批量添加批注,试了下Range("A1:B5")=数组的形式直接写速度快些,用Cells时我用用for to 循环,明显可以看出来效率低速度慢了一拍
回复

使用道具 举报

6#
发表于 2023-6-25 08:33:04 | 只看该作者
数组当然是最快的。
删除批注可以用Range("A1:B50").ClearComments

添加批注不能用数组,只能循环。

点评

用for to感觉速度有点慢,用for each cell能不能快点?  详情 回复 发表于 2023-6-25 13:13
回复

使用道具 举报

7#
发表于 2023-6-25 09:34:17 | 只看该作者
@坏坏老师~

他精通 vb5.0 ,可以向他取经~
回复

使用道具 举报

8#
 楼主| 发表于 2023-6-25 13:13:23 | 只看该作者
2011ohte 发表于 2023-6-25 08:33
数组当然是最快的。
删除批注可以用Range("A1:B50").ClearComments

用for to感觉速度有点慢,用for each cell能不能快点?
回复

使用道具 举报

9#
发表于 2023-6-25 15:17:41 | 只看该作者
对5万个单元格加批注,相差0.02秒

  1. Sub test1()

  2. t1 = Timer

  3. Range("B1:B50000").ClearComments
  4. For i = 1 To 50000
  5. Cells(i, 2).AddComment Cells(i, 1).Text
  6. Next

  7. MsgBox (Timer - t1) & "秒"

  8. End Sub

  9. Sub test2()
  10. t1 = Timer

  11. Range("B1:B50000").ClearComments
  12. For Each C In Range("B1:B50000")
  13. C.AddComment C.Text
  14. Next

  15. MsgBox (Timer - t1) & "秒"

  16. End Sub
复制代码

点评

这样说我就没必要去试了,意义不大...  详情 回复 发表于 2023-6-25 21:20
回复

使用道具 举报

10#
发表于 2023-6-25 15:20:35 | 只看该作者

学习一下
回复

使用道具 举报

11#
 楼主| 发表于 2023-6-25 21:20:21 | 只看该作者
2011ohte 发表于 2023-6-25 15:17
对5万个单元格加批注,相差0.02秒

这样说我就没必要去试了,意义不大...
回复

使用道具 举报

12#
发表于 2023-10-31 18:07:57 | 只看该作者
还要先判断是不是nothing
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-27 20:10

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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