if isnull(RS_24.fields("valor_tool")) or RS_24.fields("valor_tool")="" then
el error puede deberse a tu condiciòn doble, es decir, preguntas si es null o si esta en blanco, cuando tu rutina llega a esa pregunta con un valor para RS_24.fields("valor_tool") de NULL la segunda condiciòn va a caer porque estas comparando un valor NULL con una cadena vacìa, el que hayas hecho una pregunta separada por el
OR no indica que si una se cumple la otra no se evalùa, siempre se van a evaluar todas las condiciones, indistintamente como las enlaces (OR o AND)
Ahì tienes dos opciones para corregirlo.
La primera de ellas es incluyendo en tu WHERE la condicion que RS_24.fields("valor_tool") no sea NULL
La segunda haciendo dos if de pregunta, el primero como NULL y el segundo como cadena vacìa, pero por separado con un OR sino independiente una de otra (quizà la de cadena vacìa dentro del else del NULL)
particularmente yo me inclinarìa por la primera, incluir la condiciòn en el WHERE del query.
un dato adicional, no hagas "SELECT * FROM ", te recomiendo enumerar cada uno de los campos de la tabla que vas a utilizar, el motivo es porque estas afectando directamente al performance de tu programa, el motor de base de datos interpreta de una manera un SELECT * y de otra muy diferente cuando mencionas campo por campo y ùnicamente los que utilizaras, recuerda que el resultado lo lleva a memoria y ahi estas almacenando informaciòn de longitud "X" que no vas a utilizar, estas demandando recursos sin motivos y por ende hace mas lento tu aplicativo, ademàs que para el motor de base de datos es mas simple para un tema de estadìsticas de uso y aplicaciòn de indices.
espero haberte ayudado.