2011-06-09 109 views
1
temps(X) = "set port name *** DESCRIPTION *** *** PORT *** " 

first = InStr(temps(x), "***") ' find start postition 
last = InStr(InStr(1, temps(x), "***") + 1, temps(x), "***") 'find end 

snip = Mid(temps(x), first, last) 

MsgBox (snip) 

爲什麼會出現這種結果在出把VBA InStr函數沒有找到合適的部分

*** ***說明*** PORT **

,而不是預期的***說明* **

乾杯

亞倫

+0

哦混混我使用MID走錯了路ARNT我! – DevilWAH 2011-06-09 22:41:01

+0

好的簡單設置所有的vatibls有相同的長度,現在工作正常 – DevilWAH 2011-06-09 22:52:26

回答

4

instr取參數string,startpos,len ...所以它失敗了,因爲你已經假設參數是:string,startpos,endpos

你可以這樣做,而不是解決您的代碼:

snip = Mid(temps(x), first, last - first) 

還要注意,您的結構:

last = InStr(InStr(1, temps(x), "***") + 1, temps(x), "***") 

可以更簡單地寫。請注意,您已經完成了一次Instr(1, temps(s), "***")當您first了價值,所以你可以重寫該行的更簡單:

last = InStr(first + 1, temps(x), "***") 
+0

我不知道爲什麼我這樣做,我完全熟悉MID的語法,所以只是一個Doh的時刻。爲了使它更簡單,我只是把所有可能的「剪輯」都做成了\ *** XXX \ ***格式,然後是它的簡單MID(string,first,11),而不是每次都執行兩次instr look。儘管歡呼的幫助 – DevilWAH 2011-06-09 23:04:29

相關問題