Excel VBA 2013 Customized Sub Только вставлено, не выполнено в ячейке с использованием FormulaR1C1 - PullRequest
0 голосов
/ 03 октября 2018

Я написал специальную подпрограмму для форматирования данных из другой ячейки.

Sub Macro3()
    '>> First record to get the original code in Testing.xlsm <<
    Range("F5").Select
    ActiveCell.FormulaR1C1 = "=fG_ReFormattingInvoiceNumber(RC[-3],3)"
    Range("H5").Select
    ActiveWorkbook.Save

    '>>> I wrote in my application this line => ReInvoicingWBook.Sheets _
    '    (G_sheetNameREINVOICinG).Range("U5").FormulaR1C1 = _
    '    "=fG_ReFormattingInvoiceNumber(RC[-19],3)"
End Sub

Проблема в том, что ReInvoicingWBook.Sheets(G_sheetNameREINVOICinG).Range("U5") Ячейка просто заполнена формулой, но она не выполняется.

ReInvoicingWBook - это файл, открытый приложением Excel, которое я разрабатываю и пишу в нем.

Тем не менее, вызов fG_ReFormattingInvoiceNumber() хорошо работает в оригинальном файле Testing.xlsm / SubMacro3 где я захватил строки VBA.

Первое, что я вижу, это то, что ReInvoicingWBook - это указатель на файл XLSM, который отслеживается моим приложением.Возможно, это причина ...

Любое решение или помощь от вас приветствуются.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Я нашел причину, по которой она не работает: ячейка была отформатирована в текстовом виде, тогда как она должна быть как общая.Теперь все в порядке.

0 голосов
/ 04 октября 2018

Вы можете принудительно вычислить ячейки, используя .Calculate.

Sub Macro3()
    Range("F5").FormulaR1C1 = "=fG_ReFormattingInvoiceNumber(RC[-3],3)"
    Range("F5").Calculate
    ActiveWorkbook.Save
End Sub

Как правило, всегда используйте Option Explicit, избегайте использования .Select и .Activate.Кроме того, полностью определите ваши диапазоны (чего я не делал в примере выше, потому что у меня нет контекста).

...