Я использую 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.