/ / Excel VBA Перемістіть масив та оголосіть до іншого діапазону аркушів - масиви, excel, vba, excel-vba

Excel VBA Перенесення масиву та оголошення до іншого діапазону аркушів - масиви, excel, vba, excel-vba

У мене є код VBA Excel, який генерує масив на основі входів / обчислень, а потім вводить значення на інший аркуш.

У мене це працює для однієї версії моєї електронної таблиці, яка містить усі обчислення на одному аркуші, використовуючи:

Range(Cells(4, "T"), Cells(4 + ball, "T")).Value = Application.Transpose(lon)

Однак, коли я намагаюся використовувати це в іншій робочій книжці, яка вводить значення на інший аркуш того самого місця, використовуючи:

Sheets("Calculations").Range(Cells(4, "T"), Cells(4 + ball, "T")).Value = Application.Transpose(lon)

Я отримую помилку із зазначенням: "Помилка під час виконання" 1004 ": Помилка, визначена додатком або визначена об'єктом ". Я роздивився це, а також робив деякий debug.print значень у своєму масиві, щоб переконатися, що я розумію значення та довжину, вважаю, що моя проблема полягає в тому, як я оголошую діапазон. Однак , Я не можу зрозуміти правильну реалізацію.

Як обхід, у мене є цикл For, який вставляє значення в комірку, але мені здається, був би більш чистий спосіб зробити це.

For n = 1 To ball
Sheets("Calculations").Cells(4 + n, "T").Value = lon(n)
Next n

Спасибі за вашу допомогу!

Відповіді:

3 для відповіді № 1

Об'єкт вашої клітини недостатньо кваліфікований.

Хоча ваш діапазон має на увазі Sheets("Calculations") в Sheets("Calculations").Range але Cells посилаються на ActiveSheet.

Ви можете це зробити

Sheets("Calculations").Range(Sheets("Calculations").Cells(4, "T"), Sheets("Calculations").Cells(4 + ball, "T")).Value=Application.Transpose(lon)

або (Помітьте крапки перед об'єктом Cells)

With Sheets("Calculations")
.Range(.Cells(4, "T"), .Cells(4 + ball, "T")).Value = Application.Transpose(lon)
End With