2015-04-14 4 views
0

У меня есть функция VBA, которая создает 2D-массив res. Я хотел бы написать данные массива на другой рабочий лист, а не на текущий рабочий лист, из которого выполняется функция. Это должно быть довольно просто, но я новичок в VBA.Excel VBA: Напишите 2D-массив на другой рабочий лист

Код заканчивается на последней строке без сообщения об ошибке или записи каких-либо данных.

Dim wb As Workbook 
Dim ws As Worksheet 
Set wb = ThisWorkbook 
Set ws = wb.Worksheets("Output") 

Dim out As Range 
Set out = ws.Range("A1") 
out.Resize(UBound(res, 1), UBound(res, 2)).Value = res 
+2

Если вы вызываете эту функцию из ячейки, вы не можете изменить значение другой ячейки. – Rory

+0

Ваш код работал на меня. Убедитесь, что у вас есть допустимые значения в 'res'. – PeterT

+0

Да, код работает. Может быть полезно увидеть эту функцию. –

ответ

1

Ваш существующий код должен работать.

Действительно ли Res содержит данные?

Пример, который заполняет массив, проверяет, если он больше, чем одна ячейка, а затем сбрасывается обратно на рабочий лист.

Dim wb As Workbook 
Dim ws As Worksheet 
Dim ws2 As Worksheet 

Dim rng1 As Range 
Dim res 

Set wb = ThisWorkbook 
Set ws = wb.Worksheets("Input") 
Set ws1 = wb.Worksheets("Output") 

Set rng1 = ws.Range("A1:B10") 

If rng1.Cells.Count > 1 Then 
    res = rng1.Value2 
    ws1.[a1].Resize(UBound(res, 1), UBound(res, 2)).Value2 = res 
End If 
Смежные вопросы