Excel - выбор диапазона на другом листе - PullRequest
0 голосов
/ 30 сентября 2019

Я использую Excel 2010, пытаюсь собрать коллекцию из диапазона, а затем скопировать ее в другой лист, используя этот код:

Set g_colTGDNames = New Collection

Worksheets("CONF").Activate
Range("TGDNames").Select
Do Until ActiveCell.Value = ""
    g_colTGDNames.Add ActiveCell.Value
    ActiveCell.Offset(1, 0).Select
Loop

Worksheets("TGDOut").Activate
Range("SymbolsOUT").Select
For Each obj In g_colTGDNames
    ActiveCell.Value = CStr(obj)
    ActiveCell.Offset(1, 0).Select
Next

Сборка сборки успешно завершена, но после переключения листов я получил ошибка 1004 в строке

Range("SymbolsOUT").Select

Я понятия не имею, почему, это работает, когда я собираю коллекцию. Есть идеи?

1 Ответ

1 голос
/ 30 сентября 2019

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

Range("SymbolsOUT").Select

означает на самом деле

'Select the range "SymbolsOUT" from the worksheet where your function is written
Me.Range("SymbolsOUT").Select

То, что вы действительно хотите, это

ActiveSheet.Range("SymbolsOUT").Select

Теперь, комментарий @JvdV совершенно прав: вы не делаетенужно использовать Select и Activate, чтобы добиться того, что вы делаете. Это делает код грязным, и, кроме того, это действительно боль для производительности:

Dim mycell as Range
Set mycell = Worksheets("TGDOut").Range("SymbolsOUT")
Do Until mycell.Value = ""
    g_colTGDNames.Add mycell.Value
    Set myCell = myCell.Offset(1, 0)
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...