Я получил некоторую помощь здесь, чтобы объявить формулу как константу в vba. У меня есть приблизительно десять формул, все похожие варианты на тему. Я установил 9 из них, и они прекрасно работают ниже один подбрасывает ошибку времени выполнения (Ошибка выполнения «1004», приложение или объект определенных ошибокОбъявление формулы excel в качестве константы в vba
Option Explicit
Public Const csFORMULA = "=CONCATENATE(""AVABIS"",IF(I2=0,"""",CONCATENATE(UPPER(AlphaNumericOnly(LEFT(I2,3))),UPPER(AlphaNumericOnly(RIGHT(I2,3))))),IF(O2=0,"""",UPPER(AlphaNumericOnly(SUBSTITUTE(O2,""0"","""")))),IF(R2=0,"""",UPPER(AlphaNumericOnly(SUBSTITUTE(R2,""0"","""")))),IF(W2=0,"""",UPPER(AlphaNumericOnly(SUBSTITUTE(W2,""0"","")))),IF(AB2=0,"""",AlphaNumericOnly(SUBSTITUTE(AB2,""0"",""""))),IF(AC2=0,"""",AlphaNumericOnly(SUBSTITUTE(AC2,""0"",""""))),IF(AD2=0,"""",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(AD2,""-"",""X""),""."",""Y""),""0"",""Z"")),IF(AF2=0,"""",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(AF2,""-"",""X""),""."",""Y""),""0"",""Z"")),IF(AH2=0,"""",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(AH2,""-"",""X""),""."",""Y""),""0"",""Z""))))"
Sub AvivaBIS()
Dim lr As Long
Dim cl As Range
Dim rng As Range
Dim mssg As String
Dim ws As Worksheet
Application.ScreenUpdating = False
Set ws = ActiveSheet
With ws
lr = .Range("I" & Rows.Count).End(xlUp).Row
'add the formula to generate the unique key
Range("B2:B" & lr).Formula = csFORMULA
Range("B2:B" & lr) = Range("B2:B" & lr).Value
End With
Set rng = Nothing
Set ws = Nothing
Application.ScreenUpdating = True
End Sub
Я удалил. другой несущественные код из выше упростить мой вопрос
шагов я взял до сих пор:.
Пытался вставить оригинальную формулу прямо в листе - это работает
Пробовал замену. (например, A1 + A2) - это работает.
Двойной проверил кавычки, чтобы увидеть, что у меня есть правильный номер - они кажутся прекрасными.
Скопировал другую очень похожую формулу из других, которые я создал - это тоже работает.
Любые предложения относительно того, что еще я мог бы исправить, было бы с благодарностью принято. Есть ли способ получить больше информации, когда она вызывает ошибку во время выполнения?
Спасибо, как всегда за то, что нашли время, чтобы посмотреть.
Не можете ли вы просто ввести формулу в какую-либо скрытую ячейку и скопировать ее в требуемый диапазон? Это безопаснее, чем ввод строки, поскольку язык может меняться (разделители списков) –
Debug.print константа, затем попробуйте скопировать/вставить ее в B2. Вы получили сообщение об ошибке? –