我正在尝试使用VBA连接公式中的字符串。如果仅使用下面的代码,我不会收到任何错误,但是当我将IFERROR与代码一起添加时,会出现运行时错误。
有什么解决方法吗?
text1 = "='C:\Users\JOHLA\\Desktop\Yield ark\Nyt-yield-ark\[Yield-Uge-"
text2 = ".xlsm]Scrap'!H7"
下面给出了包含带有IFERROR的字符串的代码,这些字符串给出了运行时错误。
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim i As Integer
Dim preRange As Range
Dim path, filename1 As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set ws = ActiveWorkbook.Sheets("Sheet1")
Set preRange = ws.Range("E9:I17")
i = ws.Range("C1").Value
text1 = "=IFERROR('C:\Users\JOHLA\Desktop\Yield ark\Nyt-yield-ark\[Yield-Uge-"
text2 = ".xlsm]Scrap'!H7;0)"
With ws
For i = .Range("C1").Value To .Range("C1").Value + 4
debug.print text1 & i & text2
preRange = text1 & i & text2
Set preRange = preRange.Offset(0, 5)
Next i
End With
End Sub
答案 0 :(得分:1)
通过在公式中使用分号来判断,这表明您使用的本地设置与VBA.Formula不兼容
在这种情况下,您需要更改公式以使用逗号或使用FormulaLocal
设置公式:
preRange.FormulaLocal = Replace(text1 & i & text2, "'", Chr(34))
如您所见,我还添加了一个Replace
,将'
更改为"
-我认为您也需要这样做。
最后,请不要忘记在例程结束时启用ScreenUpdating
和DisplayAlerts
。
答案 1 :(得分:0)
每次使用
Application.ScreenUpdating = False
Application.DisplayAlerts = False
您需要确保使用错误处理来管理代码是否中断。
On Error GoTo ExitErr
Application.ScreenUpdating = False
Application.DisplayAlerts = False
<your code here>
ExitErr:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
这可以确保如果代码中断(在您的情况下,最明显的是重命名“ Sheet1”的人),则不会留下Excel,而ScreenUpdating和DisplayAlerts处于关闭状态。我无法告诉您我不得不修复其他人的代码多少次,因为他们关闭了这些功能,然后又无法弄清Excel为何起作用。