2017-11-10 90 views
0

我是VBA新手,我會很感激任何幫助。我在文檔中運行一些宏,其中一個宏是一個用名稱複製列的宏,將它粘貼到下一列的右側,並使用texttocolumns將它分成兩個名稱和姓氏。當列它複製的名字從不是空的,它運行良好,但如果範圍是空的它給使用宏分割列時出錯

運行時錯誤1004 TextToColumns範圍類的方法失敗。

Sheets("PUNTA").Select 
Range("C2:C45").Select 
Selection.Copy 
Range("D2:D45").Select 

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

Columns("D:D").Select 

Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _ 
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ 
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _ 
    :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True 
Sheets("Tours").Select 

End Sub 

輸入代碼在這裏

回答

1

避免Select並測試是否有列中的值使用文本列前。

With Sheets("PUNTA") 
    .Range("D2:D45").Value = .Range("C2:C45").Value 
    If Application.WorksheetFunction.CountA(.Range("D:D")) > 0 Then 
     .Range("D:D").TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _ 
      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ 
      Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _ 
      :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True 
    End If 
End With 
+0

謝謝你的sooo多斯科特.....它確實TI .... !!!!我非常感激。 – Gilbert

+0

@吉爾伯特請在答案處點擊複選標記並標記爲正確。 –