2015-05-21 2 views
0

Я изучаю Excel-VBA, и я пытаюсь научиться делать то, что поможет мне в будущем. Я пытался научиться делать простой раскол без цикла. Хотя я получил код, который мог бы использовать, я не мог этого понять.
Excel VBA- Copy and paste text on left after CHAR(10)excel vba - простой сплит без петли

У меня есть этот макет из того, что я узнал в коде, на который я указал. Я чувствую, что я рядом, но независимо от того, что я делаю, я не могу заставить синтаксис работать. Любая помощь будет принята с благодарностью.

Я прикрепил код и фрагмент того, что я хотел бы видеть до и после. Мой код не работает в этой строке.

Worksheets("Sheet1").Cells(1, 2).Value = fullname 

Код ниже

Sub test() 

    Dim txt As String 
    Dim fullname As String 

    txt = Worksheets("Sheet1").Cells(1, 1).Value 
    fullname = Split(txt, Chr(10)) 

    Worksheets("Sheet1").Cells(1, 2).Value = fullname 

    End Sub 

enter image description here

ответ

1

Это терпит неудачу, потому что ПолноеИмя является массив. Чтобы получить первый элемент:

Worksheets("Sheet1").Cells(1, 2).Value = fullname(0) 
0

Как говорит студент Гэри - FULLNAME будет массивом. Первая проблема, с которой вы столкнетесь, - это несоответствие типа, поскольку вы объявили имя_имя как строку.

Вы можете вставить массив в диапазон ячеек или ссылочные элементы массива, как сказал Гэри в своем ответе.

Sub test() 

    Dim txt As String 
    Dim fullname As Variant 

    txt = Worksheets("Sheet1").Cells(1, 1).Value 

    'This will be an array containing 4 different values 
    'based on your A1 cell containing 3 line breaks. 
    fullname = Split(txt, Chr(10)) 

    With Worksheets("Sheet1") 

     'The array must be pasted into 4 cells. 
     '.Range(.Cells(1, 2), .Cells(1, UBound(fullname) + 2)) = fullname 

     'the above line is the same as: 
     .Range("B1:E1") = fullname 

    End With 

End Sub