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

VBA - guardar columna para usar en una formula

Estas en el tema de VBA - guardar columna para usar en una formula en el foro de Ofimática en Foros del Web. Buenas, Tengo el siguiente problema, quiero guardar parte de una formula en diferentes variables, por si en un futuro el dato cambiase de columna, no ...
  #1 (permalink)  
Antiguo 09/07/2014, 05:13
Avatar de Seskin  
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 29
Antigüedad: 10 años, 7 meses
Puntos: 0
VBA - guardar columna para usar en una formula

Buenas,

Tengo el siguiente problema, quiero guardar parte de una formula en diferentes variables, por si en un futuro el dato cambiase de columna, no tener que cambiar dicho dato en la sucesivas fórmulas, el problema es que no consigo que funcione, tengo lo siguiente:

Código vb:
Ver original
  1. Sub formulaVba()
  2.     '
  3.    Dim datoMes As Variant
  4.     Dim columnaRamo As Variant
  5.     Dim intervencionP1 As Variant
  6.     '
  7.    datoMes = Worksheets("DATOS_TABLA").Range("AH:AH")
  8.     columnaRamo = Worksheets("DATOS_TABLA").Range("AT:AT")
  9.     intervencionP1 = Worksheets("DATOS_TABLA").Range("AX:AX")
  10.     'intervencionP1 = "DATOS_TABLA!AH:AH"
  11.    '
  12.    Dim filtroMes As String
  13.     Dim filtroRamoAtencion As String
  14.     '
  15.    filtroRamoAtencion = "=SI(ESBLANCO(filtroRamo);PROMEDIO.SI.CONJUNTO(intervencionP1;DATOS_TABLA!AH:AH;filtroMes);PROMEDIO.SI.CONJUNTO(intervencionP1;DATOS_TABLA!AH:AH;filtroMes;DATOS_TABLA!AT:AT;filtroRamo))"
  16.     filtroMes = Worksheets("CONSULTAS_TABLA").Range("filtroMes")
  17.     '
  18.    If filtroMes = "" Then
  19.     MsgBox "Es necesario indicar en el campo Mes el criterio de selección", vbInformation, Application.Name
  20.     Else
  21.     Worksheets("CONSULTAS_TABLA").Range("F20").FormulaLocal = filtroRamoAtencion
  22.     End If
  23.    
  24.     '
  25. End Sub

Cuando voy a la celda para comprobar el dato aparece el error #¿NOMBRE? y cuando comprueba la fórmula que se presenta en la celda veo que no está pasando la columna sino el nombre de la variable:

=SI(ESBLANCO(filtroRamo);PROMEDIO.SI.CONJUNTO(intervencionP1;DATOS_TABLA!AH:AH;filtroMes);PROMEDIO.SI.CONJUNTO (intervencionP1;DATOS_TABLA!AH:AH;filtroMes;DATOS_TABLA!AT:AT;fil troRamo))

Si cambio intervencionP1 por la dirección de la columna, es decir, sin usar variable la fórmula funciona.

¿Alguna sugerencia?
  #2 (permalink)  
Antiguo 09/07/2014, 11:17
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.946
Antigüedad: 11 años, 1 mes
Puntos: 2183
Respuesta: VBA - guardar columna para usar en una formula

Necesitas concatenar:

Código vb:
Ver original
  1. filtroRamoAtencion = "=SI(ESBLANCO(filtroRamo);PROMEDIO.SI.CONJUNTO(" & intervencionP1 & ";Aquí más texto...."
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 09/07/2014, 12:59
Avatar de Seskin  
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 29
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: VBA - guardar columna para usar en una formula

Hola Triby, gracias por contestar,

Se me olvidó comentar que si concateno me da error 1004 de ejecución, por lo que tampoco puedo, ¿alguna sugerencia?

Gracias!
  #4 (permalink)  
Antiguo 09/07/2014, 16:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.946
Antigüedad: 11 años, 1 mes
Puntos: 2183
Respuesta: VBA - guardar columna para usar en una formula

Qué parámetro espera la función CONJUNTO?

Algo me dice que debería ser una cadena que le indice un rango de celdas y no el rango como tal. Prueba primero a hacer la fórmula sin variables y, cuando funcione, entonces haces los reemplazos necesarios.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 10/07/2014, 00:10
Avatar de Seskin  
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 29
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: VBA - guardar columna para usar en una formula

La fórmula funciona perfectamente sin variables, es cuando los incluyo cuando deja de funcionar.
  #6 (permalink)  
Antiguo 10/07/2014, 01:39
 
Fecha de Ingreso: julio-2006
Ubicación: Madrid
Mensajes: 943
Antigüedad: 13 años, 1 mes
Puntos: 56
Respuesta: VBA - guardar columna para usar en una formula

Hola,

Pienso que va por donde dice Triby,

En la variable intervencionP1, ya que es variant, estás almacenando toda la tabla, es decir todas las filas y columnas con sus valores, ya que en la sentencia de asignación no indicas propiedad y por tanto VBA asume Value.

En la fórmula donde concatenas la variable lo que se espera es el rango, no los valores.

Pienso que si añades .Address a la asignación lo arreglarías:

Cita:
intervencionP1 = Worksheets("DATOS_TABLA").Range("AX:AX").Address
Saludos

Etiquetas: columna, formula, usar, vba
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 10:37.