我的工作簿中有多张工作表。 其中两张(Sheet“A”和Sheet“B”)分配了以下代码:
Private Sub Worksheet_Change(ByVal target As Range)
Range("A:A").Select
Selection.TextToColumns Destination:=Range("A:A"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
End Sub
如果将文本文件复制并粘贴到工作表“A”中,则会复制另一个文本文件并将其粘贴到工作表“B”中,一切正常。
如果首先将文本文件复制并粘贴到工作表“B”中,则会复制另一个文本文件并将其粘贴到工作表“A”中,最后会出现错误:
在第一次粘贴到工作表“B”后,对话框“你想替换目标单元格的内容吗?”出现。 (我回答OK)
然后在我粘贴到表单“B”后,我得到相同的对话框 - 如果我输入“否”,则列B中的数据消失。如果我回答OK,我收到运行时错误'1004': Text To Column method of Range class failed.
如何让这些代码在每张工作表中独立工作,没有错误?
答案 0 :(得分:0)
尝试一下:
Private Sub Worksheet_Change(ByVal target As Range)
Application.EnableEvents = False
Range("A:A").Select
Selection.TextToColumns Destination:=Range("A:A"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
Application.EnableEvents = True
End Sub
修改#1 强>
我必须重新启用事件
然后我按如下方式修改了宏:
Private Sub Worksheet_Change(ByVal target As Range)
On Error Resume Next
Application.EnableEvents = False
Range("A:A").Select
Selection.TextToColumns Destination:=Range("A:A"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
Application.EnableEvents = True
End Sub
如果列 B 中有数据,我也会收到警告...............如果我回答确定,覆盖发生...............如果我回答取消,则不会发生错误。