Estoy intentando, (sin conseguirlo...) introducir en VBA una instruccion que me permita seleccionar un area que de antemano desconozco el numero de linea que le corresponderá... y por eso utilizo una variable...
Es decir, genero un listado, y quiero que en determinado momento cinco celdas de esa fila, tengan, por ejemplo el tipo de letra en negrita (bold).
No puedo utilizar la instruccion Range de la manera tradicional, como por ejemplo
Range("A1:E1").Select
With Selection.Font
.Size = 12
.Bold = True
End With
porque eso supondría que esas celdas son de la A a la E de la fila 1 (Range("A1:E1")
En mi caso, a lo largo del listado, a veces será la línea 1 y otras veces será la fila 17, etc. por lo que llevo una variable (nLinea) que va contando las lineas utilizadas en cada momento.
Llegado un momento, por ejemplo, cuando nLinea lleva el número 56 (nLinea = 56) entonces quiero que las celdas, desde la A hasta la E de esa fila 56 aparezcan en negrita pero no toda la fila 56.
Como se consigue hacer una seleccion como si fuera Range("Desde A nLinea : hasta E nLinea")...
Parece sencillo... pero no lo consigo...
En vez de referirte a las celdas como A3 utiliza Cells, por ejemplo
Cells(3,1)
así puedes emplear directamente una variable para referirte a la fila o columna que necesites
Cells(tufila,tucolumna)
------
Ya sé Excel, pero necesito más.
Gracias Paco una vez mas por tu aportacion.
Pero tal como lo entiendo, no me resuelve la situacion.
Efectivamente puedo dirigirme a una celda de la forma que tu me indicas, y cuando necesito dirigirme a una celda o seleccionar una celda, lo utilizo de esa manera con frecuencia.
Pero en el caso presente quiero seleccionar cinco celdas seguidas, desde la columna A hasta la columna E de una linea cuyo numero esta almacenado en la variable nLinea.
La funcion Range no parece que me permite utilizar variables, y no se si hay alguna otra manera de conseguirlo.
puedes definir un rango mediante dos celdas, la esquina superior izquierda y la esquina inferior derecha, por ejemplo:
Range(cells(1,1),cells(nLinea,5))
------
Ya sé Excel, pero necesito más.
De nuevo, amigo Paco, gracias.
Veras. Despues de tu primera respùesta, trate de hacer uso de la idea que me ofrecias, y como tantas otras veces, "los detalles" me hicieron tropezar.
En este caso, "el detalle".
Lo hice así:
Range(cells(nLinea,1):cells(nLinea,5))
y claro... me daba error...
Los "dos puntos" de la sintaxis "habitual" del Range, se convierten ahora en "coma"... y ahi estaba el detalle...
Aplicado ahora con la coma... todo funciona.
Muchas gracias.
Estoy seguro de que tus aclaraciones en estos pequeños detalles... ayudan un monton...
También lo puedes resolver con Range
Como sabes, el argumento de Range va entre comillas. Eso significa que es un string. Así que trátalo como tal.
Si sabes las letras y no la fila, puedes hacer lo siguiente:
Range("A" & nLinea & ":E" & nLinea).Select
Más sencillo puede ser crear una variable de texto
Dim rango as string
y luego asignar a esta el valor de arriba:
rango = "A" & nLinea & ":E" & nLinea
Range (rango).Select
Saludos
De nuevo, amigo Cron, te has ganado mi agradecimiento.
Después de la solución de Paco, llega la tuya, igualmente sencilla y efectiva.
La he probado, y desde hoy, tus sugerencias, enriquecen mis pequeños conocimientos acumulados.
Da gusto tener preguntas... por el placer de encontrarse con las respuestas de los amigos.
Gracias Cron, y seguro que "hasta la próxima"...
Es sencillo, no se bien tu codigo, pero a ver si te das una idea
te puse 2 variables desde y hasta que podrias tomar esos valores de donde sea
desde = 10
hasta = 20
Range("A" & desde & ":E" & hasta).Select
[comentario movido a tema nuevo en el foro http://www.necesitomas.com/sumar-filas-precedente-x-filas-mas-o-menos]