- 获得所选range的文字
尝试了一下,发现两种都可以:
Selection.Text Selection.Range.Text
- 不等于符号
VBA里面的不等于号,用"<>"表示,而不是其他C等语言里面的"!="
<>,即大于号和小于号的组合,意思也很明确,既不大于也不小于,所以就是不等于了。
- 如何选中一行并获得对应的文字 和 wdMove和wdExtend的区别
前提,光标(或叫插入点)已经移动到该行了,但是想要选中该行,并想要获得对应所选Range的文字
此时可以用如下代码:
- 如何跳转到某一标题 和 如何移动光标/插入点
Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=5
这里主要是利用Goto语句
wdGoToHeading说明掉转的单位是heading标题
wdGoToAbsolute表示是绝对位置的跳转
于此相对应的还有wdGoToFirst, wdGoToLast, wdGoToNext, wdGoToPrevious, wdGoToRelative。
更多详细内容,请参考[3]
另外,对于移动光标/插入点,可以借鉴如下做法:
- 如何获得选中的标题的序号
前提,已经选择某一标题了,想要获得该标题前面的序号
比如对这个标题:
2.1 PAPRBY / RubyVerifoneDefaults
想要获得标题的序号,即2.1
可通过下列代码获得当前标题的序号,即2.1
Selection.Bookmarks("\headinglevel").Range.ListFormat.ListString
\headinglevel是VBA里面的预定义标签
关于此内容的详细解释,请参考:[5]
- 如何返回函数的返回值
关于这点,网上找,没几个说的很清楚的,最后还是通过VBA的Help才搞懂如何返回函数返回值的。
此处,简单解释如下:
一个Function函数的语法为:
[Public | Private | Friend] [Static] Function name [(arglist)] [As type] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function
name即为函数名
expression是表达式,当然也可以是某个变量,常量等,其就代表了返回值。
更具体的解释和例子,摘录如下,很容易看懂的:
要从函数返回一个值,只需将该值赋给函数名。在过程的任意位置都可以出现这种赋值。
如果没有对 name 赋值,则过程将返回一个缺省值:数值函数返回 0,字符串函数返回一个零长度字符串 (""),Variant 函数则返回 Empty。
如果在返回对象引用的 Function 过程中没有将对象引用赋给 name (通过 Set),则函数返回 Nothing。
下面的示例说明如何给一个名为 BinarySearch 的函数赋返回值。
在这个示例中,将 False 赋给了该函数名,表示没有找到某个值。
Function BinarySearch(......) As Boolean ...... '值未找到,返回一个 False 值。 If lower > upper Then BinarySearch = False Exit Function End If ...... End Function
看懂后,多说一句,有问题,还是先找VBA的Help系统,比百度,google等,有时候更准确,方便,易懂。
函数内部任何地方都可以出现[name = expression]
- 字符串处理函数
关于VBA中的字符串相关的函数,刚发现,office 2010 中的 VBA的help文件里面,有已经总结好的了:
作用 关键字 比较两个字符串 StrComp 变换字符串 StrConv 大小写变换 Format, LCase, UCase 建立重复字符的字符串 Space, String 计算字符串长度 Len 设置字符串格式 Format 重排字符串 LSet, RSet 处理字符串 InStr, Left, LTrim, Mid, Right, RTrim, Trim 设置字符串比较规则 Option Compare 运用 ASCII 与 ANSI 值 Asc, Chr 上述字符串处理相关的函数,多数都是见名知意,容易看懂和使用, 但是也有些不太容易搞懂,或者和普通C语言等里面的字符串处理函数不同的,需要额外说明的,解释如下:
- Space, String
其中Space很方便,比如想要输出10个空格,当然你可以通过自己手动的写成" ",但是有了space,用其更方便,直接写成
Space(10)
即代表了10个空格。同理
String(number,characterToRepeate)
用于输出多个某一字符,而对于前面的空格来说,也可以用string表示,即
Space(10)=String(10, 32)
其中32=0x20,是space的ASCII值。而String的优点在于,也可以输出其他字符,包括0x0~0x1F之类不可见字符。
- InStr, InStrRev
这个InStr,其实就是C语言的strstr
语法为:
InStr([start, ]string1, string2[, compare])
意思为:"返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。"
而InStrRev意思和InStr类似,只不过是"从字符串的末尾算起"。
举例说明:
posOfPoint = InStr("abc.def", ".") ’ 查找"abc.def"中的".",返回值为4
- Asc, Chr
Asc是将字符转换为ASCII数值,Chr是将数值转换为ASCII字符。
举例为:
MyNumber = Asc("A") ' 返回 65。 MyChar = Chr(97) ' 返回 a。
- 如何创建文件和输出信息到文件里面
- 方法1:
Function createFileTest() ' the name of the file to be output, including full path Dim FileName As String FileName = "D:\create_file.txt" ' open the file ouput text stream output, overwritng is necessary Dim fs As Object Set fs = CreateObject("Scripting.FileSystemObject") Dim file As Object Set file = fs.CreateTextFile(FileName, True) file.WriteLine "test string..." file.Close End Function
- 方法2:
Public gFileNum As Integer Function createOutputFile() Dim outputFileNameWithPath As String Dim gDestFile As String Dim outputFileNameWithPath As String Dim openFileOK As Boolean openFileOK = True ' 1. create an XML file outputFileNameWithPath = "D:\test_output.txt" gDestFile = outputFileNameWithPath ' Obtain next free file handle number. gFileNum = FreeFile() ' Turn error checking off. On Error Resume Next ' Attempt to open destination file for output. Open gDestFile For Output As #gFileNum ' If an error occurs report it and end. If Err <> 0 Then openFileOK = False MsgBox "Cannot create file: " & gDestFile End If ' Turn error checking on. On Error GoTo 0 createOutputFile = openFileOK End Function Sub createFileTest() Print #gFileNum, "Test output string to this file..." Print #gFileNum, "Test done." Close #gFileNum End Sub
- 方法1:
- 如何获得当前文件的文件名 和 当前文件所在路径
- 获得当前文件所在的路径:ActiveDocument.Path。
注意:所得结果,最后没有那个路径分隔符"\"
- 获得当前文件的文件名:ActiveDocument.Name
- 获得当前文件的路径和文件名,即全名:ActiveDocument.FullName
- 获得当前文件所在的路径:ActiveDocument.Path。
- VB里面的一些常量
office 2010的help文件里面已有总结:
Visual Basic 常数
Visual Basic for Applications 定义了一些常数,使程序设计变得更为简单。下列常数可在程序代码中的任何地方代替实际值:
- Calendar 常数
- CallType 常数
- Color 常数
- Compiler 常数
- Date 常数
- Dir、GetAttr 和 SetAttr 常数
- IMEStatus 常数
- Instr、StrComp 常数
- Keycode 常数
- Miscellaneous 常数
- MsgBox 常数
- QueryClose 常数
- QueryClose 常数
- Shell 常数
- StrConv 常数
- 系统颜色常数
- VarType 常数
- Visual Basic 常数
其中,此处打算把一些我所常用到的一些常数列出来,以供参考
Miscellaneous 常数
下列常数由 Visual Basic for Applications 中的类型库定义,可用来在代码中的任何地方代替实际值
常数 等于 描述 vbCrLf Chr(13) + Chr(10) 回车符与换行符结合 vbCr Chr(13) 回车符 vbLf Chr(10) 换行符 vbNewLine Chr(13) + Chr(10) or, on the Macintosh, Chr(13) 平台指定的新行字符;适用于当前平台 vbNullChar Chr(0) 值为 0 的字符 vbNullString 值为 0 的字符串 用来调用外部过程;与长度为零的字符串 ("") 不同 vbObjectError -2147221504 用户定义的错误号应当大于该值,例如:Err.Raise Number = vbObjectError + 1000 vbTab Chr(9) Tab 字。 vbBack Chr(8) 退格字符 vbFormFeed Chr(12) 在 Microsoft Windows or on the Macintosh 中没有作用 vbVerticalTab Chr(11) 在 Microsoft or on the Macintosh Windows 中没有作用
- Space, String