標題:
用excel上網查音標 又掛了
[打印本頁]
作者:
自我感覺良好
時間:
2010-10-15 07:08
標題:
用excel上網查音標 又掛了
真害YAHOO!奇摩字典又改版了
音標又找不到了
只能看到解釋
新增的即時發音好像粉不錯
1. Sub searchIT(Rng As Range)
2. Dim XH As Object
3. Dim shpRm As Shape
4. '清除已有的解釋及音標
5. With Rng.EntireRow
6. .Resize(1, .Columns.Count - 1).Offset(0, 1).Clear
7. End With
8. '開啟網頁
9. Set XH = CreateObject("Microsoft.XMLHTTP")
10. With XH
11. .Open "get", "http://tw.dictionary.yahoo.com/dictionary?p=" & Rng.Text, False
12. .send
13. On Error Resume Next
14. '摘取第一組中文翻譯
15. Rng.Offset(0, 2) = Split(Split(.responseText, "class=""description""><p>1.")(1), "<")(0)
16. '摘取KK音標
17. Rng.Offset(0, 1) = Left(VBA.Split(.responseText, "KK</span> ")(1), InStr(VBA.Split(.responseText, "KK</span> ")(1), "]"))
18.
19. End With
20. Rng.Select
21. End Sub
作者:
GBKEE
時間:
2010-10-15 08:36
回復
1#
自我感覺良好
17. Rng.Offset(0, 1) = Left(VBA.Split(.responseText, "KK</span> ")(1), InStr(VBA.Split(.responseText, "KK</span> ")(1), "]"))
刪除空格修改如下:
Rng.Offset(0, 1) = Left(VBA.Split(.responseText, "KK</span>")(1), InStr(VBA.Split(.responseText, "KK</span>")(1), "]"))
作者:
oobird
時間:
2010-10-15 08:39
'摘取KK音標
Rng.Offset(0, 1) = Split(Split(.responseText, "KK</span> ")(1), "<span> DJ")(0)
作者:
HSIEN6001
時間:
2012-6-19 16:12
回復
3#
oobird
請問版大
我用了相關語法.responseText
可是電腦出現不正確的引用
可否幫我看看問題,謝謝!
[attach]11447[/attach]
作者:
oobird
時間:
2012-6-19 17:14
Sub URLString()
Dim x As String
Set xPost = CreateObject("Microsoft.XMLHTTP")
Set Fsys = CreateObject("Scripting.FileSystemObject")
With xPost
.Open "GET", "http://mops.twse.com.tw/mops/web/ajax_t108sb27?step=1&firstin=ture&off=1&TYPEK=sii&co_id_1=&co_id_2=&year=101&month=&b_date=&e_date=&type=1&rulesubmit2=%20%E6%90%9C%E5%B0%8B%20", 0 '要擷取原始碼的網址
.send
Do While xPost.ReadyState <> 4
Loop
'PS:此處符合搜尋的字串有兩組,語法請教..... x = 傳回 "t108sb27_" 開始到 ".csv" 結束的字串
x = Split(Split(.responseText, "filename' value='")(1), "<table class='noBorder")(0)
End With
End Sub
複製代碼
回復
4#
HSIEN6001
作者:
HSIEN6001
時間:
2012-6-19 17:33
回復
5#
oobird
oobird 大
回傳值,多了 '> 及強制換行Alt+Enter
可否排除?!
剛剛對照一下語法
仍舊不解 .responseText
在之前未何會出現"不正確的引用"
兩者VBA 除了回圈
似乎差異不大
我外行,請大大提示
謝謝!
作者:
HSIEN6001
時間:
2012-6-19 17:59
回復
5#
oobird
剛剛稍微修改試了GBKEE大的語法
排除了Alt+Enter的問題
Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1), ">"))
算是"瞎貓"~呼弄對了嗎?!
^^
另一個疑問,還請版大開示!
作者:
Hsieh
時間:
2012-6-19 18:08
回復
6#
HSIEN6001
.responseText必須在With xPost.....End With敘述區段內引用
作者:
HSIEN6001
時間:
2012-6-19 18:16
回復
8#
Hsieh
我VBA是在ㄧ知半解的應用 http://tw.knowledge.yahoo.com/question/question?qid=1512022306295
所以常常搞不清楚
謝謝版大提醒,感恩!
作者:
HSIEN6001
時間:
2012-7-12 18:03
回復
2#
GBKEE
請問 <input type='hidden' name='filename' value='t108sb27_20120712_17145551.csv'>
取出這段 t108sb27_20120712_17145551.csv
應該怎麼下語法才對
以下語法,有時會Err
Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1),
">"
))
Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1),
"<"
))
紅色字體位置,時常要更正
是長度運算錯誤?!
這段語法不懂,可以麻煩指導及稍加說明?!
Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1),
">"
))
InStr 及 Split 查過了還是不懂
~謝謝!!
作者:
HSIEN6001
時間:
2012-7-12 20:29
本帖最後由 HSIEN6001 於 2012-7-12 20:31 編輯
Sorry ~~完整的段落是這樣~~
<input type='hidden' name='filename' value='t108sb27_20120712_17145551.csv'>
<table class='noBorder' align='center' width='100%'><tr><td align='left'>
VBA.Split 特別看不懂
http://msdn.microsoft.com/zh-tw/library/system.string.split.aspx
InStr函数可返回一个字符串在另一个字符串中首次出现的位置。
http://www.w3school.com.cn/vbscript/func_instr.asp
InStr([start,]string1,string2[,compare])
請問...
InStr(VBA.Split(.responseText, "<table class='noBorder")(1)
中的(1)是甚麼意思?!
作者:
c_c_lai
時間:
2012-7-13 09:31
回復
2#
GBKEE
順帶請教: 使用 VBA.Split 與 函數之 Split 實務應用上到底有何差異?
作者:
GBKEE
時間:
2012-7-13 14:24
回復
11#
HSIEN6001
Option Explicit
Sub Ex() 'Split在字串中以指定的字元作分割傳回一維陣列
Dim A As String, W, xi As Integer, i As Integer
A = "1ABCD2ABCD3ABCD4ABCD"
For xi = 2 To 6
W = Split(A, Mid(A, xi, 1))
For i = 0 To UBound(W)
Debug.Print W(i) '在即時運算視窗可見
Next
MsgBox Join(W, ",")
Next
End Sub
複製代碼
回復
12#
c_c_lai
使用 VBA.Split 與 函數之 Split 實務應用上到底有何差異
一樣的後者只是省略的寫法
作者:
HSIEN6001
時間:
2012-7-13 15:30
本帖最後由 HSIEN6001 於 2012-7-13 15:34 編輯
回復
13#
GBKEE
不好意思!
因為這問題是 #4 樓的延伸
所以麻煩版大再幫我看看
取得原始碼為X變數
Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1), ">"))
請問,該句語法修定
Sub EX()
Dim xml As New XMLHTTP
Dim stream As New ADODB.stream
Dim strURL As String
Dim x As String
strURL = "http://mops.twse.com.tw/mops/web/ajax_t108sb27?step=1&firstin=ture&off=1&TYPEK=sii&co_id_1=&co_id_2=&year=" & _
Year(Date) - 1911 & "&month=&b_date=&e_date=&type=1&rulesubmit2=%20%E6%90%9C%E5%B0%8B%20"
With xml
.Open "GET", strURL, 0
.send
Do While xml.ReadyState <> 4
Loop
x = Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1), "<"))
End With
End Sub
複製代碼
作者:
HSIEN6001
時間:
2012-7-13 15:59
回復
13#
GBKEE
這範例,我還需要再Google 及消化吸收
一維陣列 & UBound(W) ?!
屆時若還不懂,再請教版大
xi=2 , Mid(A,2,1)=A , Split(1ABCD2ABCD3ABCD4ABCD,A)=1 , A為分割之界?
xi=3 , Mid(A,3,1)=B , Split(1ABCD2ABCD3ABCD4ABCD,B)=BCD2
xi=4 , Mid(A,4,1)=C , Split(1ABCD2ABCD3ABCD4ABCD,C)=BCD3
xi=5 , Mid(A,5,1)=D , Split(1ABCD2ABCD3ABCD4ABCD,D)=BCD4
xi=6 , Mid(A,3,1)=2 , Split(1ABCD2ABCD3ABCD4ABCD,2)=BCD
作者:
c_c_lai
時間:
2012-7-13 17:38
回復
13#
GBKEE
Option Explicit
Sub Ex() 'Split在字串中以指定的字元作分割傳回一維陣列
Dim A As String, W, xi As Integer, i As Integer
A = "1ABCD2ABCD3ABCD4ABCD"
For xi = 2 To 6
W = Split(A, Mid(A, xi, 1))
For i = 0 To UBound(W)
Debug.Print W(i) '在即時運算視窗可見
Next
' MsgBox Join(W, ",")
MsgBox "(For " & xi & " To 6)" & Chr(10) & Chr(13) & "(For i = 0 To " & UBound(W) & ")" & Chr(10) & Chr(13) & _
" Split(" & A & ", Mid(A, " & xi & ", 1)) -> " & "'" & Mid(A, xi, 1) & "'" & _
Chr(10) & Chr(13) & "Join(W, ', ') -> " & Join(W, ",")
Next
End Sub
' (For 2 to 6)
' (For i = 0 To 4)
' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,2,1)) -> 'A'
' Join(W,',') -> 1,BCD2,BCD3,BCD4,BCD
'
' (For 3 to 6)
' (For i = 0 To 4)
' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,3,1)) -> 'B'
' Join(W,',') -> 1A,CD2A,CD3A,CD4A,CD
'
' (For 4 to 6)
' (For i = 0 To 4)
' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,4,1)) -> 'C'
' Join(W,',') -> 1AB,D2AB,D3AB,D4AB,D
'
' (For 5 to 6)
' (For i = 0 To 4) <--- 正確應為 For i = 0 To 3
' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,5,1)) -> 'D'
' Join(W,',') -> 1ABC,2ABC,3ABC,4ABC
'
' (For 6 to 6)
' (For i = 0 To 1)
' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,6,1)) -> '2'
' Join(W,',') -> 1ABCD.ABCD3ABCD4ABCD
複製代碼
謝謝您的範例,簡明扼要。
經測試, For 5 to 6 的迴圈時,因該 A 字串尾端字元為 D,
且 Split(A, Mid(A,5,1)) 又為 D 時, UBound(W) 會判定為 4,
因為 W(4) = ""。 如果使用 UBound(W) 來做處理就會有 Bug 了。
作者:
HSIEN6001
時間:
2012-7-13 19:22
回復
13#
GBKEE
終於意會這範例
xi=2 , Mid(A,2,1)=A , W=Split(1ABCD2ABCD3ABCD4ABCD,A)=4 個 A , UBound(W)=4 , For i = 0 To 4
則 W(0)=1 , W(1)=BCD2 , W(2)=BCD3 , W(3)=BCD4 , W(4)=BCD
xi=3 , Mid(A,3,1)=B , w=Split(1ABCD2ABCD3ABCD4ABCD,B)=4 個 B , UBound(W)=4 , For i = 0 To 4
則 W(0)=1A , W(1)=CD2A , W(2)=CD3A , W(3)=CD4A , W(4)=CD
xi=4 , Mid(A,4,1)=C , w=Split(1ABCD2ABCD3ABCD4ABCD,C)=4 個 C , UBound(W)=4 , For i = 0 To 4
則 W(0)=1AB , W(1)=D2AB , W(2)=D3AB , W(3)=D4AB , W(4)=D
xi=5 , Mid(A,5,1)=D , w=Split(1ABCD2ABCD3ABCD4ABCD,D)=4 個 D , UBound(W)=4 , For i = 0 To 4
則 W(0)=1ABC , W(1)=2ABC , W(2)=3ABC , W(3)=4ABC , W(4)=空值
xi=6 , Mid(A,3,1)=2 , w=Split(1ABCD2ABCD3ABCD4ABCD,D)=1 個 2 , UBound(W)=1 , For i = 0 To 1
則 W(0)=1ABCD , W(1)=ABCD3ABCD4ABCD
好難喔!需要消化.....很久!
魚不如漁,謝謝版大的範例說明
===========================
再來自解問題
InStr函數可返回一個字串在另一個字串中首次出現的位置。
Split在字串中以指定的字元作分割傳回一維陣列。
需求是 t108sb27_20120712_17145551.csv
語法修改前:Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1), "<"))
VBA.Split(.responseText, "filename' value='")=t108 開始
InStr(VBA.Split(.responseText, "<table class='noBorder")(1),"<")
因為兩段落之間有Alt+Enter
所以給了這個值 -1
(InStr(VBA.Split(.responseText, "<table class='noBorder")(1),"<")-1)
RUN結果不對耶!
若遇上字串間有個Alt+Enter 該如何處理?? 這疑問尚未解決
<input type='hidden' name='filename' value='t108sb27_20120712_17145551.csv'>
<table class='noBorder' align='center' width='100%'><tr><td align='left'>
再請教 Split(字串,分割字元)(1)--->這個(1)是?意思
作者:
GBKEE
時間:
2012-7-15 17:08
回復
16#
c_c_lai
(For i = 0 To 4) <--- 正確應為 For i = 0 To 3
' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,5,1)) -> 'D'
這裡並沒有套入
i
這變數
可以傳上你所說的錯誤 程式碼
回復
17#
HSIEN6001
Sub Ex()
Dim strURL As String, x As String
strURL = "http://mops.twse.com.tw/mops/web/ajax_t108sb27?step=1&firstin=ture&off=1&TYPEK=sii&co_id_1=&co_id_2=&year=" & _
Year(Date) - 1911 & "&month=&b_date=&e_date=&type=1&rulesubmit2=%20%E6%90%9C%E5%B0%8B%20"
With CreateObject("Microsoft.XMLHTTP")
.Open "GET", strURL, 1
.send
Do While .ReadyState <> 4
Loop
x = Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1), "<"))
MsgBox x
End With
End Sub
Sub Ex_Split() 'Split(字串,分割字元)(1)--->這個(1)是?意思
Dim A As String, W, xi As Integer, i As Integer
A = "1ABCD2ABCD3ABCD4ABCD"
W = Split(A, "B")
For i = 0 To UBound(W)
MsgBox "W(" & i & ") -> " & W(i)
Next
End Sub
複製代碼
作者:
HSIEN6001
時間:
2012-7-15 17:35
本帖最後由 HSIEN6001 於 2012-7-15 17:50 編輯
回復
18#
GBKEE
程式碼在#14樓
若顯示在[A1]
Sub EX()
Dim xml As New XMLHTTP
Dim stream As New ADODB.stream
Dim strURL As String
strURL = "http://mops.twse.com.tw/mops/web/ajax_t108sb27?step=1&firstin=ture&off=1&TYPEK=otc&co_id_1=&co_id_2=&year=" & _
Year(Date) - 1911 & "&month=&b_date=&e_date=&type=1&rulesubmit2=%20%E6%90%9C%E5%B0%8B%20"
With xml
.Open "GET", strURL, 0
.send
Do While xml.ReadyState <> 4
Loop
[A1] = Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1), "<"))
End With
End Sub
複製代碼
不知為何有時OK~有時不行?!
我是參考#2 樓語法
Rng.Offset(0, 1) = Left(VBA.Split(.responseText, "KK</span>")(1), InStr(VBA.Split(.responseText, "KK</span>")(1), "]"))
修改而來的
Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1), "<"))
Split(字串,分割字元)(1)--->這個(1)是?意思
看不懂(1)的作用
作者:
HSIEN6001
時間:
2012-7-15 18:27
回復
18#
GBKEE
Split(字串,分割字元)(1)--->這個(1)是?意思
看不懂(1)的作用 , 我是參考#2 樓語法
Rng.Offset(0, 1) = Left(VBA.Split(.responseText, "KK</span>")(1), InStr(VBA.Split(.responseText, "KK</span>")(1), "]"))
修改應用 Left(VBA.Split(.responseText, "filename' value='")(1), InStr(VBA.Split(.responseText, "<table class='noBorder")(1), "<"))
不好意思!我表達不夠清楚
壓縮檔內有兩個下載,一個是NG,一個OK
不知為何有時會NG
[attach]11686[/attach]
作者:
c_c_lai
時間:
2012-7-15 20:50
本帖最後由 c_c_lai 於 2012-7-15 20:52 編輯
回復
20#
HSIEN6001
第一次一定是 OK 的,因為在 D:\ 內 市.csv、櫃.csv 並不存在,按第二次時,
妳又再次使用 .SaveToFile (Apath & "市.csv") 以及 .SaveToFile (Apath & "櫃.csv")
所以就會出錯了。
應該在 .SaveToFile() 前先判斷檔案是否業已存在,如是的話,就應先予以刪除後,
才能執行 .SaveToFile()。
至於如何去執行刪除動作(VBA 語法)就要請教 GBKEE 大大了。
作者:
HSIEN6001
時間:
2012-7-15 21:38
回復
21#
c_c_lai
只按一次而已
程序後處理,有下Kill 指令刪除檔案
但下載錯誤的頁面,無法完成所有動作.
出現錯誤的下載
<head>
<link rel='stylesheet' href='/ppp.css' type='text/css'>
</head>
<body>
<center>
<br><h4 align='center'><font color='red'>檔案不存在</font></h4>
<!- filename1 = t108sb27_20120715_18181771.csv' --><br>
<!- filename2 = t108sb27_20120715_18181771.csv' -->
<!- fromNew = -->
不ㄧ定在[市]or[櫃]出現錯誤的下載
跟回傳速度有關係?!
作者:
c_c_lai
時間:
2012-7-16 08:25
回復
18#
GBKEE
我指的是#16 的第32行
' (For 5 to 6)
' (For i = 0 To 4) <--- 正確應為 For i = 0 To 3
' Split("1ABCD2ABCD3ABCD4ABCD",Mid(A,5,1)) -> 'D'
' Join(W,',') -> 1ABC,2ABC,3ABC,4ABC,
'
[attach]11687[/attach]
作者:
GBKEE
時間:
2012-7-16 16:39
回復
23#
c_c_lai
找不出你的錯誤
Option Explicit
Sub Ex() 'Split在字串中以指定的字元作分割傳回一維陣列
Dim A As String, W, xi As Integer, i As Integer
A = "1ABCD2ABCD3ABCD4ABCD"
' (For 5 to 6)
For i = 0 To 4 ' <--- 正確應為 For i = 0 To 3
W = Split("1ABCD2ABCD3ABCD4ABCD", Mid(A, 5, i)) ' '-> 'D'
MsgBox "分割字串 """ & Mid(A, 5, i) & """陣列上限維度 " & UBound(W) & " 最後一維字串: " & W(UBound(W)) '-> 1ABC,2ABC,3ABC,4ABC)
Next
End Sub
複製代碼
回復
20#
HSIEN6001
Split(字串,分割字元)(1)--->這個(1)是?意思
18#有示範的程式
Sub Ex_Split() 'Split(字串,分割字元)(1)--->這個(1)是?意思
Dim A As String, W, xi As Integer, i As Integer
A = "1ABCD2ABCD3ABCD4ABCD"
W = Split(A, "B")
For i = 0 To UBound(W)
MsgBox "W(" & i & ") -> " & W(i)
Next
End Sub
複製代碼
壓縮檔內有兩個下載,一個是NG,一個OK
21#c_c_lai 不是說
第一次一定是 OK 的,因為在 D:\ 內 市.csv、櫃.csv 並不存在,按第二次時,
妳又再次使用 .SaveToFile (Apath & "市.csv") 以及 .SaveToFile (Apath & "櫃.csv")
所以就會出錯了。
Sub Ex()
Dim xml As New XMLHTTP
Dim stream As New ADODB.stream
Dim strURL As String
Dim x As String, y As String
Dim Apath As String, ApathFile As String
Apath = "D:\"
If Dir(Apath & "市.csv") <> "" Then Kill Apath & "市.csv" '加上有則刪除的判斷
If Dir(Apath & "櫃.csv") <> "" Then Kill Apath & "櫃.csv"
複製代碼
作者:
HSIEN6001
時間:
2012-7-16 17:41
回復
24#
GBKEE
回復
21#
c_c_lai
謝謝兩位大大指導
我會努力消化
~感恩~^__^~
作者:
c_c_lai
時間:
2012-7-16 20:26
回復
24#
GBKEE
回復
25#
HSIEN6001
原來它是使用 Kill 方法。
' 指定目錄內如果該檔案已經存在,則將之予以刪除。
If Dir(Apath & "市.csv") <> "" Then Kill Apath & "市.csv"
.SaveToFile (Apath & "市.csv")
' 指定目錄內如果該檔案已經存在,則將之予以刪除。
If Dir(Apath & "櫃.csv") <> "" Then Kill Apath & "櫃.csv"
.SaveToFile (Apath & "櫃.csv")
複製代碼
又學到了, 謝謝!
作者:
GBKEE
時間:
2012-7-17 12:59
回復
25#
HSIEN6001
我會努力消化
Option Explicit
Sub Ex_陣列() 'Split(字串,分割字元)(1)--->這個(1)是?意思
Dim A As String, W, xi As Integer, i As Integer
'A = "1ABCD2ABCD3ABCD4ABCD"
'W = Split(A, "B")
W = Array("A", "B", "C", "D")
For i = LBound(W) To UBound(W)
MsgBox "Array(""A"", ""B"", ""C"", ""D"")" & Chr(10) & "W(" & i & ") -> " & W(i)
Next
End Sub
複製代碼
作者:
HSIEN6001
時間:
2012-7-17 14:32
回復
27#
GBKEE
答案是--->第(1)個分割,對了嗎?!
很多語法都是先套用,對其理解度還不夠
新範例也很多還很陌生的,有助於我多瞭解意義
謝謝大大~^_^~
LBound(W) --->最小之長整數 'http://www.w3school.com.cn/vbscript/func_lbound.asp
UBound(W)--->最大之長整數 'http://msdn.microsoft.com/zh-cn/library/95b8f22f(v=vs.80).aspx
Chr(13) 歸位;回車 Chr(10) 換行 Chr(9) TAB键的空格 Chr(32) 空格 Chr(34) " chr(0)则是系统控制符,表示空,也就是Null
Chr(255) 特殊空格 範例'http://www.aspxhome.com/asp/startasp/20097/82213.htm
ASCII碼 對照表 'http://big5.webasp.net/article/15/14718.htm
真的!!!!!!我有認真再消化 O_Q
作者:
GBKEE
時間:
2012-7-17 14:54
回復
28#
HSIEN6001
第(
索引值
)個分割
LBound(W) ---> LBound 函数可以找到数组某一维的下限索引值。
UBound(W)---> UBound 函数可以找到数组某一维的
上限索引值
。
Option Explicit
Sub Ex()
Dim A(4 To 7), x As Integer
For x = LBound(A) To UBound(A)
A(x) = String(x, "A")
Next
MsgBox "LBound(A) =>下限索引值" & LBound(A) & Chr(10) & _
"UBound(A) =>上限索引值" & UBound(A) & Chr(10) & Join(A, "---")
End Sub
複製代碼
作者:
HSIEN6001
時間:
2012-7-17 14:57
回復
26#
c_c_lai
這樣也可行
On Error Resume Next
Kill Apath & "櫃.csv"
.SaveToFile (Apath & "櫃.csv")
作者:
HSIEN6001
時間:
2012-7-17 15:12
本帖最後由 HSIEN6001 於 2012-7-17 17:09 編輯
回復
29#
GBKEE
~索引值 ~
最小的索引值是----> 0 開始的長整數.
這#17
Sub Ex_陣列()
Dim A As String, W, xi As Integer, i As Integer
W = Array("A", "B", "C", "D")
For i = LBound(W) To UBound(W)
MsgBox "Array(""A"", ""B"", ""C"", ""D"")" & Chr(10) & "W(" & i & ") -> " & W(i)
Next
End Sub
複製代碼
這
LBound(W) ---> LBound 函数可以找到数组某一维的下限索引值。
UBound(W)---> UBound 函数可以找到数组某一维的上限索引值。
故For i = LBound(W) To UBound(W) = 4 個索引值 ; 最小長整數為0 , 故 i = "W(" & i & ") = 0 To 3
W(0) = A , W(1) = B , W(2) = C , W(3) = D
而 : Split(字串, "分割字元")(1)---->指的是第(1)個索引值
兩者的() 無相關 ;是不同的應用
.....這樣的邏輯,對嗎?!
要打結了 O_Q
作者:
GBKEE
時間:
2012-7-17 17:13
本帖最後由 GBKEE 於 2012-7-17 17:14 編輯
回復
31#
HSIEN6001
最小的索引值是----> 0 開始的長整數.
這不一定
例 Dim A(4 To 7) -> 最小的索引值是 4 , 最大的索引值是7
Option Base 0 或 1 可指定最小的索引值為 0 或 1
Option Explicit
Option Base 1
'Option Base 陳述式 在模組層次中用來宣告陣列索引的預設下限。語法 Option Base {0 | 1}
Sub Ex_陣列()
Dim A As String, W, xi As Integer, i As Integer
W = Array("A", "B", "C", "D")
MsgBox LBound(W)
For i = LBound(W) To UBound(W)
MsgBox "Array(""A"", ""B"", ""C"", ""D"")" & Chr(10) & "W(" & i & ") -> " & W(i)
Next
End Sub
複製代碼
作者:
c_c_lai
時間:
2012-7-17 17:20
回復
30#
HSIEN6001
如果妳事前沒加上 On Error Resume Next 偵測來避開錯誤的話,
是會產生 執行階段錯誤 '53':找不到檔案 的。
妳那種寫法是 不管三七二十一先殺了再說!
這在正規的程式撰寫語法上,是不太好的,也是我極力去避免的。
明知會產生錯誤卻又走旁道避開,哪日不靈光就嗚呼哀栽了!
總之我是建議妳學習正軌模式,對妳的功力增長會有實質幫助的。
作者:
HSIEN6001
時間:
2012-7-17 18:35
本帖最後由 HSIEN6001 於 2012-7-17 18:37 編輯
回復
32#
GBKEE
大致上,有概念了~^^
回復
33#
c_c_lai
用 "判斷式" 的邏輯去下指令 , 避免之後程序因On Error Resume Next
未出現偵錯的段落提示 ; 而產生Run出不完整的結果
是這樣的意思,我瞭解!
受益良多,謝謝兩位大大指導!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)