计算行数: Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Const EM_GETLINECOUNT = &HBA Private Sub Command1_Click() Dim LineCnt As Long LineCnt = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0) MsgBox LineCnt End Sub
TextBox中文本每行后有回车和换行符,可将TextBox中文本字符赋值给STRING字符变量。然后用SPLIT将文本内容切割赋值给String变量数组: Option Explicit Dim sj As String Private Sub Command1_Click() sj = "123" & Chr(13) & Chr(10) & "abc" & Chr(13) & Chr(10) & "bbc" Text1 = sj End SubPrivate Sub Command2_Click() Dim strTxt() As String Dim l As Integer Dim i As Integer strTxt = Split(sj, vbCrLf) l = UBound(strTxt) For i = 0 To l Debug.Print strTxt(i) Next End Sub
'在窗体上放一个命令按钮Command1,一个文本框控件作测试用。很简单,不复杂!Option Explicit Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const EM_GETLINECOUNT = &HBA Private Const EM_GETLINE = &HC4Private Sub Command1_Click() Dim str(256) As Byte Dim Line As Long, LineCount As Long str(1) = 1 LineCount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0) '取得文本框总的行数 Debug.Print "文本框共有:" & LineCount & "行!" Line = 0 '第一行 SendMessage Text1.hwnd, EM_GETLINE, Line, str(0) '取得文本指定行内容,这里line=0指第1行 Debug.Print StrConv(str, vbUnicode) End Sub Private Sub Form_Load() '先设置Text1.MultiLine = True,在程序中不能设置,只能在开发状态下设置。 Text1.Text = "1第一行" & vbCrLf Text1.Text = Text1.Text & "2第二行" & vbCrLf Text1.Text = Text1.Text & "3第三行" & vbCrLf Text1.Text = Text1.Text & "4第四行" & vbCrLf Text1.Text = Text1.Text & "5第五行" & vbCrLf Text1.Text = Text1.Text & "6第六行" End Sub
text= myarray(n)N你就是你要的行数
API比较不熟悉,有高手指点用API也行
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const EM_GETLINECOUNT = &HBA
Private Sub Command1_Click()
Dim LineCnt As Long
LineCnt = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0)
MsgBox LineCnt
End Sub
Option Explicit
Dim sj As String
Private Sub Command1_Click()
sj = "123" & Chr(13) & Chr(10) & "abc" & Chr(13) & Chr(10) & "bbc"
Text1 = sj
End SubPrivate Sub Command2_Click()
Dim strTxt() As String
Dim l As Integer
Dim i As Integer
strTxt = Split(sj, vbCrLf)
l = UBound(strTxt)
For i = 0 To l
Debug.Print strTxt(i)
Next
End Sub
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_GETLINE = &HC4Private Sub Command1_Click()
Dim str(256) As Byte
Dim Line As Long, LineCount As Long
str(1) = 1
LineCount = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0) '取得文本框总的行数
Debug.Print "文本框共有:" & LineCount & "行!"
Line = 0 '第一行
SendMessage Text1.hwnd, EM_GETLINE, Line, str(0) '取得文本指定行内容,这里line=0指第1行
Debug.Print StrConv(str, vbUnicode)
End Sub
Private Sub Form_Load()
'先设置Text1.MultiLine = True,在程序中不能设置,只能在开发状态下设置。
Text1.Text = "1第一行" & vbCrLf
Text1.Text = Text1.Text & "2第二行" & vbCrLf
Text1.Text = Text1.Text & "3第三行" & vbCrLf
Text1.Text = Text1.Text & "4第四行" & vbCrLf
Text1.Text = Text1.Text & "5第五行" & vbCrLf
Text1.Text = Text1.Text & "6第六行"
End Sub