2011-06-09 115 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

相关问题