В VBA "
служит разделителем для строковых литералов , например:
Dim foo As String
foo = "some string"
Если ваш строковый литерал должен содержать "
двойные кавычки, вам необходимо экранировать их, удвоив их между разделителями строк :
foo = """some string"""
Печать приведенного выше приведет к "some string"
, , включая двойные кавычки.
Таким образом, вам нужно нужно удалить ведущие и конечные двойные кавычки .
sformula = "=IF(K2 = 100, ""#NA"", IF(K2 <" & minfee & "," & feetier3 & ",IF(K2<" & feetier4 & ",K2+ " & bpspread1 & ",IF(K2<" & feetier5 & ",K2+ " & bpspread2 & ",K2+ " & bpspread3 & "))))"
Если разбить это, это объединение следующих литералов:
"=IF(K2 = 100, ""#NA"", IF(K2 <"
(заметьте, "#NA"
- это плохая идея IMO. Используйте функцию NA()
, чтобы получить фактическую ошибку листа вместо строкового значения, которое выглядит как единое целое)
","
",IF(K2<"
",K2+ "
",IF(K2<"
",K2+ "
",K2+ "
"))))"
Что мне подходит.
Возможно, такая конкатенация раздражающе запутывает. Пользовательская функция StringFormat может помочь смягчить это, абстрагируя конкатенации:
sFormula = StringFormat("=IF(K2=100, ""#NA"", IF(K2<{0},{1},IF(K2<{2},K2+{3},IF(K2<{4},K2+{5},K2+{6}", _
minfee, feetier3, feetier4, bpspread1, feetier5, bpspread2, bpspread3)