Получить значение из других листов и поместить его в массив - PullRequest
1 голос
/ 30 октября 2019

Я новичок в VBA. Я хочу получить весь список штатов и городов из другого листа. Затем поместите его в массив State и City. Но я получил ошибку в массиве состояний, ошибка времени выполнения '13'. Несоответствие типов.

Dim State() As String
Dim City() As String
Dim LastRow As Long

Sheets("State&City").Select
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
->State() = Range("A2:A" & LastRow).Value
City() = Range("B2:B" & LastRow).Value

1 Ответ

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

Используйте что-то вроде этих строк:

Dim ws As Worksheet: Set ws = Sheets("State&City")
Dim State As Variant, City as Variant
Dim LastRow As Long

With ws
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    State = .Range("A2:A" & LastRow)
    City = .Range("B2:B" & LastRow)
End With
  • Итак, мы вытащили значения в массив Variant
  • Мы использовали явную ссылку на лист и избежали .Select

Примечание. Это двумерные массивы, поэтому в приведенном выше случае вы можете ссылаться на такой элемент, как .Range("C2") = State(1,1) или для n-го элемента: .Range("C2") = State(n,1)


В качестве альтернативы:

Объедините значения в один массив, например: StateCity

Dim ws As Worksheet: Set ws = Sheets("State&City")
Dim StateCity as variant
Dim LastRow As Long

With ws
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    StateCity = .Range("A2:B" & LastRow)
End With

Теперь вы можете обращаться к n-му состоянию с помощью:

.Range("C2") = StateCity (n,1)

Или обратитесь к n-му городу с:

.Range("C2") = StateCity (n,2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...