Sunteți pe pagina 1din 14

MACROS EXCEL

'Hacer referencia a todas las hojas del libro activo


ActiveWorkbook.Sheets.Select

MASTERCARD PAYONEER

'Hacer referencia a la hoja2


Sheets("Hoja2").Select
'Hacer referencia a la hoja que se encuentra en la posicin 2 sin importar el nombre
Sheets(2).Select
'Hacer referencia a la hoja de la pestaa anterior a la activa
ActiveSheet.Previous.Select
'Hacer referencia a la hoja de la pestaa posterior a la activa
ActiveSheet.Next.Select
'Hacer referencia a una celda de otro libro
Application.Goto Workbooks("Libro1.xlsm").Sheets("Sheet1").Cells(7, 6)
'Hacer referencia a una hoja guardando en una variable el nombre de la hoja activa,
previa a la activa y posterior a la activa
Dim sheetnom As String
'Se guarda el nombre de la hoja activa, previa a la activa y posterior a la activa
sheetnom = ActiveSheet.Name
sheetnom = ActiveSheet.Previous.Name
sheetnom = ActiveSheet.Next.Name
'Hacer referencia a una hoja guardando en una variable el nmero de hoja, actual,
previa a la actual y siguiente
Dim sheetnumb As Byte
sheetnumb = ActiveSheet.Index
sheetnumb = ActiveSheet.Previous.Index
sheetnumb = ActiveSheet.Next.Index
'Selecciona la celda b8 de la hoja 1
Sheets("hoja1").Select
Range("C8").Select

'Hacer referencia de otra forma a la misma celda c8


Cells(8, 3).Select
'Tambin podemos hacer referencia a la celda C8 pero de la hoja 2
Sheets("hoja2").Select
Cells(8, 3).Select
'Se puede seleccionar la celda c8 de la hoja activa mediante
ActiveSheet.Cells(8, 3).Select
'Selecciona el rango continuo c2 a d10
Range("C2:D10").Select
'Selecciona todas las celdas de la hoja
Cells.Select
'Copiar todas las celdas de la hoja1 a la hoja2
Sheets("hoja1").Cells.Copy Destination:=Sheets("hoja1").Range("A1")
'Referencia de otra forma el rango c2:d10
Range(Cells(2, 3), Cells(10, 4)).Select
'Referenciar de otra forma el rango c2:c10
Range("C2", "D10").Select
'Seleccionar toda la columna B
Range("A:A").Select
'Seleccionar todas las columnas desde la columna A hasta la columna C
Range("A:C").Select
'Seleccionar toda la fila 4
Range("4:4").Select
'Seleccionar todas las filas desde la fila 1 hasta la fila 5
Range("1:5").Select
'Fijarse porque no funciona
'Selecciona el rango discontinuo c5 a g5; a6; f3 a h3 y c24
Range("C5:G5,A6,F3:H3,C24").Select
'Seleccionar la unin de dos o ms rangos especificados, similar a seleccionar y tener
apretado tecla ctrl

Application.Union(Range("A2: C5"), Range("F6: H12")).Select


'Seleccionar dos ms columnas de columnas no contiguas de longitud variable
Set a = Range("A1", Range("A1").End(xlDown))
Set b = Range("E1", Range("E1").End(xlDown))
Union(a, b).Select
'Seleccionar un rango mayor al anteriormente seleccionado, el rango se ampla a 10
filas, 4 columnas
Range("D10").Select
Selection.Resize(10, 4).Select
'Seleccionar un rango mayor al anteriormente seleccionado, estableciendo
la cantidad de fila y columnas adicionales a seleccionar
Range("C2:D10").Select
Selection.Resize(Selection.Rows.Count + 5, Selection.Columns.Count + 4).Select
'Seleccionar desde la celda E2 hasta la ltima celda con datos hacia abajo, similar a
ctrl + shift + flecha hacia abajo
Range("E2", Range("E2").End(xlDown)).Select
'Otra forma de seleccionar
Range("E2:" & Range("E2").End(xlDown).Address).Select
'Seleccionar desde la celda E2 hasta la ltima celda con datos hacia la derecha,
similar a ctrl + shift + flecha hacia la derecha
Range("E2", Range("E2").End(xlToRight)).Select
'Otra forma de seleccionar
Range("E2:" & Range("E2").End(xlToRight).Address).Select
'Seleccionar desde la celda E2 hasta la ltima celda con datos hacia la izquierda,
similar a ctrl + shift + flecha hacia la izquierda
Range("E2", Range("E2").End(xlToLeft)).Select
'Otra forma de seleccionar
Range("E2:" & Range("E2").End(xlToLeft).Address).Select
'Seleccionar desde la celda E2 hasta la primer celda con datos desde abajo, similar a
ctrl + shift + flecha hacia arrib a
Range("E2", Range("E1048576").End(xlUp)).Select
'Otra forma de seleccionar
Range("E2:" & Range("E1048576").End(xlUp).Address).Select
'Seleccionar mediante variables y cells un rango hacia la derecha
Sheets("ApiladoVertical").Range((Cells(filaAV, 1)), Range((Cells(filaAV, 1)),
Cells(filaAV, 1)).End(xlToRight)).Select

