En Excel VBA, Range("A1").Value
debe devolver el valor subyacente del rango A1 en la hoja de trabajo. Pero obtengo un valor diferente si la celda tiene el formato de Contabilidad.Excel VBA: obtener el valor de la celda, independientemente del formato de la celda
¿Cómo obtengo el valor subyacente real de la celda?
Hoja de trabajo
hacer un nuevo documento, introduzca los siguientes valores en las células:
- A1: 0,00001
- A2: = A1
- A3: = A1 = A2
Como era de esperar, A3 resulta en TRUE
. Ahora cambie el formato de A2 a Contabilidad, usando 2 decimales. A2 ahora lee $ 0.00
, pero el valor subyacente sigue siendo 0.00001
, por lo que A3 sigue siendo TRUE
.
VBA
Haga un nuevo módulo y añadir en la siguiente función:
Function f(addr As String)
f = Range(addr).Value
End Function
Como se puede ver, esto sólo se pone el valor de un rango utilizando el método del objeto Range
Value
.
Hoja de
Volver a la hoja de trabajo. Introduzca los valores siguientes:
- B1: = f ("A1")
- B2: = f ("A2")
- B3: = B1 = B2
A1
y A2
tienen el mismo valor subyacente, pero B1
y B2
no, aunque ambos se calculan utilizando el método Value
de A1
y A2
.
La expresión en A3
() está accediendo al valor subyacente real de A1
y A2
. ¿Cómo accedo a estos valores en VBA?
Estoy usando Excel 2010, y 'B3' definitivamente está apareciendo' FALSE'. – Joe
Supongo que no recalca si solo cambia el formato ... –