Excel VBA For循环根据循环中的数字在单元格中编写公式

Excel VBA For Loop writing Formula in cells depending on the number in the loop

我正在尝试在单元格中编写一个 Forumla(从单元格 A2 到 AI,其中 I 是 For 循环中的数字)。 要写的公式必须对应单元格M2到MI,其中I是For循环中的数字。

我可以自己写 sheet-reference:

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

等等。

有什么建议吗?

无需循环即可实现此目的

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

With 是一种在代码块上使用相同前缀的 shorthand 方式。 VBA 编译器为所有以 . 开头的内容加上 With

声明的前缀

上面的等价物是:

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