从下标0开始获取对象,并对这个对象进行操作时

例如.Paragraphs中的元素,这两种都是从1开始获取内容的:图片.png
如果使用了错误的下标,就无法获取到正确的对象,并且如果再调用该错误对象的方法或者是属性,就会报“无效调用”的异常。

注意:数组中的元素默认是从0开始,但是可以自定义开的位置,比如:

  1. Dim arr(1 to 10) as String

上面这段代码定义的数组就是从1开始的。

使用Integer类型存储比较大的值时

一些可能会很大的值,例如range的具体数值(文档比较大的话,可能会超过Integer的取值范围,Integer 变量值范围为 -32,768 至 32,767。)
图片.png
所以在存储这样容易超出数据类型有效范围的内容时,对于可能会变很大的值,一定要合理设置数据类型:

注意:此处往往不会在对range操作上有报错,但是如果使用了.select方法,并且在后面使用了Selection.Copy Selection.Paste 这样的方法,就很容易引起错误。

在for循环中改变终值时

当你想要使用一个循环,并且可能会在循环中不停的改变结束值,如果你使用for循环,因为for循环中的结束值是固定的,就无法达到你的目的:

  1. For i = 0 to 10
  2. '.....
  3. Next

此时你应该使用Do While……Loop 或者 Do Until……Loop这两个循环。

使用Integer整数类型存储浮点数类型值时

例如,使用vba获取段落的字号大小,这是一个Integet/Single类型同时存在的属性,也就是既有整型又有浮点型:
图片.png
所以在存储这个值的时候,一定要注意:可以让Single去装Integer,但是一定不要让Integer去存储了Single类型的数据。
因为浮点型放在整形里面,会丢失精度,例如五号字体(10.5)放进一个整形里面,就会被截去它的尾数,变成了10号,这个地方的字体大小实际上就设置错误了。
image.png

插入段落后被自动编号时

在插入段落后,发现段落上出现了自动编号,说明这个是被前面的格式影响了,如果不需要自动编号,可以使用下面的代码进行去除:

  1. range.ListFormat.RemoveNumbers