2014-03-18 83 views
0

我的工作簿中有多個工作表。 兩個片材(片材「A」和表「B」)具有分配給它們下面的代碼:Excel 2010 VBA文本到一列工作簿中的多個工作表

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列中的數據就會消失。如果我回答正確,我會得到運行時錯誤'1004': Text To Column method of Range class failed. 如何讓此代碼在每個工作表內獨立工作,沒有錯誤?

回答

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中有數據,我也會收到警告...............如果我回答OK,則會發生覆蓋............ ......如果我回答取消,則不會發生錯誤。

+0

試過了 - 沒有變化。如果我回答「否」,那麼我仍然會收到消失的數據,如果我回答「是」,則仍會收到運行時錯誤 – user3434771

+0

謝謝 - 至少運行時錯誤不再是問題。 – user3434771

+0

**記住:** .........你總是可以用公式來做文本到列! –

相關問題