我正在尝试在 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 拒绝运行代码,给我一个“应用程序定义或对象定义的错误。”
有办法解决这个问题吗?
您将需要进行一些错误检查,以防工作簿中实际不存在工作表。
看起来您正在循环遍历包含工作表名称列表的 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
我实际上发现我刚刚犯了一个愚蠢的错误:
Do While colvar<=26
行应该是Do While colvar<26
。单元格已被填充,但出现错误是因为一个单元格被不存在的对象填充。
我确实决定使用
.Formula
属性而不是 .Value
。