2017-11-10 69 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

@吉尔伯特请在答案处点击复选标记并标记为正确。 –