我以下這個代碼,是匯入一個TXT檔案,把里面的通訊錄資訊分組,里面內容例如下
張三 13900000323
李四 13821654466
李 139216565465
王衛隊 13546871231
正常情況下沒問題,但是如果中間或 到了 最后有空行,就會出錯,
同時,有時姓名和 手機之間我是用xls里直接復制,那中間就是TAB ,而不是空格,也會出錯。我加on error resume next就會卡死在那。
請問,
1 如何防止最后有空行會出錯?
2如何能兼容如果 不是空格,而是 TAB也可以實作同樣功能?
3小問題,我點選擇檔案,選擇好倒沒問題, 點取消則會出錯,這個應該容易解決,但我不會,請教。
代碼如下:
***********************************************************************************
Dim a() As String, b() As String '定義動態陣列
Dim d() As String
Dim j As Integer
'''陣列
Private Sub Command1_Click() ' 匯入通訊錄 匯入通訊錄
'''On Error Resume Next
CDl.Filter = "text file|*.txt|all file|*.*"
CDl.ShowOpen
txt檔案路徑.Text = CDl.FileName
''''On Error Resume Next
通訊錄
提示2.Caption = "共 " & j & " 家"
開始.Enabled = True
End Sub ''''''''' 以上 匯入通訊錄 以上 匯入通訊錄 以上 匯入通訊錄
Private Sub 通訊錄()
'''On Error Resume Next
i = 0
Open txt檔案路徑 For Input As #1 '打開檔案
Do While Not EOF(1) '讀資料回圈
ReDim Preserve a(i) '指定陣列個數,Preserve關鍵字是保留陣列資料
ReDim Preserve b(i)
Line Input #1, c$ '讀資料,賦給字串c
On Error Resume Next
c = LTrim(c) '去除前面空格
On Error Resume Next
d = Split(c, " ") '把c拆成陣列,賦給d陣列,以空格為分隔符
a(i) = d(0) '把d資料賦給陣列a(),b()
j = 1 '處理兩個資料之間多個空格的問題
Do While d(j) = ""
j = j + 1
Loop
b(i) = d(j)
i = i + 1 '把陣列a b的個數加1
Loop
Close '關閉檔案
Text2 = ""
Text1 = ""
For j = 0 To i - 1 '列印出來,校對一下,是不是正確
Text1 = Text1 & a(j) & vbCrLf
Text2 = Text2 & b(j) & vbCrLf
Next
End Sub
uj5u.com熱心網友回復:
On Error Resume Next是掩蓋程式錯誤的最好方法,別到處使用
uj5u.com熱心網友回復:
判斷下再處理下c = Trim(Replace(c, VbTab, " "))
If c Like "* *" Then
...
uj5u.com熱心網友回復:
c = Trim(c)
Do While InStr(c, Space(2))
c = Replace(c, Space(2), Space(1))
Loop
c = Replace(c, Space(1), vbTab)
d = Split(c, vbTab)
uj5u.com熱心網友回復:
謝謝謝謝謝謝大家!轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/118122.html
標籤:VB基礎類
