У мене є код 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