'Seleccionar la ltima celda con datos hacia abajo, similar a ctrl + flecha hacia abajo
Range("E2").End(xlDown).Select
'Seleccionar la ltima celda con datos hacia la derecha, similar a ctrl + flecha hacia la
derecha
Range("E2").End(xlToRight).Select
'Seleccionar la ltima celda con datos hacia la izquierda, similar a ctrl + flecha hacia la
izquierda
Range("E2").End(xlToLeft).Select
'Seleccionar desde la celda E1048576 la primer celda con datos hacia arriba, similar a
ctrl + flecha hacia arrib a
Range("E1048576").End(xlUp).Select
'Hacer referencia a la ultima celda sin datos
ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select
'Hacer referencia a la ultima columna sin datos
ActiveSheet.Range("a1").End(xlDown).Offset(0, 1).Select
'Hacer referencia a la direccin de la ltima celda hacia abajo con datos
Dim addr As String
Range("E2").End(xlDown).Select
'direccin en forma absoluta (Ej: $E$50)
addr = Selection.Cells(1, 1).Address
'direccin en forma relativa (Ej: B50)
addr = Selection.Cells(1, 1).Address(False, False)
'Hacer referencia a la direccin de la ltima celda hacia la derecha con datos
Dim addrc As String
Range("E2").End(xlToRight).Select
'direccin en forma absoluta (Ej: $E$50)
addrc = Selection.Cells(1, 1).Address
'direccin en forma relativa (Ej: B50)
addrc = Selection.Cells(1, 1).Address(False, False)

'Referenciar al numero de la ultima fila con datos continuos


Dim uf As String
Range("E2").End(xlDown).Select
uf = ActiveCell.Row
'Referenciar al numero de la ultima columna con datos continuos
Dim uc As String
Range("E2").End(xlToRight).Select
uc = ActiveCell.Column

'Hacer referencia a la ultima fila con datos


