Передача строки без подстановки значения;
strSQL = "SELECT * FROM Table1 WHERE ID = ID_number;"
должно быть
strSQL = "SELECT * FROM Table1 WHERE ID = " & ID_number
как ID_number
только в контексте переменной VBA вне строки.
(Вы также не выполняете проверку типа на ID_number
, поэтому текст в неограниченном текстовом поле может быть ошибочным, а для строковых параметров - уязвимость внедрения)
Также обратите внимание, что RecordCount
может возвращать -1
в зависимости от расположения / типа курсора.