Excel VBA Ошибка 1004 в замене формулы ячейки - PullRequest
1 голос
/ 15 апреля 2020

Примечание: я француз, поэтому обычно я использую французские функции (например, SI для IF или SOMME для SUM), а разделителем десятичных дробей по умолчанию является запятая, а не точка (например, 1,03 для 1.03)

Мне нужно заменить много формул в книге Excel, и все они имеют один и тот же шаблон, но я не могу использовать инструмент быстрого заполнения, поэтому я пытаюсь создайте для этого макрос.

Во-первых, вот как выглядит ячейка:

='C:\...\[file1.xlsx]'sheeta!$XXa$nna - 'C:\...\[file2.xlsx]'sheetb!$XXb$nnb

Итак, я хочу сохранить эти два адреса (я буду назовите их ad1 и ad2), чтобы получить следующие формулы:

=IF(AND(ISNUMBER(VALUE(ad1;"."));ISNUMBER(VALUE(ad2;".")));SUM(VALUE(ad1,".");PRODUCT(-1;VALUE(ad2;".")));"NA")

, который вычитает два числа, сохраненные в разных форматах, и отображает NA, если хотя бы один из это не число.

Вот макрос, который я написал:

Sub tmp()
    Dim c As Range
    Dim adr1 As String
    Dim adr2 As String
    Dim frm As String

    For Each c In Application.Selection.Cells
        adr1 = Split(Split(c.Formula, "=")(1), "-'")(0)
        adr2 = "'" & Split(Split(c.Formula, "=")(1), "-'")(1)

        frm = "=IF(AND(ISNUMBER(VALUE(" & adr1 & ";"".""));ISNUMBER(VALUE(" & adr2 & ";""."")));SUM(VALUE(" & adr1 & ";""."");PRODUCT(-1;VALUE(" & adr2 & ";""."")));""NA"")"

        c.Formula = frm
    Next
End Sub

Ошибка возникает при последнем действии c.Formula = frm.

Я уже проверил Значение frm, и это хорошо.

Я думаю, что в моей формуле есть ошибка синтаксиса, но я не смог ее найти. Кто-нибудь может мне помочь?

Заранее спасибо!

1 Ответ

1 голос
/ 15 апреля 2020

VBA принимает только Формула формата США. Формат США использовать , вместо ;

        frm = "=IF(AND(ISNUMBER(VALUE(" & adr1 & ",""."")),ISNUMBER(VALUE(" & adr2 & ","".""))),SUM(VALUE(" & adr1 & ","".""),PRODUCT(-1,VALUE(" & adr2 & ","".""))),""NA"")"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...