Есть случаи, когда PrimaryWeapon
никогда не инициализируется (всякий раз, когда PrimaryWeapon1
не равно 1
).
Используйте это и исправлено:
String primaryWeapon = "";
Замените вашу строку следующим образом:
Set RankValue = Sheets(1).Range("D2:D" & LastRow)
Часть ("D2:D" & LastRow)
создает адрес, как D2: D45. &
означает конкатенацию
Добавлено после комментариев
Если вы поставите это перед ошибочным утверждением, вы поймете больше:
Debug.Print "D2:D" & LastRow
Set RankValue = Sheets(1).Range("D2:D" & LastRow)
Нажмите Ctrl + G, чтобы открыть окно отладки. Он напечатает значение "D2:D" & LastRow
, которое, как ожидается, будет диапазоном. Если LastRow пуст или содержит строковое значение, ваш диапазон обычно будет недействительным.