无忧启动论坛

标题: 请问VBA的AddComment报错可能是什么情况? [打印本页]

作者: 邪恶海盗    时间: 2023-6-20 12:49
标题: 请问VBA的AddComment报错可能是什么情况?
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不太方便,有没有懂行的大佬来指导下这是啥毛病?


作者: 邪恶海盗    时间: 2023-6-20 12:55
补充一下,使用cells(8,1).value是可正常对单元格进行赋值和读取的
作者: 2011ohte    时间: 2023-6-20 13:21
本帖最后由 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
复制代码




作者: 邪恶海盗    时间: 2023-6-20 14:29
2011ohte 发表于 2023-6-20 13:21
一般Cells比Range方便
批注要先清除再增加

原来是要先清除才能添加,我试好久都没搞定,还以为哪有问题呢...
作者: 邪恶海盗    时间: 2023-6-21 16:35
2011ohte 发表于 2023-6-20 13:21
一般Cells比Range方便
批注要先清除再增加

能不能用Cells批量添加批注,试了下Range("A1:B5")=数组的形式直接写速度快些,用Cells时我用用for to 循环,明显可以看出来效率低速度慢了一拍
作者: 2011ohte    时间: 2023-6-25 08:33
数组当然是最快的。
删除批注可以用Range("A1:B50").ClearComments

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

作者: qq2348227    时间: 2023-6-25 09:34
@坏坏老师~

他精通 vb5.0 ,可以向他取经~
作者: 邪恶海盗    时间: 2023-6-25 13:13
2011ohte 发表于 2023-6-25 08:33
数组当然是最快的。
删除批注可以用Range("A1:B50").ClearComments

用for to感觉速度有点慢,用for each cell能不能快点?
作者: 2011ohte    时间: 2023-6-25 15:17
对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
复制代码

作者: 51xp    时间: 2023-6-25 15:20

学习一下
作者: 邪恶海盗    时间: 2023-6-25 21:20
2011ohte 发表于 2023-6-25 15:17
对5万个单元格加批注,相差0.02秒

这样说我就没必要去试了,意义不大...
作者: 2011temp1234    时间: 2023-10-31 18:07
还要先判断是不是nothing




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3