我可以在字符串中插入变量吗?

问题描述 投票:0回答:2

我正在尝试在 Excel VBA 中编写一个程序,将公式插入一列单元格中。该公式根据左侧单元格的内容而变化。 这是我到目前为止编写的代码:

Sub Formula()
Dim colvar As Integer
colvar = 1
Dim Name As String
Name = "Sample, J."
Do While colvar <= 26
    colvar = colvar + 1
    Name = Range("B" & colvar).Value
    Range("C" & colvar).Value = "='" & Name & "'!N18"

Loop
End Sub

如您所见,我想在公式字符串之间插入变量

Name
,但 Excel 拒绝运行代码,给我一个“应用程序定义或对象定义的错误。”

有办法解决这个问题吗?

string vba excel
2个回答
0
投票

您将需要进行一些错误检查,以防工作簿中实际不存在工作表。

看起来您正在循环遍历包含工作表名称列表的 B 列,并希望在其旁边显示范围 N18。

类似的东西

    Sub Button1_Click()
    Dim Lstrw As Long, rng As Range, c As Range
    Dim Name As String

    Lstrw = Cells(Rows.Count, "B").End(xlUp).Row
    Set rng = Range("B1:B" & Lstrw)

    For Each c In rng.Cells
        Name = c
        c.Offset(, 1) = "='" & Name & "'!N18"
    Next c

End Sub

或者您可以只列出工作表并在其旁边显示 N18,在名为“Sheet1”的工作表中运行此代码

    Sub GetTheSh()
    Dim sh As Worksheet, ws As Worksheet

    Set ws = Sheets("Sheet1")

    For Each sh In Sheets

        If sh.Name <> ws.Name Then

            ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(1) = sh.Name
            ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(0, 1) = sh.Range("N18")

        End If

    Next sh


End Sub

0
投票

我实际上发现我刚刚犯了一个愚蠢的错误:

Do While colvar<=26
行应该是
Do While colvar<26
。单元格已被填充,但出现错误是因为一个单元格被不存在的对象填充。

我确实决定使用

.Formula
属性而不是
.Value

© www.soinside.com 2019 - 2024. All rights reserved.