实例需求:用户窗体中有如下4个TextBox控件,TextBox1中已经有文字内容,点击【定位】按钮,统计TextBox1中段落数量,并定位TextBox1中光标位置(箭头处),如下图所示。
示例代码如下。
Private Sub UserForm_Initialize()
TextBox1.Text = "兔年吉祥!" & Chr(10) & _
"新春快乐!" & Chr(10) & _
"万事如意!"
End Sub
【代码解析】
用户窗体初始化事件代码,用于在TextBox1控件中加载文字内容。
Private Sub CommandButton1_Click()
strTxt = Me.TextBox1.Text
arrTxt = Split(strTxt, Chr(10))
Me.TextBox2 = UBound(arrTxt) + 1
intCursorLoc = Me.TextBox1.SelStart
intCharQty = 0
For idx = 0 To UBound(arrTxt)
If intCursorLoc < intCharQty + Len(arrTxt(idx)) Then
Me.TextBox3 = idx + 1
Me.TextBox4 = intCursorLoc - intCharQty + 1
Exit For
Else
intCharQty = intCharQty + Len(arrTxt(idx))
End If
Next
End Sub
【代码解析】
第2行代码读取TextBox1控件中的文本内容。
第3行代码将文本字符串按照换行符拆分为数组。
第4行代码为TextBox2控件赋值。Ubound
函数获取数组的下标上届,由于下标是0开始的,所以加一就是段落个数。
第5行代码获取光标位置。
第7~15行代码定位光标所在段落位置。
第8行代码条件满足的话,说明光标位于该段落中。
第9行代码为TextBox2控件赋值,idx+1
为段落编号。
第10行代码获取光标在段落中的位置,每段第一位置为1。
如果第8行条件不满足,那么第13行代码累加统计截至当前段落的字符总个数。