我试图在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;
有没有办法解决这个问题?
答案 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建议。