Синтаксис Cells(), или что я делаю не так?

Есть довольно простая задача.

Сам я долек от excel и VBA, и в основном пишу на С++/C#.

Мне скинули xlsx документ, в котором есть 2 листа. На первом, что-то вроде базы данных, на втором названия ID используемых в первом. Сам документ судя по всему сконвертарованная база данных.

Второй лист представляет собой список из 2 колонок, в первой сам id во второй его название.

Всего в документе 1000 разных id, от 0 до 999.

Список id'шников не полный, некоторые пропущены так как не имеют названий.

В общем, нужно сделать так, чтобы на месте ID в первом листе стояли имена этих id'шников из второго.

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

Скрипт должен запускаться на выделенной области(от начала до конца заполненного столбца).

Кликните здесь для просмотра всего текста

Visual BasicВыделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Sub idArray()
 
Const lenght = 999
idNum = 0
Dim idName(0 To lenght) As String
 
'Заполняем массив именами
For i = 0 To lenght Step 1
    idNum = Worksheets("Sheet2").Cells(i, 1)
    idName(idNum) = Worksheets("Sheet2").Cells(i, 2)
Next i
 
'Заменяем значения строками
For Each cell In Sellection
    cell.Value = idName(cell.Value)
Next cell
 
End Sub

Почитав ман, я приступил к написанию. Но excel не захотел компилировать то, что я ему скормил. Когда дело дошло до строки

Visual BasicВыделить код

| | |
| --- | --- |
| 1 | id = Worksheets("Sheet2").Cells(i, 1) |

Компилятор выдал ошибку 1004, и я застрял. Собственно вопрос, в чем проблема, и можно ли использовать переменную счетчика внутри Cells(,), как это сделал я? Ну и по оставшейся части кода, если что-то посоветуете, буду благодарен.