最近,我已将MS Office版本更新为Office 365,但我发现我的excel文件之一不起作用。当我将数据粘贴到工作表中时,这是一个将连接公式应用于某些列的简单代码。
我需要如何处理代码?
Private Sub Worksheet_Change(ByVal Target As Range)
Range("B23:B4023").FormulaR1C1 = "=CONCATENATE(IF(RC[2]=""TTL"","""",RC[2]),IF(RC[3]="""","""",RC[3]),IF(RC[4]="""","""",RC[4]),IF(R7C4=""Class"",RC[6],RC[7]),RC[8],RC[5])"
End Sub
通常会在B列应用公式,以合并D,E,F,G,H,I&J列中的文本
但是,有
运行时错误'1004':对象'_Worksheet'的方法'Range'失败。
答案 0 :(得分:0)
Worksheet_Change
在当前工作表中的每个内容更改上运行。但是,当此代码还更改了同一工作表中的内容时,则会导致无限循环,因为所有这些更改还一次又一次地运行Worksheet_Change
。
在False
中的代码之前将Application.EnableEvents property设置为Worksheet_Change
可以避免此问题。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Me.Range("B23:B4023").FormulaR1C1 = "=CONCATENATE(IF(RC[2]=""TTL"","""",RC[2]),IF(RC[3]="""","""",RC[3]),IF(RC[4]="""","""",RC[4]),IF(R7C4=""Class"",RC[6],RC[7]),RC[8],RC[5])"
Application.EnableEvents = True
End Sub
但是,为什么在工作表中每次更改内容时都要设置公式呢?为什么不只设置一次?
答案 1 :(得分:-1)
您需要删除.FormulaR1C1