VBA InStr找不到正确的部分

时间:2011-06-09 22:32:50

标签: vba string vbscript

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)

为什么这会导致输出

***说明*** *** PORT **

而不是预期的***描述***

干杯

亚伦

1 个答案:

答案 0 :(得分:4)

instr将参数设为stringstartposlen ...因此您失败了,因为您假设参数为:stringstartposendpos

您可以通过以下方式修复代码:

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), "***")