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

时间:2015-09-05 01:43:00

标签: string excel vba excel-vba

我试图在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拒绝运行代码,给我一个&#34;应用程序定义或对象定义的错误。&# 34;

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

感谢大家的帮助!我实际上发现我刚刚犯了一个愚蠢的错误:行Do While colvar<=26应该是Do While colvar<26。细胞被填满,但错误表现是因为一个细胞被一个不存在的物体填满。

我决定使用.Formula修饰符而不是.Value。感谢Jeeped建议。

相关问题