.Find not working и оператор If на основе результатов метода .Find. какое выражение можно передать в метод .Find? - PullRequest
0 голосов
/ 05 мая 2020

Я использую excel VBA, чтобы найти цену в контракте, сохраненном в файле * .docx. Позже я присваиваю цену переменной и записываю ее в ячейку электронной таблицы.

Макрос работает нормально, по крайней мере, первую половину.

50% случаев я получаю чистую цену без дополнительных sh слов в ней, и я могу сохранить ее в своей переменной price, которая объявлена ​​как Long.

В остальных половине случаев я получаю цену со словом «мне не нужно».

Это всегда одно и то же слово «lacznej» - это слово Poli sh, поэтому я пропустил некоторые славянские c буквы, но ради этого вопроса это «lacznej», и мне действительно нужно получить избавиться от него, чтобы записать цену в мою переменную price, которая равна Long. Позже я записываю это значение переменной в ячейку электронной таблицы Excel.

startPos = InStr(1, rng, textToFind6)
endPos = InStr(startPos, rng, ",00zł")        'here we get 47380, we're looking 4 ",00zł"
startPos = startPos + Len(textToFind6)        ' + 21 characters     'now start position is reassigned at 47331.
     Debug.Print Replace(Mid(rng, startPos, endPos - startPos), ".", "")
     'up to this moment macro works fine while customers buy appartment in shares, like 1/2 or 1/3, in the next line it crashes.
          Replace(Mid(rng, startPos, endPos - startPos), ".", "").Find   why this line crashes??
            .Text = "łącznej "       'if I find this superfluous word I want to replace it with ""
            .MatchWildcards = False
            .MatchCase = False
            .Forward = True
            .Execute
              If .Found = True Then
                Debug.Print Replace(Mid(rng, startPos, endPos - startPos), ".", "")
                price = Replace(Replace(Mid(rng, startPos, endPos - startPos), ".", ""), "łącznej ", "")
              Else
                price = Replace(Mid(rng, startPos, endPos - startPos), ".", "")          
                price = Trim(price)
              End If
     Debug.Print price

Вот и все. Replace(Mid(rng, startPos, endPos - startPos), ".", "").Find Как заставить эту линию работать? Я думал, что передаю строковое значение в метод .Find. Он должен правильно работать со строковыми значениями ??

Что означает «недопустимый квалификатор» ??

Начальное Replace(Mid(rng, startPos, endPos - startPos), ".", "") - это потому, что у меня есть «.» как разделитель миллионов и тысяч, поэтому цена дома 1.500.000 или 800.000 в текстовом документе, и мне нужно заменить "." с "", чтобы получить число, которое я могу прочитать в моей переменной price.

Последние строки макроса:

        Debug.Print scndRng.Address
        scndRng.Offset(0, 1) = price    'these two lines work fine.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...