uf = Sheets("hoja2").Range("A" & Rows.Count).End(xlUp).Row
'Referenciar a la ultima fila con datos de la columna A de otra forma
uf = Cells(1048576, 1).End(xlUp).Row
'Referenciar a la ultima columna con datos de la fila 1 de otra forma
uc = Cells(1, 16384).End(xlToLeft).Column
'Selecciona y combina las celdas selecciondas
Range("B1:E1").Select
Selection.Merge
'Selecciona y descombina las celdas selecciondas
Range("B1:E1").Select
Selection.UnMerge
'Selecciona un rango donde se encuentra la celda activa
Range("B2").CurrentRegion.Select
'Otra forma de selecciona un rango donde se encuentra la celda activa
ActiveSheet.Range("e2",
ActiveSheet.Range("e2").End(xlDown).End(xlToRight)).Select
'Otra forma de selecciona un rango donde se encuentra la celda activa
ActiveSheet.Range("e2:" &
ActiveSheet.Range("e2").End(xlDown).End(xlToRight).Address).Select
'Selecciona un rango donde se encuentra la celda activa,pero habiendo una fila sin
datos en el rango
lastCol = ActiveSheet.Range("E2").End(xlToRight).Column
lastRow = ActiveSheet.Cells(E1048576, lastCol).End(xlUp).Row
ActiveSheet.Range("E2", ActiveSheet.Cells(lastRow, lastCol)).Select
'Selecciona la ltima celda con datos independientemente si existen celdas vacias en
medio, es decir
'selecciona la ultima celda del rango formado entre la ultima columna con datos y la
ultima fila con datos
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
'Selecciona la ltima celda con datos independientemente si existen celdas vacias en
medio, es decir
Dim addr1 As String

ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
Selection.End(xlToLeft).Select
addr1 = Selection.Cells(1, 1).Address(False, False)
'Hacer referencia a la ultima columna sin datos
'Selecciona la ltima sin datos independientemente si existen celdas vacias en medio,
es decir
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
Selection.End(xlToLeft).Offset(1, 0).Select
'Hacer referencia a todo el rango con datos independientemente si existen celdas
vacias en medio
Dim addr2 As String
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
addr2 = Selection.Cells(1, 1).Address(False, False)
Range("A1:" & addr2).Select
'Hacer referencia y seleccionar todo el rango con datos independientemente si existen
celdas vacias en medio y dar nombre al rango
'Es igual a ir al menu formulas, asignar nombre y luego definir nombre.
Dim addr3 As String
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
addr3 = Selection.Cells(1, 1).Address(False, False)
Range("A1:" & addr3).Select
ActiveWorkbook.Names.Add Name:="myrange", RefersTo:="=Hoja2!" &
Selection.Address
Range("myrange").Select
'Hacer referencia a la celda con un determinado valor en todo el rango que contenga
datos
Dim addrt, addrsel As String
Dim cell As Range
Dim searchvalue As Integer
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
addrt = Selection.Cells(1, 1).Address(False, False)
Range("A1:" & addrt).Select
searchvalue = 15
For Each cell In Selection
If cell = searchvalue Then addrsel = cell.Address(False, False)
Next cell
Range(addrsel).Select
addrt = Selection.Address(False, False)

'Seleccionar un rango usando una variable que determina el rango


Dim Ran1 As String
Ran1 = "B5:C18"
Range(Ran1).Select
'Selecciona la celda mediante una variable que obtiene su valor de la celda B5
Dim file As String
file = Range("B5").Value
ActiveSheet.Select
Range("B" & file).Select
'Selecciona la celda A2 mediante una variable cuyo valor es dado
Dim file1 As Integer
file1 = 2
Range("A" & file1).Select
'Seleccionar un rango cuya ltima fila est dada por el valor de una celda
Dim filfree As Integer
filfree = Range("C1").Value
Range("A1" & ":E" & filfree).Select
'Seleccionar un rango cuya ltima columna est dada por el valor de una celda
Dim colfree As Integer
colfree = Range("A28").Value
Range(Cells(3, 2), Cells(5, colfree)).Select
'Seleccionar un rango cuya ltima columna est dada por el valor de la celdaactual
Dim colfree1 As Integer
colfree1 = ActiveCell.Column
Range("B2" & ":E" & colfree1).Select
'Referenciar en forma relativa a celdas es decir a cierta distancia de la celda activa, en
otras palabras a tantas filas y tantas columnas de la celda actual.
'Selecciona desde A1 8 filas hacia abajo y 15 columnas hacia la derecha
Sheets("hoja2").Range("A1").Offset(8, 15).Select
'Selecciona a 3 filas anteriores y 1 columna hacia la izquierda de la celda actual
ActiveSheet.Range("h10").Offset(-3, -1).Select
'Selecciona desde la celda activa 4 filas hacia abajo y 2 columnas hacia la derecha
ActiveCell.Offset(4, 2).Select
'Selecciona a 3 filas anteriores y 2 columna hacia la izquierda de la celda actual

ActiveCell.Offset(-3, -2).Select
'Seleccionar celdas en forma relativa que no sea la celda actual
ActiveSheet.Range("C7").Offset(5, 4).Select
'Tambin se puede usar
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
'Seleccionar un rango especificado, luego desplazar la seleccion en forma relativo y
cambiar el tamao de la seleccin
Range("C2:E5").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, Selection.Columns.Count +
1).Select
'Cuenta el nmero de filas con datos continuos
Dim nfil As Integer
Range("E2", Range("E2").End(xlDown)).Select
nfil = Selection.Rows.Count
'Cuenta el nmero de columnas con datos continuos
Dim ncol As Integer
Range("E2", Range("E2").End(xlToRight)).Select
nrocol = Selection.Columns.Count
'Cuenta la cantidad de objetos celdas en un rango
Dim nceldas As Integer
Range("E2").CurrentRegion.Select
nceldas = Selection.Cells.Count
'Seleccionar la interseccin de dos o ms rangos, un rango debe estar intersectado
con el otro sino da error
Application.Intersect(Range("A2:C5"), Range("B2:C4")).Select

