Professional Documents
Culture Documents
Activecell.end(xldown)
Activecell end(xltoleft)
Activecell end(xltoright)
Activecell end(xlup)
SELECCIONA LA LINEA SIGUIENTE
Activecell.offset(1,0).select
PARA RECORRER UN RANGO ESTABLECIDO POR EL USUARIO A TRAVES DE
REFEDIT
Dim <variable> As Range
Set <variable> = Range(Refedit.value)
SELECCIONA UNA CELDA O RANGO DE CELDAS
Range(A1:B3).Select
Range(B2).Activate
AGREGAR NUEVA HOJA Y ESTABLECE NOMBRE DE LA HOJA
Dim NuevaHoja as Objeto
Set NuevaHoja = Worksheets.Add
NuevaHoja.Name = Presupuesto
GRABAR ARCHIVO
Active.Workbook.Save
SOLICITAR UN RANGO A TRAVES DE INPUTBOX
Dim MiRango as Range
Set MiRango = Application.inputbox(Promp:=Seleccione un Rango para Traspaso;type:=8)
VERIFICA QUE EL RANGO SELECCIONADO SEA DE LA COLUMNA A
If Mirando.column <> 1 Then
Msgbox El Rango Seleccionado NO es Valido, VbCritical
Exit Sub
End if
PONE NOMBRE DE RANGO A CELDA ACTIVA
BAJA 5 LINEAS, COLOCA HOLA, VUELVE A CELDA NOMBRE Y ELIMINA
NOMBRE
ActiveCell.Name = Nombre
ActiveCell.Offset(5,0).Activate
ActiveCell.Value = Hola
Application.GotoReference:= Nombre
ActiveWorkbook.Names(Nombre).Delete
.PatternColorIndex = xlAutomatic
If MiP.Offset(0, 1).Value = "" Then
.Color = 65535 'amarillo
Else
.ColorIndex = 15 'gris
End If
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End if
next
next
SELECCIONA UNA CARPETA DE UN LIBRO ABIERTO
Worksheets(nombre carpeta).Activate
SELECCIONA UN RANGO
Range(nombre rango).Activate
INSERTA UNA LINEA SI LA FILA SIGUIENTE CUMPLE LA CONDICION
If ActiveCell.Offset(1,0).Value=contenido celda then ActiveCell.EntireRow.Insert
IR AL FINAL DE LA SELECCION Y POSESIONARSE EN LA LINEA SIGUIENTE
ActiveCell.End(xlDown).Select
INSERTA LINEA SI DOS FILAS MAS ABAJO DE CELDA ACTIVA TIENE DATOS
If ActiveCell.Offset(2,0)<> then
Selection.EntireRow.Insert
End if
INGRESA DATOS DE UN LISTVIEW A LA PLANILLA EXCEL
Dim a as Integer
For a= 1 to [nombre userform].[nombre listview].ListItem.Count
ActiveCell.Offset(0,6).Value= [nombre userform].[nombre listview].ListItem(a).SubItem(2)
Next a
(2) corresponde a columna del Listview a traspasar, numero variable
PONE UNA FORMULA EN LA CELDA ACTIVA
ActiveCell.Offset(0, 12).FormulaR1C1 = "=r[-1]c+rc[-2]-rc[-1]"
Pone la formula a 12 columnas de la posicin actual
ActiveCell.FormulaR1C1 = ("=subtotal(9,r7c13:r10000c13)")
Pone la formula en la celda activa
PONE UNA FORMULA A PARTIR DE LA CELDA ACTIVA 5 COLUMNAS A LA DERECHA
(SUMA HACIA ARRIBA)
Dim fila as string
fila = "=SUM(r[-" & ActiveCell.Row - 6 & "]c:r[-1]c)"
ActiveCell.Offset(0, 5).FormulaR1C1 = fila
REDONDEAR CELDAS
'Redondea el contenido numerico de la celda a cero decimal
Dim Rr As Range
Dim Ss As Range
Dim Zz As Double
Set Rr = Selection
For Each Ss In Rr
Zz = Round(Ss, 0)
Ss.Value = Zz
Ss.NumberFormat = "#,##0"
Next Ss
FORMATEAR FUENTE
Cells.Select
With Selection.Font
.Name = "MS Sans Serif"
.Size = 10
End With
LNEAS DE DIVISIN
ActiveWindow.DisplayGridlines = False
INDICE DE COLORES
ActiveWorkbook.Colors(44) = RGB(236, 235, 194) 'verde
COLOREAR RANGO
Range("A1:B10").Interior.ColorIndex = 44
CAMBIAR ENTRE ESTILOS A1 / RC
Application.ReferenceStyle = xlA1Application.ReferenceStyle = xlR1C1
SELECCIONAR UNA HOJA DEL LIBRO, PONER UNA FORMULA, DARLE
FORMATO A CELDA ACTIVA
Sheets("MatrizAnexo").Select
ActiveCell.FormulaR1C1 = _
"=ROUND(+R[-19]C[14]/COUNTIF(R[-25]C[14]:R[-20]C[15],"">0""),0)"
Selection.NumberFormat = "#,##0"
Mm = Worksheets("datos").Range("tipodoc").Offset(Nro, 0).Address
If Cc = Dir Then
Range("D" & Aa).Select
ActiveCell.Offset(0, 12).Value = Worksheets("datos").Range(Mm).Offset(0, 2).Value
Exit Sub
End If
Nro = Nro + 1
Dir = Worksheets("datos").Range("tipodoc").Offset(Nro, 0).Value
Loop
If Dir = "" Then
MsgBox "Valor ingresado no existe, solicite Ayuda [CTROL A]... ", vbCritical
Range("C" & Aa).Select
End If
End If
'**********************************
If Target.Column = 5 And ActiveCell.Row > 4 Then
Nro = 1
Dir = Worksheets("datos").Range("auxiliar").Offset(Nro, 0).Value
Cc = Target.Value
Aa = Target.Row
Vv = False
Do While Dir <> ""
If Cc = Dir Then
Range("F" & Aa).Select
Target.Offset(0, 1).Value = Worksheets("datos").Range("auxiliar").Offset(Nro, 1).Value
Vv = True
Exit Do
End If
Nro = Nro + 1
Dir = Worksheets("datos").Range("auxiliar").Offset(Nro, 0).Value
Loop
If Vv = True Then
Exit Sub
Else
MsgBox "Valor ingresado no existe, solicite Ayuda [CTROL A]... ", vbCritical
'Range("C" & Aa).Select
End If
End If
'**********************************
End If
End Sub
*******************************************************************
Pregunta : Cmo puedo anular el efecto de la pulsacin de teclas como el RePag, AvPag, Esc o
similares al trabajar con formularios?
Respuesta : Si quieres anular la pulsacin de alguna tecla al trabajar con formularios, primero debes ir a
la ventana de propiedades del formulario y poner la propiedad Tecla de vista previa (KeyPreview) a S.
De esta manera, se fuerza a que el formulario sea el primero en detectar la pulsacin de cualquier tecla,
antes de que lo haga el control activo en ese momento, que, de otra manera, sera el primero en
hacerlo. Despus deberemos utilizar algn tipo de cdigo para detectar la pulsacin de la tecla en el
evento Al bajar una tecla (KeyDown) y anularla. Este evento detecta prcticamente todas las
pulsaciones de teclas, en detrimento del evento Al presionar una tecla (KeyPress) que slo detecta las
teclas tpicas de la escritura como son los caracteres alfanumricos y los smbolos utilizados en los
diferentes idiomas.
En nuestro caso, podemos llamar a una funcin genrica que he construdo y que servir para anular
cualquier tipo de tecla que le pasemos en su segundo parmetro, el cual tiene un nmero de elementos
indeterminado.
La funcin DeleteKeys tiene los siguientes
Argumentos
Nombre
Descripcin
KeyCode Requerido. El valor de la tecla pulsada y que est recogida en el primer argumento del
evento KeyDown, del mismo nombre: KeyCode
Keys
Opcional. Lista separada por comas de los valores ASCII o las constantes Visual Basic (ver
estas constantes en este enlace) de las teclas que se quieren anular.
Esta funcin tambin puede ser utilizada a travs del evento KeyDown de un control. Funcionar de la
misma manera que para un formulario.
Un ejemplo de uso:
' esta llamada a la funcin DeleteKeys anular la pulsacin de las
' teclas RePag y AvPag en el evento KeyDown de un formulario
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Call HelpKeys(KeyCode, vbKeyPageUp, vbKeyPageDown)
End Sub
Pega esta funcin en un mdulo estandar:
'--------------------------------------------------------'
' DeleteKeys
'
' Cdigo escrito originalmente por Juan M Afn de Ribera.
' Ests autorizado a utilizarlo dentro de una aplicacin
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una pgina Web,
' por favor, contactar con el autor en
'
' accessvbafaq@ya.com
'
' Este cdigo se brinda por cortesa de
' Juan M. Afn de Ribera
'
Function DeleteKeys(KeyCode As Integer, ParamArray Keys() As Variant) As Integer
Dim Key As Variant
For Each Key In Keys
If KeyCode = Key Then
KeyCode = 0
Exit Function
End If
Next
End Function
Valor
Descripcin
vbKeyLButton
vbKeyRButton
vbKeyCancel
tecla CANCEL
vbKeyMButton
vbKeyBack
tecla Retroceso
vbKeyTab
tecla Tabulador
vbKeyClear
12
tecla CLEAR
vbKeyReturn
13
tecla Enter
vbKeyShift
16
tecla Maysculas
vbKeyControl
17
tecla Ctrl
vbKeyMenu
18
tecla Menu
vbKeyPause
19
tecla Pausa
vbKeyCapital
20
vbKeyEscape
27
tecla Esc
vbKeySpace
32
tecla Espaciador
vbKeyPageUp
33
tecla RePg
vbKeyPageDown 34
tecla AvPg
vbKeyEnd
35
tecla Fin
vbKeyHome
36
tecla Inicio
vbKeyLeft
37
vbKeyUp
38
vbKeyRight
39
vbKeyDown
40
vbKeySelect
41
tecla SELECT
vbKeyPrint
42
tecla ImprPant
vbKeyExecute
43
tecla EXECUTE
vbKeySnapshot
44
tecla SNAPSHOT
vbKeyInsert
45
tecla Insertar
vbKeyDelete
46
tecla Supr
vbKeyHelp
47
tecla HELP
vbKey0
48
tecla 0
vbKey1
49
tecla 1
vbKey2
50
tecla 2
vbKey3
51
tecla 3
vbKey4
52
tecla 4
vbKey5
53
tecla 5
vbKey6
54
tecla 6
vbKey7
55
tecla 7
vbKey8
56
tecla 8
vbKey9
57
tecla 9
vbKeyA
65
tecla A
vbKeyB
66
tecla B
vbKeyC
67
tecla C
vbKeyD
68
tecla D
vbKeyE
69
tecla E
vbKeyF
70
tecla F
vbKeyG
71
tecla G
vbKeyH
72
tecla H
vbKeyI
73
tecla I
vbKeyJ
74
tecla J
vbKeyK
75
tecla K
vbKeyL
76
tecla L
vbKeyM
77
tecla M
vbKeyN
78
tecla N
vbKeyO
79
tecla O
vbKeyP
80
tecla P
vbKeyQ
81
tecla Q
vbKeyR
82
tecla R
vbKeyS
83
tecla S
vbKeyT
84
tecla T
vbKeyU
85
tecla U
vbKeyV
86
tecla V
vbKeyW
87
tecla W
vbKeyX
88
tecla X
vbKeyY
89
tecla Y
vbKeyZ
90
tecla Z
vbKeyNumpad0
96
vbKeyNumpad1
97
vbKeyNumpad2
98
vbKeyNumpad3
99
vbKeyNumpad4
100
vbKeyNumpad5
101
vbKeyNumpad6
102
vbKeyNumpad7
103
vbKeyNumpad8
104
vbKeyNumpad9
105
vbKeyMultiply
106
vbKeyAdd
107
vbKeySeparator
108
vbKeySubtract
109
vbKeyDecimal
110
vbKeyDivide
111
vbKeyF1
112
tecla F1
vbKeyF2
113
tecla F2
vbKeyF3
114
tecla F3
vbKeyF4
115
tecla F4
vbKeyF5
116
tecla F5
vbKeyF6
117
tecla F6
vbKeyF7
118
tecla F7
vbKeyF8
119
tecla F8
vbKeyF9
120
tecla F9
vbKeyF10
121
tecla F10
vbKeyF11
122
tecla F11
vbKeyF12
123
tecla F12
vbKeyF13
124
tecla F13
vbKeyF14
125
tecla F14
vbKeyF15
126
tecla F15
vbKeyF16
127
tecla F16
vbKeyNumlock
144
tecla BloqNum
Vamos a ello. Te podra dar una API que detecta tal hecho, pero lo mejor y ms sencillo -y
por lo tanto lo ms adecuado- es emplear el evento KeyDown. Crea un formulario con un
Text, y codifica lo siguiente:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyUp
MsgBox "Tecla arriba"
Case vbKeyDown
MsgBox "Tecla abajo"
Case vbKeyRight
MsgBox "Tecla derecha"
Case vbKeyLeft
MsgBox "Tecla izquierda"
End Select
End Sub
Comom vers se trata de capturar las teclas empleando las constantes que Visual Basic
provee. Una vez capturadas las teclas, hacer que se mueva la imagen o cualquier control es
bien sencillito
En cada "CASE" adiciona o resta ms a la propiedad LEFT o TOP del control
en cuestin.
******************************************************************************************************
CAPTURAR
'selecciona la celda B7
'selecciona toda la columna B
Range("A2", Range("A2").End(xlToRight)).Select
'selecciona desde A2 hacia la derecha
Range("D2", Range("D2").End(xlToLeft)).Select
'selecciona desde D2 hacia la izquierda
Range("A20", Range("A20").End(xlUp)).Select
'selecciona desde A20 hacia arriba
En cambio, para seleccionar solo la ltima celda con datos ser:
Range("A2").End(xlDown).Select
Nota: Esta instruccin dar error si la celda A3 se encuentra vaca. Es preferible en ese caso realizar la
bsqueda de 'abajo hacia arriba', con:
Range("A65536").End(xlup).Select
'o
Range("A65536").End(xlup).Row + 1
Una coleccin es un conjunto de objetos del mismo tipo: hojas, celdas, controles o Shapes, imgenes.
Para trabajar con una coleccin se programa un bucle: es decir repetir la misma instruccin para cada
elemento de la coleccin.
A continuacin algunos ejemplos del bucle: For Each....Next
Ejemplo1: introducir un nombre para cada hoja del libro activo. Esta rutina se coloca en un mdulo:
Sub nombraHojas()
Dim MiNombre As String
Dim hoja As Worksheet
For Each hoja In Worksheets
MiNombre = InputBox("Ingrese nombre de hoja: ")
hoja.Name = MiNombre
Next hoja
End Sub
Ejemplo2: introducir valores para cada celda de un rango (se coloca en un mdulo)
Sub colocaValores()
Dim celdita as Range
For Each celdita in ActiveSheet.Range("A1:B10")
celdita.Value = InputBox("Ingrese valor: ")
Next celdita
End Sub
Ejemplo3: introducir los mismos valores en celdas de todas las hojas (se coloca en un mdulo)
Sub valoresHoja()
Dim hoja as Sheets
For Each hoja in Sheets
hoja.Range("E3").Value = Date
hoja.Range("F3").Value = Time
Next hoja
End Sub
OTRO TIPO DE BUCLES:
Ejemplo1: realizar una accin por cada valor que tome una variable i (se coloca en un mdulo)
Sub muestraNombre()
Dim i as Byte
Dim hoja as Worksheet
For i=1 to 5
Msgbox WorkSheets(i).Name
Next
End Sub
En este ejemplo se muestra el nombre de cada hoja, desde la nro 1 a la 5
Ejemplo2: realizar una accin mientras se cumpla una condicin (se coloca en un mdulo)
Sub recorreRango()
'Se recorre la col A a partir de la fila 2 hasta encontrar una celda vaca.
'El valor de cada celda se incrementa en 1
Range("A2").Select
While Activecell.Value <> ""
ActiveCell.Value = ActiveCell.Value + 1
Wend
End Sub
a.
Botn de formulario: se asigna una macro, como la del ejemplo, que previamente se escribi
en un mdulo en el Editor de Visual Basic. Ejemplo:
Sub mostrando ()
UserForm1.Show
End Sub
b.
Botn del Cuadro de controles: una vez dibujado en la hoja, clic derecho, opcin Ver cdigo y
escribir la rutina (sta se habilita en la hoja donde aparecer el control). Ejemplo:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Notese que en Textbox2 se omiti la expresin 'value' ya que esa es su propiedad predeterminada. Puede
colocarse o no.
Workbooks("Libro2.xls").Activate
'o tambin: Workbooks(2).Activate , en este caso Libro2.xls es el 2do libro abierto
Workbooks("Libro1.xls").Close False
ActiveWorkbook.Close False
'o
FileFormat:=xlNormal, Password:="clave",
Estas son algunas de las opciones. Si se omiten, escribir la coma, como en el siguiente ejemplo:
ActiveWorkbook.SaveAs Filename:="C:\Mis doc\Libro.xls",,, ReadOnlyRecommended:=False
*- La carpeta y el nombre del libro pueden guardarse en variables, como en este ej:
ruta = ThisWorkbook.Path & "\"
'o quizs: ruta = "C:\"
libro = "LibroCopia.xlsm"
ActiveWorkbook.SaveAs ruta & libro
ActiveWorkbook.SaveAs Filename:=Range("A2").Value
7-No mostrar aviso al salir, al eliminar hoja, o cualquier aviso que queremos omitir:
Application.DisplayAlerts= False
2-Datos de la hoja:
ActiveSheet.Name
ActiveSheet.Index
'nombre de la hoja
'nmero de hoja
Selection.Copy
'previamente se habr seleccionado algo
ActiveSheet.Paste Destination:=ActiveSheet.Next.Range("B2")
' filas
'col
Sub nrocol()
Msgbox Range("AB1").Column
End Sub
ActiveSheet.Pictures.Insert(ruta).Select
'la ruta va entre comillas, por ej: "C:\Mis docu\Foto1.jpg"
'o
Reemplazar PrintOut por PrintPreview para realizar solo una vista preliminar.
Esta pgina intenta ser una gua no solo para el que se inicia en el tema VBA sino tambin para aquellos
que, conociendo el tema, no recuerdan tal o cual instruccin o buscan ampliar sus conocimientos con otros
ejemplos.
Los temas se encuentran separados en categoras, desde un repaso por las instrucciones bsicas, hasta
macros ms desarrolladas, con varios ejemplos en cada una.
Como casi siempre hay ms de una forma de programar un evento, podrn observar que a veces se
escribe una lnea O la otra. Quiere decir que puedo utilizar cualquiera de las 2. (Nunca las 2 juntas!)
Los temas estn divididos en 2 grupos principales: Conceptos e Instrucciones bsicas (ver ndice de
contenidos en margen izquierdo)
MACRO: Una macro es un conjunto de instrucciones escritas en lenguaje Visual Basic (*), que nos
permite automatizar ciertas tareas que la aplicacin no contempla desde las herramientas de la hoja.
Por ejemplo, si necesitamos que se inserten automticamente 2 hojas nuevas al abrir un libro, recurriremos
a una macro.
Otros casos: completar alguna tarea cada vez que se ingresa un valor en una celda o rango de celdas;
realizar un cierto control antes de imprimir, guardar o cerrar el libro, etc. Son todas tareas que pueden ser
automatizadas mediante rutinas o macros.
(*) El lenguaje utilizado en Excel es VBA (Visual Basic for Applications)
Cmo se crea una macro: para automatizar una tarea mediante una macro bsicamente se necesitan
los siguientes elementos:
1- un espacio de trabajo donde escribir las instrucciones o rutinas que harn esas tareas: el
Editor de Macros. A este espacio se accede desde men Herramientas, Macros, Editor o con el
atajo de teclado Alt+F11.
En versin 2007, activar la opcin Programador de la Cinta de Opciones.
Una vez en ese 'espacio', escribiremos o copiaremos las rutinas en:
a- alguno de los objetos (hoja o libro) que seleccionemos con doble clic en el panel de Objetos
que se encuentra a la izquierda del Editor.
b- insertando mdulos
c- o insertando formularios personales o Userforms.
2- una accin que har que la tarea programada se ejecute. A esto llamamos 'Eventos' que
inician una macro y pueden ser: abrir o cerrar un libro, entrar o salir de una hoja, cambios o
seleccin de celdas, antes de imprimir o guardar, el 'clic' en un botn de comando, al presionar
un atajo de teclado, y otros ms.
3- un lenguaje de programacin. En Excel utilizamos VBA (Visual Basic para Aplicaciones)
4- Ocasionalmente un formulario donde trabajar para luego volcar los resultados en las hojas:
llamados Userforms.
Dnde colocar o escribir la macro:
Si las instrucciones se deben ejecutar, por ejemplo, al abrir o cerrar un libro, se colocan en el
objeto ThisWorkbook (o EsteLibro segn la versin).
Si las instrucciones se deben ejecutar al entrar o salir de una hoja o al seleccionar o modificar
una celda, se colocan en el objeto Hoja. Estos objetos se encuentran en el margen izquierdo del
Editor, en la ventana Proyecto-VBAProyect
Si nuestra rutina ser llamada con un botn, atajo de teclado o desde otra rutina, se colocar en
un mdulo (estando en el Editor, men Insertar, Mdulo).
Las instrucciones para los controles de un formulario o Userforms se colocan en la seccin
Cdigo del mismo formulario.
Cmo ejecutar una macro: En el punto anterior se menciona que se necesita una 'accin' que dispare
o ejecute una macro grabada.
Veamos los distintos casos:
1- Una accin automtica resultado de un evento, ya sea a nivel libro, hoja, rango o celda
En este grupo se encuentran las rutinas que se ejecutan en la apertura o cierre de libro, al entrar
o salir de una hoja, al seleccionar o cambiar valores en celda Son las que se colocan en el
objeto HOJA o ThisWorkbook, como se menciona en tema anterior
2- Al presionar un botn dibujado en la hoja. Podemos utilizar botones de la barra 'Cuadro de
controles o ActiveX' o de la barra 'Formularios'. En versin 2003 se encuentra en Men Ver,
Barras de Herramientas. En versin 2007 desde la ficha Programador
Dibujamos el control en la hoja, ajustamos algunas propiedades como texto, tamao, ubicacin.
Al hacer clic derecho sobre el control optamos por 'Ver cdigo' o 'Asignar macro' segn qu
barra de herramientas hemos utilizado.
a- Cuadro de controles: al optar por 'Ver cdigo' nos llevar al Editor, al objeto HOJA
donde se generar automticamente una rutina con estas 2 instrucciones:
Private Sub CommandButton1_click()
'aqu escribiremos nuestras instrucciones
End Sub
b- Formularios: ya debemos tener lista la rutina en un mdulo del Editor y la asignaremos
cuando optemos por 'Asignar macro'.
Las rutinas para este caso son como el siguiente ejemplo:
Sub nombre_rutina()
'nuestras instrucciones
End Sub
3- Ejecutar un atajo de teclado: En estos casos tendremos una rutina como la del punto anterior
(b) en un mdulo del Editor.
Desde la hoja Excel, men Herramientas, Macros, Macros seleccionarla de la lista. Presionar
el botn 'Avanzadas' e ingresar una letra, por ejemplo 't' (sin las comillas)
Nota: Si Excel ya tiene asignada esta letra la reemplazar por Ctrl+Maysc +t Esto significa que
en el momento que necesitemos que la macro se ejecute presionaremos juntas las teclas Ctrl + t
(o Ctrl+Mayusc+t)
4- Desde el men Herramientas: si no hemos asignado la rutina que se encuentra en un mdulo
a ningn botn ni a atajo de teclado, la ejecutaremos desde este men de Excel.
En versin 2007, activar la opcin Programador de la Cinta de Opciones.
Referencias:
Workbook
:
Libro de trabajo.
ActiveWorkbook :
Libro activo
Workbooks(2)
:
El segundo libro abierto
Workbooks("Libro1.xls") : Llamada al libro de nombre Libro1
Workbooks(milibro)
*-Si el nombre del libro se encuenta en una variable, NO lleva comillas
Previamente asignamos nombre, por ej: milibro=ActiveWorkbook.name
WorkSheet :
Hoja de trabajo
ActiveSheet :
Hoja activa
Sheets("Enero") : Hoja de nombre 'Enero'
Sheets(3)
: Nmero de hoja segn el orden de las pestaas.
[Hoja2]
: La 2da hoja segn orden de las pestaas
Range o Cells
: rango o celda
Activecell
: la celda activa
Range("A2") : la celda A2
Cells(2,1)
: la celda A2 .
*-Ntese que mientras en Range se introduce la celda en el orden Col,Fila, en Cells es a la
inversa: Cells(fila,col)
Range("A5:B10") : rango de celdas desde A5 hasta B10 inclusive
Range("E:E")
: columna E
Range("2:2")
: fila 2
[A3]
: la celda A3
Range("A" & fila) : celda de la col A y fila segn valor de variable
**************************
FUNCIONES DE COMPROBACION
IsNumric(Expresin). Comprueba si expresin tiene un valor que se puede interpretar como numrico.
IsDate(Expresin). Comprueba si expresin tiene un valor que se puede interpretar como tipo fecha.
IsEmpty(Expresin). Comprueba que expresin tenga algn valor, que se haya inicializado.
IsError(Expresin). Comprueba si expresin devuelve algn valor de error.
IsArray(Expresin). Comprueba si expresin (una variable) es un array o no.
IsObject(Expresin). Comprueba si expresin (una variable) representa una variable tipo objeto.
IsNull(Expresin). Comprueba si expresin contiene un valor nulo debido a datos no vlidos.
Funcin IsEmpty
Nos comprueba si una celda o rango est vaco, no hay datos.
Sintaxis
IsEmpty(expresin)
El argumento expresin requerido es un tipo de datos Variant que contiene una expresin de cadena o
una expresin numrica. Sin embargo, ya que la funcin IsEmpty se utiliza para determinar si las
End If
End Sub
Aqu un ejemplo resumen:
Sub comprueba()
Dim cadena As Variant
cadena = ActiveCell.Value
If IsEmpty(cadena) Then
MsgBox La celda no contiene datos
ElseIf IsNumeric(cadena) Then
MsgBox La celda contiene datos numricos
ElseIf IsDate(cadena) Then
MsgBox La celda contiene datos tipo fecha
ElseIf Not IsArray(cadena) Then
MsgBox La celda no es un array
Else
MsgBox No hay nada para evaluar
End If
End Sub
Evento OnKey:
El evento OnKey ejecuta un procedimiento especfico cuando una tecla o combinacin de teclas
se pulsan.
A continuacin os relaciono una matriz con los cdigos que representa cada tecla en el teclado.
Clave
Cdigo
RETROCESO
{RETROCESO} o {BS}
BREAK
{PAUSA}
CAPS LOCK
{} BLOQ MAYS
CLEAR
{CLEAR}
SUPR o DEL
{DELETE} o {DEL}
FLECHA ABAJO
{DOWN}
FIN
{END}
ENTER (teclado
numrico)
{ENTER}
ENTER
~ (tilde)
CES
{ Salir} o {ESC}
AYUDA
{AYUDA}
INICIO
{HOME}
INS
{INSERT}
FLECHA A LA
IZQUIERDA
{Left}
BLOQ NUM
{BLOQ NUM}
PG
{} PGDN
PG
{} PGUP
REGRESAR
{Return}
{} ScrollLock
TAB
{TAB}
FLECHA ARRIBA
{UP}
F1 a F15
Tambin se pueden especificar en combinacin con las teclas SHIFT , CTRL y ALT.
Para combinar con las
teclas
SHIFT
+ (signo ms)
CTRL
^ (acento circunflejo)
ALT
% (signo de porcentaje)