Вставить диапазон ячеек формулы без изменения - PullRequest
1 голос
/ 03 августа 2020

Я пытаюсь вставить диапазон формул в определенную c строку.

Но ячейки формулы не меняются:

=BDH('Hist Dorian'!$B$3;"PX_LAST";A13;A13)

A13 должно изменить при вставке:

введите описание изображения здесь

В этом примере на экране формула ячеек должна быть:

=BDH('Hist Dorian'!$B$3;"PX_LAST";A23;A23)
=BDH('Hist Dorian'!$B$3;"PX_LAST";A24;A24)
=BDH('Hist Dorian'!$B$3;"PX_LAST";A25;A25)
=BDH('Hist Dorian'!$B$3;"PX_LAST";A26;A26)
=BDH('Hist Dorian'!$B$3;"PX_LAST";A27;A27)

И так далее .. Но ячейки не меняются

Ниже мой код:

Private Sub Workbook_Open()

Dim AJD As Date
Dim LastDate As Date

Application.Calculation = xlManual

AJD = Now

AJD = Day(AJD) & "/" & Month(AJD) & "/" & Year(AJD)

If AJD <> CDate(ThisWorkbook.Worksheets("Histo").Range("A13").Value) Then



    LastDate = CDate(ThisWorkbook.Worksheets("Histo").Range("A13").Value)
    NumberOfIt = DateDiff("D", LastDate, AJD)
    
    MsgBox ("MaJ Historique, Derniere Mise a jour : " & LastDate & " Insertion de " & NumberOfIt & " nouvelles lignes")
    
    DoEvents
    For i = 1 To NumberOfIt - 1
        ThisWorkbook.Worksheets("Histo").Rows(13).Insert shift:=xlShiftDown
        ThisWorkbook.Worksheets("Histo").Range("A13").Value = DateAdd("d", i, LastDate)
         With ThisWorkbook.Worksheets("Histo")
            lrow = NumberOfIt
            .Range("B13:DM13").Formula = .Range("B5:DM5").Formula
        End With
    Next


End If
ThisWorkbook.Worksheets("Primary Pricer").Activate
Application.Calculation = xlAutomatic
MsgBox ("Historique MaJ terminé")
End Sub

EDIT

Когда я вставляю новую строку, как я могу обновить формулу, чтобы изменить ячейки?

Например, я вставляю Row(13) Таким образом, приведенная ниже формула должна быть =BDH('Hist Dorian'!$B$3;"PX_LAST";A14;A14), а не =BDH('Hist Dorian'!$B$3;"PX_LAST";A13;A13), но она не изменяется как исключение

Редактировать 2

Sub pasteFormulas()
    Range("F6").Copy
    Range("G6").PasteSpecial Paste:=xlPasteFormulas
    ThisWorkbook.Worksheets("Name").Rows(6).Insert shift:=xlShiftDown
End Sub

1 Ответ

0 голосов
/ 03 августа 2020

Попробуйте:

.Range("B13:DM13").Copy 
.Range("B5:DM5").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

в for l oop.

Ниже пример кода, который я пробовал, который работает для ячейки:

Sub pasteFormulas()
    Range("F6").Copy
    Range("G6").PasteSpecial Paste:=xlPasteFormulas
    'Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        'SkipBlanks:=False, Transpose:=False
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...