http://www.programarexcel.com/2013/06/seleccionar-o-hacer-referencia-celdaso.html

El objeto range
12/02/2013 byFernandoSantos | 3 Comments

El objeto Range se refiere a una celda especfica , 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 algn valor, o aplicarles alguna frmula.
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
Range(A1,A3,C5).select

selecciona la celda A1 en la hoja 3


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

Otra forma de referirse a especficas celdas en un rango de celdas es definir


el rango de celda como una variable, y despus 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 nominacin 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 dems.
Ahora veamos como darle valor a un rango:
Si se quiere que aparezca un valor como un nmero simplemente se hace lo
siguiente :
Range(A1) = 35

Hace que el nmero 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 frmula :
Worksheets(1).Range(A1).Formula = Int(10 * Rnd())

Esta propiedad

devuelve el resultado de la frmula (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 posicin inicial. El primer caracter se
refiere a las filas y el segundo a las columnas.
Por ejemplo :
Activecell.offset(1,0) = 35

Si la posicin 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

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 especifica o en la hoja actual
http://www.excel-avanzado.com/8452/el-objeto-range.html

Trabajando con Libros


En esta seccin aparecern algunas de las instrucciones 'bsicas' para ser utilizadas conLIBROS. Una vez
copiada en el Editor, colocar el cursor sobre la palabra en negrita y presionar F1 para acceder a la Ayuda
Excel. All se encontrarn ms explicaciones y ejemplos para cada instruccin. (VER)
Nota: Al inicio de esta seccin Macros hemos visto las distintas maneras de hacer referencia a Libros, Hojas
y Rangos o celdas. A partir de aqu usar solo el objeto activo considerando que puede usarse algunas de las
otras expresiones ya vistas con anterioridad.

1-Abrir un segundo libro:


Workbooks.Open "C:\Mis docu\Libro1.xlsb"
' o tambin: Application.Workbooks.Open "C:\.....\Libro1.xlsb"
Nota: Si el nombre se encuentra en una varible NO lleva comillas
Ej. 1: la variable 'libro2' contiene el nombre y la extensin.
Workbooks.Open ThisWorkBook.Path & "\" & libro2
Ej. 2: la variable 'libro2' contiene solo el nombre.
Workbooks.Open ThisWorkBook.Path & "\" & libro2 & ".xlsm"

2-Activar un segundo libro:


Workbooks("LibroOriginal.xlsm").Activate
'o tambin: Workbooks(1).Activate , en este caso es el 1er libro abierto.
IMPORTANTE: Al abrir un libro, ste pasa a ser el libro activo. Por lo tanto no es necesario activarlo
nuevamente.

3-Cerrar un libro
Ej. 1: sin guardar cambios:
Workbooks("Libro1.xls").Close False
'o tambin: ActiveWorkbook.Close False

Ej. 2: guardando los cambios:


ActiveWorkbook.Save
ActiveWorkbook.Close
'o en 1 sola lnea: ActiveWorkBook.Close True

4-Guardar un libro con otro nombre o ruta:


Ej. 1: La carpeta y el nombre del libro pueden guardarse en variables, como en este caso:
ruta = ThisWorkbook.Path & "\"
'o quizs: ruta = "C:\"
libro = "LibroCopia.xlsm"
ActiveWorkbook.SaveAs ruta & libro
IMPORTANTE: tener presente que si en las variables no se incluye barra separadora o extensin del
libro, deber agregarse en la instruccin
Ej. 2:
ruta = "C:\Archivos Copia2013"
libro = "Ventas2013.xlsm"
ActiveWorkbook.SaveAs ruta & "\" & libro

Ej. 3: Guardar un libro cuyo nombre ser el valor de una celda:


ActiveWorkbook.SaveAs Filename:=Range("A2").Value
Nota: en este caso como no se indica la ruta o carpeta, se lo guarda en la misma carpeta del libro activo.

5-No mostrar aviso al salir, al eliminar hoja, o cualquier aviso que queremos omitir:
Application.DisplayAlerts= False

'volverla a True al finalizar la macro

6-No mostrar la ejecucin de la macro (movimiento de pantalla):


Application.ScreenUpdating = False

'volverla a True al finalizar la macro

Trabajando con Hojas


En esta seccin aparecern algunas de las instrucciones 'bsicas' para utilizar conHOJAS. Una vez copiada
en el Editor, colocar el cursor sobre la palabra en negrita y presionar F1 para acceder a la Ayuda Excel. All se
encontrarn ms explicaciones y ejemplos para esa instruccin. (VER)
(Descargar libro con ejemplos desde aqu. Apto para todas las versiones Excel)

1-Seleccionar la hoja anterior o siguiente:


ActiveSheet.Previous.Select
'hoja anterior a la activa
ActiveSheet.Next.Select
'hoja posterior a la activa

2-Obtener datos de la hoja:


nbre = ActiveSheet.Name
nroH = ActiveSheet.Index

'nombre de la hoja
'nmero de hoja

3-Copiar datos de una hoja a la siguiente:


Ej. 1: Se copia un rango previamente seleccionado a la hoja sgte.
Selection.Copy
'o tambin: Range("A5:H10").Copy
ActiveSheet.Paste Destination:=ActiveSheet.Next.Range("B2")
Ej. 2 : Mtodo abreviado, donde se copia en otra hoja a partir de B2
Range("A5:H10").Copy Destination:=Sheets("Base").Range("B2")
NOTA: las 'copias' tienen muchos detalles a considerar: con o sin formatos, con o sin frmulas, etc. Todo
el tema Mover-Copiar Datos se desarrolla en la Gua Temtica N 3.

4- Mover o Copiar la hoja entera:


Se realiza una copia de la hoja activa, colocndola al final de todas.
Sheets("Hoja1").Copy After:=Sheets(Sheets.Count)
Nota: recordar que luego de la copia la hoja activa es la que se acaba de crear.
5- Ocultar filas o columnas:
ActiveCell.EntireRow.Hidden=True
ActiveCell.EntireColumn.Hidden= True

' filas
'col

Nota: para volverlas a mostrar utilizar la instruccin en False. Por ej:


Range("C1").EntireRow.Hidden = False

6-Proteger o desproteger una hoja:


ActiveSheet.Protect "contrasea"
ActiveSheet.Unprotect "contrasea"

'proteger con contrasea


'quitar la proteccin

Nota: Para obtener el cdigo con ciertos permisos que se pueden seleccionar desde la ventana de
Proteccin, realizar los pasos con la grabadora de macros.

7-Insertar filas o columnas a partir de cierta ubicacin:


'reemplazar i por el nro de columna
ActiveSheet.Column(i).Select
Selection.EntireColumn.Insert
'reemplazar Column por Row en caso de filas.

8-Eliminar filas o columnas:


Ej. 1: eliminar la fila 7 de hoja activa
ActiveSheet.Rows("7:7").Select
Selection.EntireRow.Delete
Ej. 2: eliminar cierta fila de hoja 'Base'
filx = 5
Sheets("BASE").Range("A" & filx).EntireRow.Delete
Nota: observar que no es necesario seleccionar previamente la fila.

9-Insertar una imagen en una hoja:


Ej. 1: se indica la ruta de la imagen en el mismo cdigo
ActiveSheet.Pictures.Insert ("D:\Mis imgenes\img01.JPG")
Ej. 2: se indica la ruta de la imagen en una celda. Adems la imagen queda seleccionada
ruta = ActiveSheet.Range("B5")
ActiveSheet.Pictures.Insert(ruta).Select
Nota: la ruta va entre comillas, por ej: "C:\Mis docu\Foto1.jpg"

10-Imprimir la hoja seleccionada:


ActiveWindow.SelectedSheet.PrintOut Copies:=1, Collate:=True
'o tambin: ActiveSheet.PrintOut
Nota: Reemplazar PrintOut por PrintPreview para realizar solo una vista preliminar.

http://aplicaexcel.galeon.com/maclibhoja.htm

http://temporaexcel.blogspot.com/2012/10/extraer-una-parte-del-texto-deuna.html

S-ar putea să vă placă și