Нет, Not IsNull работает отлично.
Помните, IsNull - это функция, которая возвращает TRUE, если переданный ей параметр имеет значение null, и false в противном случае.
Ваш оператор "If Not IsNull (mrf) Then" переводится на английский как "Если mrf не равен null, то"
что это означает, когда mrf имеет значение, тогда вы обрабатываете код внутри оператора if. Если вы хотите, чтобы внутренний код запускался, когда mrf равен нулю, то вам нужно удалить NOT из оператора.