Primero: Para sumar una determinada columna debes sumar desde el recordset no desde el datagrid. Es decir, tu en la base de datos tienes una tabla que se llama, (por ejemplo), caja y uno de sus campos se llama (por ejemplo), subtotal, entonces simplemente debes hacer un bucle que sume lo siguiente caja!subtotal.
*** ACLARACIONES Y PASOS PREVIOS ***
EJEMPLO (BASADO EN ACCESO CON DATAENVIRONMENT A ADO)
EN EL EJEMPLO AL DATAENVIRONMENT LO LLAMO 'dedatos' Y SUPONGO TENER EN LA BASE DE DATOS UNA TABLA LLAMADA 'caja' Y QUE EN DICHA TABLA HAY UN CAMPO LLAMADO 'subtotal'. EN EL DATA ENVIRONMENT RELACIONO LA TABLA LLAMADA CAJA CON UN COMANDO LLAMADO caja, ASI PARA ACCEDER A DICHO RECORDSET EL DATAENVIRONMENT LO LLAMA rscaja.
**********************************************
Dim i as Integer
Dim suma as Long
'Me desplazo al primer registro
rscaja!MoveFirst
'Recorro los registros sumando la columna subtotal
For i = 1 to deDatos.rscaja.RecordCount
suma = suma + rscaja!subtotal
rscaja.MoveNext
Next i
*** ACLARACIÓN ***
Vale aclarar que deberás comprobar que el recordset se encuentre abierto, que en el halla algún registro antes de empezar a sumar y otros pasos. Yo simplemente fui a lo concreto de tu duda, la parte de sumar.
**********************
Con respecto al tema del filtrado de las fechas debes utilzar la propiedad .Filter del recordset. De esta forma puedes utilizar operadores lógicos como AND OR LIKE y demás.
Ejemplo. rscaja.Filter = "fecha = LIKE */2006*"
Ese ejemplo te devolvería lo registros del año 2006.
Bueno espero que te sirva, y si algo no te funciona pido disculpas, ya que no lo codifiqué en el Visual Basic sino directamente acá, podría tener algún error. De todas formas mi idea no era hacer todo un software ejemplificativo sino simplemente orientarte por donde empezar.