Чтение / запись данных на других листах без предварительного выбора - PullRequest
1 голос
/ 06 января 2011

У меня возникли некоторые проблемы с чтением и записью данных с других листов.

Хотя я могу хорошо читать и записывать отдельные ячейки, используя:

листов (Имя листа).cells (x, y) .value

с использованием:

листов (имя листа) .range (ячейки (x, y), ячейки (a, b)). value

, похоже, не работает.

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

Основная цель, которая мне нужнаэто чтение и запись массивов в неактивные рабочие листы, если у кого-то есть альтернатива, я был бы чрезвычайно благодарен.

Приветствия

Ответы [ 3 ]

3 голосов
/ 22 марта 2012

Если вы хотите избежать использования «Выбрать» или «Активировать», не могли бы вы вместо этого использовать?:

With Sheets("Sheet Name")

    arrData = .Range(.Cells(1,1), .Cells(2,1)).Value

End With

Насколько я знаю, это должно работать.

2 голосов
/ 12 июля 2017
Dim ws As Worksheet

Set ws= Worksheets("MySheet")

       With ws
        .Range(ws.Cells(3, 1), ws.Cells(3, 14)).ClearContents
       End With

End If

Это работает очень хорошо без активации листа

1 голос
/ 06 января 2011

Использование метода ячеек в объекте диапазона для ссылки на другой лист требует, чтобы вы сначала активировали этот лист, как мне кажется (см. Раздел 5 этого документа msdn )

Sub ReferToCells()
    Dim arrData() As Variant, i As Long
    Sheets("Sheet2").Activate
    arrData = Range(Cells(1, 1), Cells(2, 1)).Value

    For i = 1 To UBound(arrData)
        Debug.Print arrData(i, 1)
    Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...