VBA InStr не находит нужную часть - PullRequest
1 голос
/ 10 июня 2011
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)

Почему это приводит к ауту

*** ОПИСАНИЕ *** *** ПОРТ **

а не ожидаемое *** ОПИСАНИЕ ***

Приветствия

Aaron

1 Ответ

4 голосов
/ 10 июня 2011

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), "***")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...