Проблема с текстом в столбце (VBA)

#excel #vba #runtime-error

Вопрос:

Любая идея, почему я получаю сообщение об ошибке в приведенном ниже коде, я пытаюсь разделить 3/4 на две колонки, содержащие 3 и 4 соответственно;

Я получаю сообщение об ошибке: Ошибка во время выполнения «1004»: Ошибка, определяемая приложением или объектом

 Sub Test()
'Pause "Cell Contains a Value" Message Error
Application.DisplayAlerts = False

'Perform text to columnn function
Sheets("Look Up Tables").Range("Text_to_Columns").TextToColumns _
    Destination:=Sheets("Look Up Tables").Range("AE16:AF:16"), _
    DataType:=xlDelimited, _
    Other:=True, _
    OtherChar:="/"

'Resume "Cell Contains a Value" Error Message
Application.DisplayAlerts = True

End Sub
 

Комментарии:

1. В чем сообщение об ошибке?

2. Range("AE16:AF:16") — это опечатка в вашем коде или просто когда вы скопировали код в вопрос?

3. Никакой опечатки (если вы не заметили что-то, что я пропустил), диапазон назначения находится глубоко в электронной таблице, поэтому ячейки AE16 и AF16 верны

4. Сообщение об ошибке, как описано в тексте сообщения над кодом; Ошибка во время выполнения «1004»: Ошибка, определяемая приложением или объектом

5. То, что @FunThomas говорит, что у вас есть опечатка.. дополнительный «:» в "AE16:AF:16" . Это должно быть "AE16:AF16"

Ответ №1:

Хорошо, очевидный ответ заключается в том, что определение диапазона назначения имеет дополнительное : значение и, следовательно, является недопустимым — правильный синтаксис Range("AE16:AF16")

Это помогает разбивать такие длинные команды на части:

 With ThisWorkbook.Sheets("Look Up Tables")
    Dim sourceRange As Range, destRange as Range
    Set sourceRange = .Range("Text_to_Columns")
    Set destrange = .Range("AE16:AF:16")   ' <-- Error is here
    sourceRange.TextToColumns _
        Destination:=destRange _
        DataType:=xlDelimited, _
        Other:=True, _
        OtherChar:="/"
End With
 

Теперь вы получите сообщение об ошибке во время выполнения до выполнения TextToColumns команды -, и вам станет намного легче обнаружить проблему. И нет, выполнение не замедляется.