Macro seleccionar rango con valor en las variables

Alguien me podría ayudar con lo siguiente por favor: pretendo hacer una macro que me seleccione un determinado rango, pero tomando los valores de las variables en la misma hoja de cálculo. Tengo la macro que realicé, pero no me funciona, la cual adjunto:

  Range("A" & Range("G1"):Range("D" & Range("H1").Select    With Selection.Interior         .Pattern = xlNone         .TintAndShade = 0         .PatternTintAndShade = 0     End With     Range("A2:D8").Select     Selection.ClearContents     Range("A2").Select End Sub   

1 respuesta

Respuesta
1

Entiendo que la primer instrucción trata de seleccionar columnas A:D según filas que se indican en otras celdas.

Entonces la sintaxis es así:

Range("A" & Range("G1") & ":D" & Range("H1")).Select 

¡Hola Elsa! Gracias por la respuesta. Un favor, la macro se para en la primera línea y no continua, me la pinta de amarillo. Lo de abajo, es lo que estoy pretendiendo hacer. El rango de la limpieza, la pienso modificar en cuanto pueda solucionar la primera línea de la macro. Te agradezco mucho la ayuda que me puedas proporcionar. Gracias y buena tarde Elsa.

Range("A" & Range("G1") & ":D" & Range("H1")).Select 
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("A2:D8").Select
Selection.ClearContents
Range("A2").Select
End Sub

Controlá estos aspectos:

- Qué datos contienen las celdas G1 y H1... ¿corresponden a nros de filas?

- Seguro que se puede seleccionar el rango o está protegido.

- Si se detiene y te marca de amarillo, antes te envió un mensaje ... captura la pantalla y deja aquí una imagen o el texto para saber de qué mensaje se trata antes de entrar a Depurar.

Sdos!

La celda G1 tiene valor 2, la H1 tiene valor 8.

Esto es lo que sale antes de ver lo amarillo:

Microsof Visual Basic

Se ha producido el error '438' en tiempo de ejecución.

El objeto no admite esta propiedad o método.

Finalizar       Depurar     Ayuda.

No pude pegar la pantalla aquí, pero esto es lo que sale, después doy click en Depurar y se ve la primera linea en amarillo. Agradezco la ayuda. Buena tarde Elsa.

Si corresponden a números de fila.

Adjunto imagen de las instrucciones y del resultado. Como podrás observar es correcto y sin error.

Pero como tus instrucciones son 'parte' de otro código no se si las celdas se encuentran en la hoja activa... o quizás estés en otra hoja. Tampoco sé el estado de la hoja: protegida o no, es una tabla, en fin no tengo idea, por lo tanto si está bien escrita esa línea y te sigue dando problemas enviame tu hoja a mi correo (aparecen en mi sitio que dejo al pie) o dejame un correo tuyo para pedírtela.

Buenas tardes Elsa. Si me sigue dando problemas. Mi correo es: [email protected]

Te agradezco mucho tu ayuda y tu tiempo. Gracias y buena tarde.

'... Si corresponden a números de fila...'

Pero estimado, mira el contenido de las celdas ... ¿son números de fila o son referencias?

En G1 dice: A2 ... y solo debiera ser 2 si se trata de número de fila.

Y otro detalle: para que la misma macro te sirva para cualquier rango, donde dice:

Range("A2:D8").Select
Selection.ClearContents
Range("A2").Select

También debes utilizar las variables, quedando así la macro 2 completa:

Sub Macro2()
'
' Macro2 Macro
    Range("A" & Range("G1") & ":D" & Range("H1")).Select 
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("A" & Range("G1") & ":D" & Range("H1")).ClearContents
    Range("A" & Range("G1")).Select
End Sub

Sdos!

Luego de haber mencionado varios veces que en celdas G1:H1 habría 'números de filas' me encuentro con que tu hoja tiene referencias, no números:

Y como además esas referencias las obtenés con fórmulas, te paso las correctas para que no incluyan la letra:

Para la col H sería así:  =CELDA("fila";O9)-1

Te estoy enviando el libro con las pruebas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas