В моем определенном диапазоне Sheet2 B4 и B5 есть имена. Я ищу имена в списке и возвращаю счет. Мое определение rng вызывает исключение и возвращает rng как «Nothing». Я не вижу ничего плохого в том, как я это определил.
Sub countPeople()
Dim iVal As Integer
Dim Lastrow As Integer
Dim rng As Range, cell As Range
Dim rng2 As Range
Dim ws As Worksheet
Set ws = Sheets("Sheet2")
rng = ws.Range("B4:B5")
Lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
For Each cell In rng
iVal = Application.WorksheetFunction.CountIf(Sheet1.Range("E2:E" & Lastrow), Sheet2.Range(cell))
cell.Offset(0, 1) = iVal
Next cell
End Sub
Обновление
Удалены ссылки как комментарий. Обновлено, чтобы включить явную опцию. Сейчас на отладке
iVal = Application.WorksheetFunction.CountIf(Sheet1.Range("E2:E" & Lastrow), Sheet2.Range(cell))
Нарушает код. Однако ошибка не отображается, а Lastrow и ячейка содержат правильные значения. ячейка - это имя из B4 Sheet2, которое я sh ищу в E2: Lastrow in Sheet1.
Новый код завершен.
Option Explicit
Sub countPeople()
Dim iVal As Integer
Dim Lastrow As Integer
Dim rng As Range, cell As Range
Set rng = Range("B4:B5")
Lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
For Each cell In rng
iVal = Application.WorksheetFunction.CountIf(Sheet1.Range("E2:E" & Lastrow), Sheet2.Range(cell))
cell.Offset(0, 1) = iVal
Next cell
End Sub
Обновление 2 Я слишком явно использовал ссылку на ячейку
Изменение
Sheet2.Range(cell))
на
cell
Исправлено