0

我正在尝试在单元格中编写一个 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

我希望 CellA2具有以下公式:

='Ark1'!M2

我希望 CellA3具有以下公式:

='Ark1'!M3

等等。

有什么建议么?

4

1 回答 1

1

您无需循环即可实现此目的

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

With是在代码块上使用相同前缀的简写方式。VBA编译器为以 a 开头的所有内容加上块.声明的任何内容With

上面的等价物是:

ws.Range("A2:A" & I).Formula = "='" & ws.Range("A2:A" & I).Parent.Name & "'!M2"
于 2019-03-11T14:21:11.747 回答