Индекс вне диапазона, VBA - PullRequest
0 голосов
/ 15 февраля 2019

, поэтому у меня есть эта строка кода


Dim j As Long, i As Long
j = 18

For i = 3 To 47
    If ThisWorkbook.Sheets("Skills").Range("E" & i) > 0 Then
        ThisWorkbook.Sheets("MainPage").Range("B" & j) = ThisWorkbook.Sheets("Skills").Range("B" & i)
            j = j + 1
    End If
Next

End Sub

Моя проблема заключается в следующем: сначала в строке If .... у меня была ошибка требуемого объекта, теперь я исправил это (я думал), но теперь наследующая строка sheetSkills("B" & j).... Я получаю индекс из-за ошибки диапазона.У кого-нибудь есть идеи?Я не могу понять это действительно

1 Ответ

0 голосов
/ 15 февраля 2019
  1. Может быть Ваш код ищет другую книгу?Попробуйте ThisWorkbook.Sheets
  2. Добавить Option Explicit для принудительного объявления переменных (хотя это не является источником вашей проблемы)
  3. Последнее, передача значения должна быть Range.Value = Range.Value

Единственная другая ошибка, которую я вижу, это то, что имена ваших листов не являются точными совпадениями.Я запустил этот код без проблем (и ваш).Если у вашего фактического имени листа есть пробел или какой-то другой символ, который на первый взгляд неочевиден, это даст вам Subscript Out of Range, поскольку это должно быть точное соответствие.


Sub Skills()

Dim j As Long, i As Long
j = 18

For i = 3 To 47
    If ThisWorkbook.Sheets("Skills").Range("E" & i) > 0 Then
        ThisWorkbook.Sheets("MainPage").Range("B" & j).Value = ThisWorkbook.Sheets("Skills").Range("E" & i).Value
            j = j + 1
    End If
Next

End Sub

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

Sub Test()

Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Skills")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("MainPage")

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...