El objeto Range se refiere a una celda específica , una celda activa, un conjunto de celdas (separadas o juntas), o una fila entera o una columna.
Es decir, podemos aplicarla para seleccionar, dichas celdas, o bien para darles algún valor, o aplicarles alguna fórmula.
Primero observemos las formas de poder seleccionarlas :
Range("A1").select 'selecciona la celda A1 en la hoja activa. Esto es porque no especificamos el "Worksheets"
Range("A1: B10").select 'selecciona todo el rango desde A1 hasta B10 en la hoja activa.
Worksheets(3).Range("A1").select 'selecciona la celda A1 en la hoja 3
Range("A1,A3,C5").select 'selecciona celdas separadas en la hoja activa.
Range("Ingresos").select ' selecciona la celda o conjunto de celdas que tengan como nombre "ingresos" en la hoja activa
Ejemplo de Range("Ingresos").select
(Para mayor visualización de la imagen, hacer click en la misma)
Otra forma de referirse a específicas celdas en un rango de celdas es definir el rango de celda como una variable, y después seleccionar ciertas celdas dentro de dicho rango
Por ejemplo :
Dim mirango as range
Set mirango = Range("B1:B11")
mirango.range("A1").select
mirango.range("B1").select ' Es importante saber que al seleccionar una celda dentro del rango B1 : B11, la nominación A1 corresponde a la celda que se ubica en la esquina superior izquierda, en este caso B1, y a partir de esa celda se ubican las demás.
Ahora veamos como darle valor a un rango:
Si se quiere que aparezca un valor como un número simplemente se hace lo siguiente :
Range("A1") = 35 'Hace que el número 35 aparezca en el la celda A1, en la hoja activa
Worksheets(3).Range("A1:B10").value = 1 'Hace que el valor de todas las celdas del rango sean 1, en la hoja 3.
Notes que se puede usar ".value" o no. El resultado será el mismo.
Otra forma de utilizar el objeto range es asignarle una fórmula :
Worksheets(1).Range("A1").Formula = Int(10 * Rnd()) ' Esta propiedad devuelve el resultado de la fórmula (toma la parte entera de un numero aleatorio entre 0 y 1 multiplicado por 10) y asigna dicho valor a la celda A1 y en la hoja 1
Una importante propiedad es OFFSET. Esta propiedad define a la celda activa con el valor de (0,0) y al desplazarse una cada fila o columna se tiene que adicionar 1 o restar -1 a la posición inicial. El primer caracter se refiere a las filas y el segundo a las columnas.
Por ejemplo :
Activecell.offset(1,0) = 35 'Si la posición inicial era la celda D5, entonces, esta propiedad asigna el valor de 35 a la celda D6, ya que se desplaza una fila hacia abajo
(Para mayor visualización de la imagen, hacer click en la misma)
Entonces, se puede observar que el objeto range, es muy útil para asignar valores y seleccionar celdas, grupo de celdas, filas o columnas, ya se en una hoja específica o en la hoja actual.
Elaborado por: Jorge Ninaja
31/05/2014 a las 1:23 pm
Como puedo hacer para mejorar una macro,que realice una operación sencilla, y que mientras se incremente la Base de datos, la macro funcione para los valores nuevos.
/Macro para una determinado rango/
Sub Macro3()
'
' Macro3 Macro
'
'
Range("D3").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
Range("D3").Select
Selection.AutoFill Destination:=Range("D3:D7")
Range("D3:D7").Select
End Sub
Gracias
31/05/2014 a las 3:47 pm
Detallo un ejemplo sobre lo mencionado, para obtener un rango variable.
Sub Prueba()
' Prueba Macro
'
'
Range("B2").Select
With Range("B2", [B2].End(xlDown))
.Offset(, 2).Formula = "=VLOOKUP(A2,$J$2:$K$8,2,0)"
End With
End Sub
15/08/2014 a las 1:25 pm
Hola primero que nada excelente aporta y página felicidades, segundo quisiera pedirte tu ayuda, lo que pasa es que tengo una macro que crea datos en una nueva sheet pero quisiera pegar datos de la ultima sheet que se crea porque la corro varias veces, es decir que corro la macro y creo una ultima sheet con el valor de 5,6,7 y quisiera ver reflejados esos valores en mi hoja 1, y el problema es que no puedo copiar del nombre de la hoja porque quiero que siempre sea de la última que creo al correr la primera macro espero me puedas ayudar gracias!
26/04/2015 a las 6:50 am
Hola buen día de antemano felicitaciones por las publicaciones que son de gran ayuda, hace un tiempo estoy leyendo las publicaciones de este Block, adicionalmente realizo algunos que otros algoritmos que son de interés para mi trabajo y hasta dónde mi nivel de conocimiento del lenguaje me lo permite. Actualmente elaboro un código para accesar con Usuario y Contraseña para un equipo de trabajo de 25 personas que lidero en la compañía en la cual laboro desde hace un tiempo. El código base lo vi en un block y he querido hacer algunas modificaciones previendo en que el rango se encuebtre en una hoja distinta o aparte y que además pueda surgir la necesidad de que sean por ejemplo hasta 100 Usuarios. He usado el objeto WorksheetFunction e intentado varias formas para el código pero siempre me sale el aviso de que el usuario no existe ó en otras ocasiones que se ha producido el eeror 13 por tiempo de ejecución. Agradezco tu ayuda y en caso de obtenerla puedo enviar el código para que pueda ser revisado y me indiques por favor la solución y el ó los errores cometidos con una breve explicación para no solo conseguir la solución como tal si no que tan bien para entender sobre el uso de estas aplicaciones u objetos.
25/10/2015 a las 3:06 pm
hice un formulario para ingresar datos me funcione todo pero cuando filtro un ejemplo cuando filtro el lote g23 para introducir la cantidad de metros cúbicos
la celda activa se queda en el espacio de lote a10 ya especifique el rango si me pudieran ayudar este es el código que utilizo
F = ActiveCell.Address
ActiveCell.Value = TextBox2.Text
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = TextBox5.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = TextBox6.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = TextBox7.Text
ActiveCell.Offset(1, -4).Select
ActiveWorkbook.Save
TextBox2.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox2.SetFocus
si me pudieran ayudar
13/11/2015 a las 1:10 pm
Buen dia sres. tengo una pregunta espero puedan ayudarme, gracias de antemano
La consulta es la siguiente:
obtengo el valor de celda activa de esta manera
Range("R1").Value = ActiveCell.Value
lo que ahora quiero hacer es que R1 sea igual al valor de la primera celda de la fila activa...
Muchas gracias
05/10/2016 a las 7:41 am
Como podria nombrar rangos? de acuerdo a una variable.
Es decir
x=2
range("B2,Bx").value = "por encima"
x+1
Es un ejemplo no muy bueno pero la pregunta es puede realizarse este tipo de declaraciones en el codigo fuente. Ya lo eh intentado pero no puedo realizar esto a no ser que utilice Cells.
de antemano gracias por los comentarios
21/10/2016 a las 10:46 am
x=2
range(“B2,B” & x ).value = “por encima”
x=x+1
24/11/2016 a las 2:02 pm
Como podria hacer una Macro para multiplicar lo seleccionado con el mouse.
Lo que quiero hacer es una casilla donde venga el porcentaje que quiero multiplicar, después seleccionar con el mouse donde quiero que ese porcentaje multiplique los valores y apretar un boton para que se aplique ese cambio
Espero me puedan ayudar o decirme si es posible
24/08/2017 a las 2:02 am
Hola, estoy haciendo una consultó en un formulario, pero como hago para que me busque en todos los registros, ya que estoy usando el
To 1000
05/02/2022 a las 2:16 pm
Hola perdon tengo una duda como podria asignar en el rango las columnas despues de Z ? digamos AA AB AC AD, lo estoy poniendo asi literal pero me marca error