Está en la página 1de 6

Comenzar

Workbooks("07 VBA solucin.xlsm").Activate


Set datos = Workbooks("Poblacin.xls").Worksheets("INEI")
Worksheets("Resumen").Select ' Hoja de trabajo
Borrar los contenidos del Rango A1:B2 y la celda C4:
Range(A1:B2,C4).clearcontents
Poner en color azul y negrita:
Range(MiRango).Font.Color=vbBlue
Range(MiRango).Font.bold=True
Referencias de Range:
Range(Rango) Range(B5)
[Rango] [B5]
expression.Cells Cells(5,2) Fila 5 y columna 2

Propiedades escenciales Offset, Resize


Instrucciones de mensajes en VBA
MsgBox: Muestra un mensaje en un cuadro de dilogo
MsgBox( Mensaje, Botones, Ttulo, Archivo de ayuda, contexto)
Mensaje : Obligatorio, es el mensaje que se muestra dentro del cuadro de
dilogo.
Botones : Opcional. Es un nmero o una suma de nmeros o constantes (vea
tabla Valores para
botones e Iconos), que sirve para mostrar determinados botones e iconos dentro
del cuadro
de dilogo. Si se omite este argumento asume valor 0 que corresponde a un
nico Botn
OK.
Ttulo : Opcional. Es el texto que se mostrar en la barra del ttulo del cuadro de
dilogo.
Archivo de Ayuda : Opcional. Si ha asignado un texto de ayuda al cuadro de
dilogo, aqu debe
especificar el nombre del archivo de ayuda donde est el texto.
Context: Opcional. Es el nmero que sirve para identificar el texto al tema de
ayuda
correspondiente que estar contenido en el archivo especificado en el parmetro
Archivo de

Ayuda.
InputBox: Muestra un mensaje en un cuadro de dilogo, espera que el usuario
escriba un texto o haga clic en un botn
InputBox(Mensaje, Ttulo, Valor por defecto, Posicin horizontal, Posicin Vertical,
Archivo ayuda, Nmero de contexto para la ayuda)
Mensaje : Es el mensaje que se muestra en la ventana.
Ttulo : Es el ttulo para la ventana InputBox. Es un parmetro opcional.
Valor por defecto: Es el valor que mostrar por defecto el cuadro donde el usuario entra
el valor.
Parmetro opcional.
Posicin Horizontal y Vertical : La posicin X e Y de la pantalla donde se mostrar el
cuadro. Si se
omite el cuadro se presenta horizontalmente centrado a la pantalla.
Archivo Ayuda: Es el vinculo si se desea incorporar una ayuda para el cuadro. Parmetro
opcional.
Nmero de contexto para la ayuda: Nmero asignado que corresponde al identificador
del archivo
de ayuda, sirve para localizar el texto que se debe mostrar. Si se especifica este
parmetro,
debe especificarse obligatoriamente el parmetro Archivo Ayuda.

Estructuras de programacin
Estructuras condicionales:
(Condicionales IF, SELECT CASE)

IF
IF Condicin Then
Sentencia1
Sentencia2

SentenciaN
End If
If Condicin Then
Sentencia1
Sentencia2

SentenciaN

[ELSE] o [ELSEIF condicin Then]


Sentencia 1
Sentencia 2

Sentencia N

End If

Select Case
En ocasiones se dar el caso que en funcin del valor o rango de valores que
pueda tener una variable, una casilla, una expresin, etc. debern llevarse a
cabo diferentes acciones o grupos de acciones
Select Case Expresin
Case valores
Instrucciones.
Case valores
Instrucciones.
...

Case valores
Instrucciones.

Case Else
Instrucciones en caso que no sean ninguno de los valores anteriores.
End Select
Estructuras de programacin:
Bucles abiertos Un bucle abierto es la repeticin de la ejecucin de una sentencia

o bloque de sentencias hasta que se cumpla una condicin: un nmero


desconocido de veces.

While Wend
Este comando responde a una estructura de bucle que ejecuta una serie de
comando o sentencias, mientras se cumpla la condicin inicial.
While Condicin
Sentencia 1
Sentencia 2

Sentencia N

Wend

Do .. Loop
La estructura de control Do Loop funciona exactamente igual que While
Wend. Sin embargo, utilizando Do Loop tenemos la opcin de situar la
condicin al principio o al final del bucle.
Situando la condicin al final garantizamos que las acciones del interior del
mismo se ejecutarn como mnimo una vez. Las posibles formas de utilizacin
son:

