Foros del Web » Soporte técnico » Ofimática »

Evaluar formula en macro

Estas en el tema de Evaluar formula en macro en el foro de Ofimática en Foros del Web. Buenas tardes, sigo con mis dudas con las macros (ya queda menos!): El tema es que tengo una macro que se decide a copiar x ...
  #1 (permalink)  
Antiguo 10/12/2008, 10:57
 
Fecha de Ingreso: noviembre-2008
Mensajes: 37
Antigüedad: 15 años, 5 meses
Puntos: 0
Evaluar formula en macro

Buenas tardes,


sigo con mis dudas con las macros (ya queda menos!):

El tema es que tengo una macro que se decide a copiar x filas de una columna de una hoja de excel a otra (mismo fichero).

El caso es que hay veces que la celda origen està vacía (si ningun valor) y al copiarla a la celda destino la copia con el valor 0. Debido a que a veces la origen puede ser 0, tengo que diferenciar estos dos casos.

El caso es que para copiar de la celda origen a la destino, copio en la celda actual (hoja2) el valor que tiene la celda que me interesa de la hoja1. El codigo es este:

For z = 1 To 32
__tmp = "='Hoja1'!" + columna + CStr(z)
__if tmp = "" then
____ ActiveCell = ""
__else
____ActiveCell = "='Hoja1'!" + columna + CStr(z)
__endif
__ActiveCell.Offset(1, 0).Select
next z



Apunte: columna + CStr(z) es el equivalente a la celda origen, por ejemplo A1




En este caso, tmp siempre es "='Hoja1'!" + columna + CStr(z)
El caso es que me gustaria que tmp fuera la evaluación de "='Hoja1'!" + columna + CStr(z) es decir, el valor que hay en "='Hoja1'!" + columna + CStr(z) pero no la cadena en si, para luego poder evaluar si tmp es una cadena vacía o bien 0 y actuar en consecuencia.



Si estuviera sin macros en una hoja excel cualquiera, si la celda A1 está vacía, conseguiría mi objectivo poniendo en B1: SI(A1="";"";"no vacio"), lo que me daria "" en B1.

Espero que entiendan mi problemática.

Muchas gracias.
  #2 (permalink)  
Antiguo 11/12/2008, 05:04
 
Fecha de Ingreso: noviembre-2008
Mensajes: 37
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Evaluar formula en macro

Solucionado!

al final lo he conseguido así:

__For z = 1 To 32
____Sheets("Hoja1").Select
____Cells(z, j).Select
____If Cells(z, j).Value = "" Then
______Sheets("Hoja2").Select
______ActiveCell.Formula = ""
____Else
______Sheets("Hoja2").Select
______ActiveCell.Formula = "='Hoja1'!" + columna + CStr(z)
____End If
____ActiveCell.Offset(1, 0).Select
__Next z


Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:08.