Как скопировать значения табуляции в ячейки в VBA - PullRequest
0 голосов
/ 19 февраля 2019

Уважаемые члены StackOverFlow-members,

Я пытаюсь скопировать содержимое вкладки в диапазон ячеек.Например, если у меня есть 5 значений на моей вкладке, я хочу скопировать каждое значение в 5 разных ячеек.Итак, от 1 значения tab до 1 ячейки.

Я попытался перебрать диапазон ячеек и перебрать табуляцию, как показано в следующем коде.Но я получаю только 5 в каждой клетке.

Sub test()

Dim i As Integer
Dim j As Integer
Dim tabtest(4) As Integer
tabtest(0) = 1
tabtest(1) = 2
tabtest(2) = 3
tabtest(3) = 4
tabtest(4) = 5

For i = 5 To 10
For j = 0 To 4
Sheets("Câbles").Range("A" & i).Value = tabtest(j)
Next j
Next i

End Sub

Я хочу извлечь уроки из этого, поэтому, если возможно, объясните мне, что я делаю не так, или если моему подходу не хватает понимания.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Ваш код выполняет два отдельных цикла.В действительности, нет петли необходимы:

Sub test()
    Dim tabtest(4) As Integer

    tabtest(0) = 1
    tabtest(1) = 2
    tabtest(2) = 3
    tabtest(3) = 4
    tabtest(4) = 5

    With Application.WorksheetFunction
        Sheets("Câbles").Range("A5").Resize(UBound(tabtest) + 1, 1).Value = .Transpose(tabtest)
    End With

End Sub

enter image description here

ПРИМЕЧАНИЕ:

Вы используете TRANSPOSE() для перемещения массива в столбец ячеек.Вам не нужно TRANSPOSE() для перемещения массива в строку ячеек.

0 голосов
/ 19 февраля 2019

Вам не нужен второй цикл.Также у вас есть 5 значений во вкладке, поэтому первый цикл должен быть от 5 до 9, а не от 5 до 10.Вместо 10 или 9 вы также можете использовать Ubound(tabtest) для достижения того, что вы хотите.

Это то, что вы пытаетесь?

j = 0
For i = 5 To 9
    Sheets("Câbles").Range("A" & i).Value = tabtest(j)
    j = j + 1
Next i

Использование Ubound

Sub test()
    Dim i As Long, j As Long
    Dim startRow As Long

    Dim tabtest(4) As Integer
    tabtest(0) = 1
    tabtest(1) = 2
    tabtest(2) = 3
    tabtest(3) = 4
    tabtest(4) = 5

    startRow = 5

    For i = startRow To (startRow + UBound(tabtest))
        Sheets("Câbles").Range("A" & i).Value = tabtest(j)
        j = j + 1
    Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...