Do While Condicin
Sentencias
[Exit Do]
Sentencias
Loop
Do
Sentencias
[Exit Do]
Sentencias
Loop While Condicin
La sentencia opcional Exit Do permite salir del bucle Do...Loop antes de que
este finalice. (ojo: evaluar una condicin que se cumpla eventualmente).
Las siguientes formas ofrecen la posibilidad de que una accin se ejecute
tantas veces como sea necesario hasta que una condicin se cumpla. De
nuevo, la condicin se puede ubicar al principio o al final del bucle.
Do Until
Condicin
Sentencias
[Exit Do]
Sentencias
Loop
Do
Sentencias
[Exit Do]
Sentencias
Loop Until Condicin
Bucle Cerrado Esta estructura de comandos sirve para repetir la ejecucin de
una sentencia o bloque de sentencias, un nmero conocido de veces.

For (Step)
For Variable = Valor_Inicial To Valor_Final Step Incremento
Sentencia 1
Sentencia 2

Sentencia N

Next Variable

For Each Next


El bucle For Each...Next se utiliza para repetir un conjunto de sentencias para
cada elemento de una coleccin (cada hoja de un libro, cada libro en un
conjunto de libros abiertos, etc.), siendo el nmero de elementos indeterminado.
La estructura sera similar a la del bucle For...Next con la diferencia de que la
variable que controla la repeticin del bucle no toma valores entre un mnimo y
un mximo, sino a partir de los elementos de la coleccin.
For Each variable In grupo
Sentencias
Next

Subrutinas completas
Deficit (Llenar cuadro, Contador, suma
Sub parte1()
Workbooks("06 VBA Caso Dficit Prueba.xlsm").Worksheets("Resumen").Activate
Set datos = Workbooks("06 VBA Caso Dficit Prueba.xlsm").Worksheets("Datos")
contador1 = 0
contador2 = 0
For i = 0 To 31
If datos.[c6].Offset(i, 0) - datos.[d6].Offset(i, 0) < 0 Then
contador1 = contador1 + 1
End If
If datos.[e6].Offset(i, 0) - datos.[f6].Offset(i, 0) < 0 Then
contador2 = contador2 + 1
End If
Next i
If [c8] = "Empresa1" Then
[e6] = contador1
Else
[e6] = contador2
End If
End Sub
Sub parte2()
Worksheets("Resumen").Select ' Hoja de trabajo
Set datos = Worksheets("Datos") ' Variable objeto, para simplificar
'Se define una variable que indicar, en el bucle de bsqueda,
'cunto moverse en columnas.
If [c8] = "Empresa1" Then
num = 0
Else
num = 2
End If
'Borrar contenidos de la zona donde se va a escribir
Range("B10:c23").ClearContents
'Variable inicial para bajar lugares en la hoja "Resumen"
cont = 0
For a = 1 To 32 ' Revisin

If datos.[c5].Offset(a, num) - datos.[d5].Offset(a, num) < 0 Then


'Si se cumple la condicin (si hay dficit), escribir en "Resumen" el ao
[b10].Offset(cont, 0) = datos.[b5].Offset(a, 0)
'Tambin el monto de dficit
[c10].Offset(cont, 0) = datos.[c5].Offset(a, num) - datos.[d5].Offset(a, num)
'El contador debe aumentar para escribir en la siguiente lnea
cont = cont + 1
'Slo aumenta si se ha cumplido la condicin
End If
Next a ' Siguiente caso a revisar
End Sub

Llenar cuadro de aos


Sub Llenar()
Workbooks("07 VBA Prueba.xlsm").Worksheets("1").Activate
Set datos = Workbooks("Poblacion.xls").Worksheets("INEI")
Range("c13:F120").ClearContents
comienzo = [f8]
fin = [f9]
For i = 0 To fin - comienzo
[c13].Offset(i, 0) = comienzo + i
If [c13].Offset(i, 0) = datos.[a8].Offset(i, 0) Then
For j = 1 To 3
[c13].Offset(i, j) = datos.[a8].Offset(i, j)
Next j
'[c13].Offset(i, 2) = datos.[a8].Offset(i, 2)
'[c13].Offset(i, 3) = datos.[a8].Offset(i, 3)
End If
Next i
End Sub

Recursos (Llenar cuadros de varios aos, con saltos, datos en una


hoja diferente)
Sub ejecutar()
Worksheets("GL").Select
Set datos = Worksheets("Transferencias")
Range("e16:l27").ClearContents
For h = 0 To 11
canonminero = 0
For g = 0 To 7
For i = 0 To 1833
If [h11] = datos.[d8].Offset(i, 0) Then
canonminero = canonminero + datos.[g8].Offset(i, g + 8 * h)
End If
Next i
[e16].Offset(h, g) = canonminero
Next g
Next h
End Sub

También podría gustarte