Excel VBA для циклической записи формулы в ячейках в зависимости от числа в цикле - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь написать Forumla в ячейках (от ячейки A2 до AI, где I - число в цикле For).Формула, которая должна быть написана, должна соответствовать ячейке M2-MI, где I - это число в цикле For.

Я могу написать ссылку на лист самостоятельно:

ws.Cells(1 + I, KolonneForX + 1).Formula = " ='" & ws.Name & "'"

которая дает мне формулу ='Ark1' (сама по себе) в ячейках, которые я хочу.

А также правильное название ячейки, чтобы читать:

ws.Cells(1 + I, KolonneForX + 2).Formula = "=CONCATENATE(""M"",TEXT(" & I & "+1,""0""))"

, что дает мне формулуMI (само по себе, с соответствующим номером для I) в ячейках, которые я хочу.

Но когда я пытаюсь поставить их обоих вместе, я не могу заставить их работать и обращаться кправильные ячейки.

Вот код, который я пытался запустить:

Sub OppretteKnutepunkt()
    Dim ws As Worksheet
    Set ws = Worksheets("Ark1")
    Dim KolonneForX As Integer

    For I = 1 To 5
        ws.Cells(1 + I, KolonneForX + 2).Formula = "='" & ws.Name & "'!CONCATENATE(""M"",TEXT(" & I & "+1,""0""))"
    Next I
End Sub

Я хочу, чтобы ячейка A2 имела следующую формулу:

='Ark1'!M2

Я хочу, чтобы ячейка A3 имела следующую формулу:

='Ark1'!M3

и т. Д.

Есть предложения?

1 Ответ

1 голос
/ 11 марта 2019

Вы можете достичь этого без зацикливания

Dim I as Long    
I = 7
With ws.Range("A2:A" & I)
    .Formula = "='" & .Parent.Name & "'!M2"
End With

With - сокращенный способ использования одного и того же префикса для блока кода. Компилятор VBA префиксует все, что начинается с ., с того, что объявлено в блоке With

Эквивалент вышеупомянутого будет:

ws.Range("A2:A" & I).Formula = "='" & ws.Range("A2:A" & I).Parent.Name & "'!M2"
...