Documente Academic
Documente Profesional
Documente Cultură
APLICACIONES EXCEL
CAPTULO I
INTRODUCCIN A LA PROGRAMACIN
1.1PASOS INICIALES.Para comenzar se debe habilitar, si es que no lo est, la ficha Programador. Para
ello:
1. Haga clic en la pestaa Archivo, elija Opciones y, a continuacin, haga clic
en la categora Personalizar cinta de opciones.
2. En Personalizar cinta de opciones, en la lista Fichas principales, haga
clic en Programador y, a continuacin, haga clic en Aceptar.
2
habilita y deshabilita (segn el estado anterior) el modo de diseo.
1.2 REFERENCIAS A CELDAS.Se puede hacer referencias a celdas mediante los objetos Cells y Range.
As:
Cells(nmero de fila , nmero de columna)
Hace referencia a una sola celda.
Range(Cells(fila inicial , columna inicial), Cells(fila final , columna final))
Hace referencia a un rango de celdas.
Se puede utilizar Cells, para poner un valor en una celda: Cells(1,1)=Hola
Mundo, pone el mensaje Hola Mundo en la primer celda de la hoja activa.
Por otra parte se puede recoger el valor de una celda y almacenarlo en una
variable:
n = Cells(2,1). Recoge el valor de la celda que est en la segunda fila y primer
columna y lo almacena en la variable n.
3
Se pueden cambiar las propiedades de las celdas, dndole propiedades a los
objetos Cells y Range.
Cells(fila, columna).Font.Bold = True
Pone el formato de la celda en negrilla.
Cells(fila, columna). Font.Name = "Tipo"
Pone el tipo de letra a la celda, Tipo=Arial, etc
Cells(fila, columna).Font.Size = numero
Pone el tamao nmero de la celda
Cells(fila, columna).Font.Color = RGB(nmero1,nmero2,nmero3)
Da color al contenido de la celda. El cdigo RGB se refiere a Red Green Blue y
son nmero que van de 0 a 255. As por ejemplo: Cells(1,1).Font.Color =
RGB(255,0,0) pone el color rojo al contenido de la primera celda.
Cells(fila, columna).HorizontalAlignment = xlCenter
El contenido de la celda es centrado.
Cells(fila, columna).HorizontalAlignment = xlRight
El contenido de la celda es alineado a la derecha.
Cells(fila, columna).HorizontalAlignment = xlLeft
El contenido de la celda es alineado a la izquierda.
Range(Cells(fila inicial , columna inicial), Cells(fila final , columna final))
.Merge
Combina el rango especificado de celdas en una sola.
Cells(fila, columna).Font.Size = nmero
Fija el tamao de la fuente, donde nmero es el tamao elegido.
Cells(fila, columna).NumberFormat = 0.nmero_de_ceros
Fija el nmero de decimales del contenido de la celda.
Cells(fila, columna).Interior.ColorIndex = nmero
Rellena el interior de la celda con el color indicado por nmero.
Cells(fila, columna).Interior.color = RGB(nmero, nmero, nmero)
Cells(fila, columna).Select
Selecciona la celda indicada por fila y columna.
ActiveCell.ColorIndex = nmero
Rellena el interior de la celda activa con el color indicado por nmero.
4
Cells(fila, columna).RowHeight = nmero
Cells(fila, columna).ColumnWidth = nmero
Cells(fila, columna).ClearContents
Borra los contenidos de la celda.
Cells(fila, columna).ClearFormats
Borra los formatos de la celda.
Cells(fila, columna).Interior.Pattern = xlNone
1.3 PRIMER PROGRAMA .Se desea un programa que rellene la celda seleccionada con un color. Debe
recoger el nmero de color de la primer celda.
El primer paso es abrir el Editor de Visual Basic presionando el icono
. Despus
que aparece el entorno de Visual Basic se debe presionar el icono de Ejecutar
, que es una flecha similar a la tecla de Play en cualquier reproductor
de sonido o video.
5
Luego volvemos a la hoja Excel y presionamos Herramientas, Macro y Macros, o
el mtodo abreviado Alt + F8. En la ventana
que aparece presionamos Opciones.
Aqu se debe asignar un mtodo abreviado,
para este caso se le asigna CTRL + d, luego
Aceptar. Luego se elige Ejecutar de la
primera ventana.
En la celda (1,1) ponemos el valor del ndice
de color, por ejemplo 3 y luego elegimos
alguna de las celdas y presionamos CTRL +
d, esa celda seleccionada se rellena con color
rojo, podemos ir cambiando el ndice y elegir
otras celdas.
6
Estando resaltado el Botn de Comando, se presiona el icono de propiedades
, que se encuentra en la barra de controles, o tambin haciendo clic con el botn
derecho del ratn y presionando propiedades. Aparece la ventana de
propiedades
n
con=0
d=n
d=d-1
Es n Mod d = 0 ?
n1 = n
d=n/d
n = n1
con = con + 1
Cells(1,con) = d
d = n1
Es d > 2 ?
Cells(1, con + 1) = n
8
El cdigo completo es el siguiente:
Private Sub calcular_Click()
Dim n, d, n1, con As Long
Range(Cells(1, 1), Cells(2, 100)).ClearContents
n = Val(InputBox(Programa para factores primos de nmeros enteros,
Introduzca el nmero))
Cells(2, 1) = n
con = 0
d=n
Do
d=d1
If n Mod d = 0 Then
n1 = d
d=n/d
n = n1
con = con + 1
Cells(1, con) = d
d = n1
End If
Loop While d > 2
Cells(1, con + 1) = n
End Sub
Una vez terminado el cdigo, se vuelve a Excel presionando su icono en la
esquina superior izquierda y se sale del modo de diseo haciendo clic en el icono
.
El botn de comando deja de estar rodeado de puntos de dimensin y pasa al
estado de ejecucin, luego debemos hacer clic en l y el programa se ejecuta
pidindonos un nmero, del cual encuentra sus factores primos y los va poniendo
en las celdas de la primera fila
Explicacin del cdigo.Dim n, d, n1, com As Long :dimensiona las variables n, d,n1, con del tipo entero
largo.
Range(Cells(1, 1), Cells(2, 100)).ClearContents: Borra los contenidos de las
celdas indicadas por Range.
N = Val(InputBox(Programa para factores primos de nmeros enteros,
Introduzca el numero)): Asigna el valor introducido en el cuadro de entrada,
convirtiendo ese valor a un valor numrico.
Cells(2, 1) = n: Asigna el valor de n a la celda de la segunda fila y primer
columna.
Con = 0
d = n: Da valores iniciales a las variables con y d.
Do : Inicia el bucle Do- Loop While
d = d 1: Reduce el valor de d en una unidad.
If n Mod d = 0 Then : Prueba si el residuo de dividir n entre d, es igual a cero. Si
es as hace lo que viene a continuacin de Then.
N1 = d
d=n/d
n = n1
con = con + 1 : Da diferentes valores a las variables.
Cells(1, con) = d
d = n1: A las celdas de la primera fila va asignando los distintos valores de d y
luego a d se le asigna el valor de n1.
Loop While d > 2: Seguir realizando el bucle mientras d sea mayor que 2.
Ejemplo2: Hacer un programa que encuadre, las celdas seleccionadas, con doble
lnea, adems le aada un color de fondo y ponga el formato de letra en tipo Arial
nmero 20.
A un botn de comando le aadimos el siguiente cdigo:
Private Sub bordes_Click()
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Color = 2
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Color = 2
End With
With Selection.Borders(xlEdgeBottom)
10
.LineStyle = xlDouble
.Color = 2
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Color = 2
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlDouble
.Color = 2
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlDouble
.Color = 2
End With
With Selection.Font
.Name = "Arial"
.Size = 20
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
End With
With Selection.Interior
.ThemeColor = xlThemeColorAccent5
.TintAndShade = 0.4
End With
End Sub
Al ejecutar el programa sucede lo siguiente:
11
Ejemplo3: Hacer un programa que utilice la propiedad offset para rellenar celdas
de un color determinado.
En un botn de comando se introduce el siguiente cdigo:
Private Sub llenar_Click()
For i = 1 To 4
For j = 1 To 4
ActiveCell.Offset(i - 1, j - 1).Interior.ColorIndex = 5
Next
Next
End Sub
Donde se seale una celda, esta y sus vecinas son rellenadas con un color.
12
Luego de presionar el botn de comando.
1.4.2 Control Cajn de Listas (ListBox) .Despliega una lista de la cual puede seleccionarse un elemento. Se accede de la
siguiente manera:
Ejemplo1: Como primer ejemplo de uso de este control se pondrn los das de la
semana en las celdas de la C1 hasta la C7.
13
Luego se pone en la hoja el control ListBox.
Estando resaltado el control, se hace clic con botn derecho del ratn se
selecciona el campo Propiedades.
14
15
16
17
1.4.3 Control de nmero (Spin Button) .Este control hace variar un nmero asociado a una celda o a algn otro objeto. Se
accede de la siguiente manera:
18
19
Hacer doble clic sobre el control, para acceder al entorno de programacin, y
agregar el siguiente cdigo.
Volver a la hoja Excel y salir del modo de diseo. Al presionar el botn superior
aumenta el nmero de la celda A1 y ocurre lo contrario al presionar el botn
superior. En este caso los nmeros varan de cero a uno. Esto puede cambiarse
en los campos Max y Min del cuadro propiedades.
1.4.4 Botn de alternar (Toggle Button) .Este es un botn de alternancia y cuando se lo presiona queda asegurado y
cuando se lo vuelve a presionar queda suelto. Se accede de la siguiente manera:
20
21
Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
ActiveWindow.DisplayGridlines = False
Else
ActiveWindow.DisplayGridlines = True
End If
End Sub
Despus de salir del modo de diseo:
En este caso se borrar las rejillas y el botn parece hundido, o sea presionado.
22
1.4.5 Botn de Opcin (Option Button) .Este control sirve para escoger de una lista de opciones, o de una sola opcin. Se
accede de la siguiente manera:
23
Luego se aade el siguiente cdigo:
Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
For i = 1 To 5
Cells(1 + i, 7) = Cells(i + 1, 5) * Cells(i + 1, 6)
Next
End If
End Sub
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
For i = 1 To 5
Cells(1 + i, 7) = Cells(i + 1, 5) / Cells(i + 1, 6)
Next
End If
End Sub
Private Sub OptionButton3_Click()
If OptionButton3.Value = True Then
For i = 1 To 5
Cells(1 + i, 7) = Cells(i + 1, 5) + Cells(i + 1, 6)
Next
End If
End Sub
Private Sub OptionButton4_Click()
If OptionButton4.Value = True Then
For i = 1 To 5
Cells(1 + i, 7) = Cells(i + 1, 5) - Cells(i + 1, 6)
Next
End If
End Sub
24
Se
aade
una
tabla
con
los
siguientes
datos
ubicaciones:
1.4.6 Casilla de Verificacin (Check Box).Muestra una casilla de verificacin y una etiqueta para texto. Se utiliza en general
para establecer opciones. La diferencia con el control botn de opcin (option
button) es que con este control se pueden hacer mltiples selecciones. Se
accede de la siguiente manera:
25
Ejemplo: Crear un programa que cambie el aspecto de la celda A1, la cual tiene la
palabra Dante, segn las opciones introducidas en las casillas de verificacin, que
se muestran en la siguiente figura:
26
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Cells(1, 1).Font.Color = RGB(255, 0, 0)
Else
Cells(1, 1).Font.Color = RGB(0, 0, 0)
End If
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.Value = True Then
Cells(1, 1).Font.Bold = True
Else
Cells(1, 1).Font.Bold = False
End If
End Sub
Private Sub CheckBox3_Click()
If CheckBox3.Value = True Then
Cells(1, 1).Interior.ColorIndex = 6
Else
Cells(1, 1).Interior.ColorIndex = 0
End If
End Sub
Private Sub CheckBox4_Click()
If CheckBox4.Value = True Then
Cells(1, 1).Font.Italic = True
Else
Cells(1, 1).Font.Italic = False
End If
End Sub
Despus de salir del modo de diseo, al ejecutar el programa resulta lo siguiente:
27
28
1.6 USO DE LAS FUNCIONES DE EXCEL EN PROGRAMAS.Se pueden aprovechar las funciones que ya tiene incorporadas Excel, para
solucionar problemas de programacin. As por ejemplo, no es necesario insertar
cdigo para invertir una matriz, ya que Excel ya tiene incorporada esta funcin,
solo es necesario adaptarla de manera adecuada a las necesidades que se
tengan.
En Visual Basic, las funciones de Excel pueden ejecutarse mediante el objeto
WorksheetFunction.
Si la funcin se aplicar sobre un rango, es necesario definir variables de tipo
rango mediante Range y luego a esas variables se asigna el rango de celdas
correspondientes de la hoja de clculo.
El cdigo base es el siguiente:
Dim mirango As Range
Set mirango = Worksheets(Hoja1).Range(Cells(1, 1), Cells(n, n))
determinante = Application.WorksheetFunction.Mdeterm(mirango)
Explicacin:
Dim mirango As Range: Se define una variable, en este caso mirango, del tipo
Range.
29
Set mirango = Worksheets(Hoja1).Range(Cells(1, 1), Cells(n, n)): Mediante
Set se asigna el rango especificado por Range de la Hoja1 del objeto
Worksheets, a la variable mirango.
Determinante = Application.WorksheetFunction.Mdeterm(mirango): a la
variable determinante, se le asigna el resultado de la funcin Mdeterm.
Si se desea utilizar otro tipo de funcin, solo habr que cambiar lo que viene a
continuacin de Application.WorksheetFunction. , y podra ser cualquiera de las
funciones que tiene Excel, como se muestra a continuacin:
30
Set rango1 = Worksheets(Hoja1).Range(Cells(3, 1), Cells(2 + n, n))
Set rango2 = Worksheets(Hoja1).Range(Cells(3, n + 1), Cells(2 + n, n + 1))
Range(Cells(3, 2 + n), Cells(2 + n, 2 + n)).Font.Bold = True
Range(Cells(3, 2 + n), Cells(2 + n, 2 + n)).Font.Color = RGB(255, 0, 0)
Range(Cells(3, 2 + n), Cells(2 + n, 2 + n)) = _
Application.WorksheetFunction.Mmult(Application.WorksheetFunction.Minve
rse(rango1), rango2)
End Sub
31
CAPTULO II
ELEMENTOS DE PROGRAMACIN
2.1 VARIABLES.Las variables son trozos de memoria que el programa se reserva para almacenar
valores, tienen nombre y un tipo de dato. El tipo de dato de la variable determina
cmo se almacenan los bits que representan esos valores en la memoria del
equipo.
Si no se proporciona un tipo de dato, de forma predeterminada, la variable toma el
tipo de dato Variant. Este tipo puede representar diferentes tipos de datos en
distintas situaciones.
2.1.1 Tipos de datos
Tipo
Tamao
en
bytes
Boolean Binario
2
Byte
Entero corto
1
Integer
Entero
2
Long
Entero largo
4
Single
Real
Simple 4
precisin
Double
Real doble precisin 8
Currency Nmero con punto 8
decimal fijo
String
Cadena
de 10 + 1byte/car.
caracteres
Hasta 64K
Date
Fecha
8
Variant
Object
Descripcin
Fecha/Hora,
16 bytes
nmeros
enteros, byte/car.
reales, o caracteres cadenas
caracteres
Cualquier objeto
4
Rango
True o False
0 a 255
-32768 a 32768
-2147483648 a 2147483647
-3.40E38 a 3.40E38
-1.79E308 a 1.79E308
-9.22E14 a 9.22E14
0 a 65500 caracteres
1 de enero de 100 a 31 de
diciembre de 9999. Indica
tambin la hora desde
0:00:00 a 23:59:59
+ 1 F/h: como Date, nmeros:
en mismo rango que el tipo de
de valor almacenado.
Cualquier referencia a un
objeto
32
2.1.2 mbito de las variables
Variables
Locales
Variables
Estticas
Solo
son
reconocidas
en
el
procedimiento
en el que se
declararon
Conservan su
valor
entre
una llamada y
otra
al
procedimiento,
Se
declaran
con la palabra
reservada
Static
Variables a
nivel del
formulario
Puede
ser
compartida por
todos
los
procedimientos
de
ese
formulario. Se
declara
desplegando,
en la ventana
de cdigo, el
cuadro
lista
Objetos
y
seleccionando
General
Variables a
nivel del
mdulo
Para compartir
una
variable
entre todos los
formularios y
procedimientos
contenidos en
un
proyecto,
es necesario
declararla en
un mdulo de
dicho proyecto.
Variables
Pblicas
Variable
disponible
ms all del
mbito de un
procedimiento,
e incluso del
de
un
formulario
o
mdulo,
se
declara en un
mdulo de la
aplicacin, en
la seccin de
declaraciones
generales,
usando
la
palabra
Public
2.1.3 Matrices
Se declaran de la siguiente manera:
Dim nombre_matriz(tamao) As tipo, declara un vector desde 0 hasta tamao.
Dim vector(14) As Integer, declara un vector de 15 elementos, con nmeros
ndice que van de 0 a 14.
Dim vector(1 To 15) As Integer, declara un vector de 15 elementos, con nmeros
ndice que van de 1 a 15
Dim matriz(1 To 10, 1 To 20) As Single, declara una matriz de 10 filas por 20
columnas.
2.1.4 Matrices dinmicas
A veces no se sabe de antemano el tamao que tendr una matriz en un
procedimiento, y por tanto se le da el tamao ms grande posible, con lo cual se
ocupa mucha memoria innecesariamente.
Para evitar esto se puede asignar matrices de manera dinmica, de la siguiente
forma:
a) Declarar la matriz dinmica con una lista de dimensiones vaca.
Dim Matriz()
33
b) En el lugar ,del cdigo, requerido asignar el nmero real de elementos con
la instruccin ReDim.
ReDim Matriz(x+1)
2.1.5 Declaracin Explcita
Para forzar a que siempre se declaren variables, se debe aadir en la seccin
Declaraciones del mdulo de clase, de formulario la instruccin:
Option Explicit
34
2.2.3 Do While Loop
Si la condicin es falsa no ejecuta las instrucciones ni siquiera una vez.
Do While condicin
Instrucciones
Loop
35
36
37
2.3.3 Definir una funcin y asignarla a una celda.- Se puede asignar a celdas,
funciones hechas por el usuario, de la misma manera en la que se asigna una
funcin propia de Excel. Para esto se debe aadir la funcin a nivel de mdulo y
ah asignar el cdigo correspondiente. Luego en Excel se debe proceder de la
manera
tradicional
y
en
la
celda
elegida
poner:
=Nombe_Funcin(par1;par2;,parN) y luego Enter.
38
39
resultado
40
2.4 FUNCIONES DE ENTRADA Y SALIDA.2.4.1 Funcin InputBox.- Muestra un mensaje en un cuadro de dilogo, espera
que el usuario escriba un texto o haga clic en un botn y devuelve un tipo String
con el contenido del cuadro de texto.
Sintaxis
InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])
Solo es obligatorio poner prompt, el resto es opcional.
La sintaxis de la funcin InputBox consta de estos argumentos con nombre:
Parte
Descripcin
prompt
title
default
xpos
ypos
helpfile
41
Ayuda que se utilizar para proporcionar ayuda interactiva
para el cuadro de dilogo. Si se especifica helpfile, tambin
deber especificarse context.
context
Comentarios
Cuando se especifica tanto helpfile como context, el usuario puede presionar F1
(Windows) o Ayuda (Macintosh) para ver el tema de Ayuda correspondiente a
context. Algunas aplicaciones host, por ejemplo, Microsoft Excel, tambin agregar
automticamente un botn Ayuda al cuadro de dilogo. Si el usuario hace clic en
Aceptar o presiona Entrar , la funcin InputBox devuelve lo que haya en el cuadro
de texto. Si el usuario hace clic en Cancelar, la funcin devuelve una cadena de
caracteres de longitud cero ("").
Nota Si desea especificar ms que el primer argumento con nombre, debe
utilizar InputBox en una expresin. Si desea omitir algunos argumentos de
posicin, debe incluir el delimitador de coma correspondiente.
42
2.4.2 Funcin MsgBox.- Muestra un mensaje en un cuadro de dilogo, espera a
que el usuario haga clic en un botn y devuelve un tipo Integer correspondiente al
botn elegido por el usuario.
Sintaxis
MsgBox(prompt[, buttons][, title][, helpfile, context])
Solo es obligatorio poner prompt, el resto es opcional.
La sintaxis de la funcin MsgBox consta de estos argumentos con nombre:
Parte
Descripcin
prompt
buttons
title
helpfile
context
Valores
El argumento buttons tiene estos valores:
43
Constante
Valor
Descripcin
VbOKOnly
VbOKCancel
VbAbortRetryIgnore
VbYesNoCancel
VbYesNo
VbRetryCancel
VbCritical
16
VbQuestion
32
VbExclamation
48
VbInformation
64
VbDefaultButton1
VbDefaultButton2
256
VbDefaultButton3
512
VbDefaultButton4
768
VbApplicationModal
VbSystemModal
4096
VbMsgBoxHelpButton
16384
VbMsgBoxSetForeground 65536
VbMsgBoxRight
524288
44
VbMsgBoxRtlReading
1048576
Valor
Descripcin
vbOK
Aceptar
vbCancel
Cancelar
vbAbort
Anular
vbRetry
Reintentar
vbIgnore
Ignorar
vbYes
vbNo
No
Comentarios
Cuando se proporcionan tanto helpfile como context, el usuario puede presionar
F1 (Windows) o Ayuda (Macintosh) para ver el tema de Ayuda correspondiente al
context. Algunas aplicaciones host, por ejemplo Microsoft Excel, tambin agregan
automticamente un botn Ayuda al cuadro de dilogo.
Si el cuadro de dilogo cuenta con un botn Cancelar, presionar la tecla ESC
tendr el mismo efecto que hacer clic en este botn. Si el cuadro de dilogo
contiene un botn Ayuda, se suministra ayuda interactiva para ese cuadro de
dilogo. Sin embargo, no se devuelve valor alguno hasta que se hace clic en uno
de estos botones.
45
Nota Si desea especificar ms que el primer argumento con nombre, debe
utilizar MsgBox en una expresin. Si desea omitir algn argumento de posicin,
debe incluir el delimitador de coma correspondiente.
Ejemplo: Hacer un programa que muestre un mensaje de error y otro de
advertencia.
Private Sub CommandButton1_Click()
Dim a As Integer
a = MsgBox("Error", vbCritical, "Prueba de MsgBox")
End Sub
El resultado es el siguiente:
46
CAPTULO III
INTERRELACIN DE EXCEL CON VISUAL STUDIO
3.1 INTRODUCCIN.Hasta aqu solamente se utiliz Excel para elaborar todos los programas, y el
Editor de Visual Basic que se us era el que viene incorporado con Excel. Pero si
deseamos elaborar aplicaciones muy complejas, tendremos que utilizar el lenguaje
Visual Basic por separado y luego conectarlo con una hoja Excel.
Para esta parte es necesario tener instalado, en la computadora donde se trabaja,
el lenguaje Visual Basic, que es parte del paquete Visual Studio.
El entorno de Visual Basic es similar, sino igual, al Editor de Visual Basic que
viene incorporado con Excel. Por tanto todo lo aprendido hasta ahora nos sirve
para programar en este nuevo entorno.
3.2 APERTURA Y CERRADO DE EXCEL DESDE VISUAL BASIC.Este es el aspecto primordial que se debe aprender sobre la interrelacin entre
estas dos aplicaciones.
Tanto el archivo de la hoja Excel que se quiera abrir, como el programa que se
haya hecho en Visual Studio, deben estar en la misma carpeta.
Ejemplo: Hacer un programa en Visual Basic que permita abrir y cerrar una
hoja Excel.
a) Abrir el entorno de programacin Visual Studio. Seleccionar File, luego
New Project, luego Windows Forms Application.
47
48
49
d) Hacer doble clic sobre el primer botn y aadir el siguiente cdigo:
Private Sub abrir_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles abrir.Click
obj_Excel = CreateObject("Excel.Application")
With obj_Excel
.Workbooks.Open(ruta)
.Visible = True
End With
End Sub
50
h) Crear la hoja Excel que deseamos abrir y guardarla en la carpeta que este
dentro de : pruebaExcel pruebaExcel bin - Debug . En este caso el
archivo Excel es maria.xlsx
51
Presionar ejecutar
j) En el formulario que aparece hacer clic en el botn Abrir.
52
53
End Sub
Private Sub cerrar_Click()
hojaexcel.Workbooks.Close
End Sub
Private Sub desde_KeyPress(k As Integer)
If k = 13 Then hasta.SetFocus
End Sub
Private Sub hasta_KeyPress(k As Integer)
If k = 13 Then cada.SetFocus
End Sub
Private Sub cada_KeyPress(k As Integer)
If k = 13 Then porX.SetFocus
End Sub
Private Sub porX_KeyPress(k As Integer)
If k = 13 Then porY.SetFocus
End Sub
Private Sub porY_KeyPress(k As Integer)
If k = 13 Then grosor.SetFocus
End Sub
Private Sub grosor_KeyPress(k As Integer)
If k = 13 Then color.SetFocus
End Sub
Private Sub color_KeyPress(k As Integer)
If k = 13 Then dibujo.SetFocus
End Sub
Private Sub dibujo_Click()
Dim CX, CY As Single
Dim i, des, cad, has, pX, pY, fx, colo, groso As Single
Set hojaexcel = CreateObject("Excel.Application")
hojaexcel.Workbooks.Close
hojaexcel.Workbooks.Open FileName:=App.Path + "\calculo.xls"
With dibu
.DrawWidth = 1 'Pone el ancho de lnea en tamao 1
.ScaleMode = 1 'El modo de escala es 1
CX = .ScaleWidth / 2
CY = .ScaleHeight / 2
End With
For i = 1 To 20000
dibu.PSet (CX, i) 'dibuja la linea del eje vertical
dibu.PSet (i, CY) 'dibuja la lnea del eje horizontal
Next i
54
des = Val(desde.Text)
has = Val(hasta.Text)
cad = Val(cada.Text)
pX = Val(porX.Text)
pY = Val(porY.Text)
colo = Val(color.Text)
groso = Val(grosor.Text)
If colo > 15 Then
colo = 15
End If
dibu.DrawWidth = groso
For i = des To has Step cad
hojaexcel.Cells(2, 1) = i
fx = hojaexcel.Cells(2, 2)
dibu.PSet (CX + (i * pX), CY - fx * pY), QBColor(colo)
Next i
hojaexcel.Workbooks.Close
End Sub
c) Guardamos en una carpeta.
d) En la misma carpeta guardamos la hoja de calculo que nos servir para
introducir las formulas. Y la guardamos con el nombre que se le dio en
cdigo de Visual Basic, en este caso calculo.
e) Para ejecutar se presiona primero el botn ABRIR EXCEL, y ah se asigna
la funcin a la celda (2,2) tomando como parmetro la celda (2,1).
Funcin
Parmetro
En el grafico se puede ver la funcin f(x) = x^2
f) Luego se llenan los otros campos y se presiona Dibujar, el resultado es el
siguiente:
55
Explicacin:
For i = des To has Step cad
hojaexcel.Cells(2, 1) = i
fx = hojaexcel.Cells(2, 2)
dibu.PSet (CX + (i * pX), CY - fx * pY), QBColor(colo)
Next i
Cada que avanza el valor de i se va poniendo ese valor en las celda (2,1) y se
recoge su correspondiente valor de la celda (2,2) y se lo almacena en fx, con esos
valores se grafica mediante la instruccin PSet.
56
Option Explicit
Dim hojaexcel As Object
Private Sub abrir_Click()
Set hojaexcel = CreateObject("Excel.Application")
hojaexcel.Workbooks.Open FileName:=App.Path + "\datos.XLS"
hojaexcel.Visible = True
End Sub
Private Sub cerrar_Click()
hojaexcel.Workbooks.Close
End Sub
Private Sub dibujar_Click()
Dim X1, X2, Y1, Y2, XC, YC, XP1, XP2, YP1, YP2, aux1 As Single
Dim ne, nn, aux2, i, j As Integer
Dim COR(60, 6) As Single
Set hojaexcel = CreateObject("Excel.Application")
hojaexcel.Workbooks.Open FileName:=App.Path + "\datos.XLS"
With dibujonormal
.DrawWidth = 1
.Cls
.ScaleMode = 3
XC = .ScaleWidth * 0.08
YC = .ScaleHeight - .ScaleHeight * 0.08
X2 = .ScaleWidth
Y2 = .ScaleHeight
dibujonormal.Line (XC, 0)-(XC, Y2), RGB(0, 255, 0) 'linea vertical
dibujonormal.Line (0, YC)-(X2, YC), RGB(0, 255, 0) 'linea horizontal
End With
dibujonormal.DrawWidth = 2
ne = hojaexcel.Cells(2, 8)
nn = hojaexcel.Cells(2, 7)
For i = 1 To ne
'Calcula xi,yi,xj,yj
COR(i, 1) = hojaexcel.Cells(1 + hojaexcel.Cells(1 + i, 5), 2)
COR(i, 2) = hojaexcel.Cells(1 + hojaexcel.Cells(1 + i, 5), 3)
COR(i, 3) = hojaexcel.Cells(1 + hojaexcel.Cells(1 + i, 6), 2)
COR(i, 4) = hojaexcel.Cells(1 + hojaexcel.Cells(1 + i, 6), 3)
Next
aux1 = 0
aux2 = 0
57
For i = 1 To nn
For j = 1 To 2
If hojaexcel.Cells(i + 1, 1 + j) >= aux1 Then
aux1 = hojaexcel.Cells(i + 1, j + 1)
aux2 = j
End If
Next
Next
For i = 1 To ne 'Dibuja las lineas
X1 = COR(i, 1)
Y1 = COR(i, 2)
X2 = COR(i, 3)
Y2 = COR(i, 4)
Select Case aux2
Case 1
If X1 = aux1 Then
X1 = 0.8 * 515
Else
X1 = Abs((X1 / aux1)) * 0.8 * 515
End If
Y1 = 412 * Y1 / aux1
If X2 = aux1 Then
X2 = 0.8 * 515
Else
X2 = Abs((X2 / aux1)) * 0.8 * 515
End If
Y2 = 412 * Y2 / aux1
Case 2
If Y1 = aux1 Then
Y1 = 0.8 * 392
Else
Y1 = Abs((Y1 / aux1)) * 0.8 * 392
End If
X1 = 314 * X1 / aux1
If Y2 = aux1 Then
Y2 = 0.8 * 392
Else
Y2 = Abs((Y2 / aux1)) * 0.8 * 392
End If
58
X2 = 314 * X2 / aux1
End Select
dibujonormal.Line (XC + X1, YC - Y1)-(XC + X2, YC - Y2), RGB(0, 0, 255)
Next
hojaexcel.Workbooks.Close
End Sub
Private Sub Form_Load()
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
End Sub
Private Sub salir_Click()
End
End Sub
c) Guardamos en alguna carpeta, y en la misma creamos la hoja de clculo que
recibir los datos, esta hoja la guardamos con el nombre de datos.
59
60
61
CAPITULO IV
APLICACIONES NUMERICAS
4.1 INTRODUCCIN.La hoja de clculo Excel est orientada esencialmente al clculo numrico y los
programas que se hagan con ella deben tratar de aprovechar esas funciones y
habilidades. Muchas de estas funciones no se muestran directamente, sino que se
debe cargarlas.
Y naturalmente, mediante programacin se puede abarcar muchsimo mas.
62
63
La celda B6 indica que tan cercanas de cero estn ambas funciones, se eleva al
cuadrado para evitar restas con nmeros negativos.
Luego se elige la opcin Solver en la ficha Datos.
64
65
La solucin es la siguiente:
x=2, y=3
Ejemplo 2: Encontrar una raz de f(x) = x cos x
Para solucionar este problema se introduce un valor de x en una celda y se
destina otra celda para f(x).
66
Se presiona Resolver
Raz
4.3 PROGRAMAS PARA CALCULO NUMERICO.Ejemplo: Hacer un programa que encuentre races por el mtodo de Newton.
Primero se crean los siguientes botones en una hoja Excel.
67
Y se asigna los siguientes cdigos a cada uno de ellos.
Private Sub Borrar_Click()
Range("A7:K500").ClearContents
End Sub
Private Sub Calcular_Click()
Dim i, n As Integer
Dim x0, Y, Y1, x, h As Single
x0 = Cells(5, 3)
n = Cells(5, 4)
Range("A7:H7").Font.Bold = True
Range("A7:H7").Font.Color = RGB(0, 0, 255)
Cells(7, 1) = "N Iter"
Cells(7, 2) = "x"
Cells(7, 3) = "f ' (x)"
Cells(7, 4) = "f(x)"
x = x0
h = 0.000001
For i = 0 To n
Cells(8 + i, 1) = i
Cells(5, 1) = x
Y = Cells(5, 2)
Cells(5, 1) = x + h
Y1 = Cells(5, 2)
Cells(5, 1) = x
Y1 = (Y1 - Cells(5, 2)) / h
Cells(8 + i, 2) = x
x = x - Y / Y1
Cells(8 + i, 3) = Y1
Cells(8 + i, 4) = Y
Next
Cells(5, 6) = x
End Sub
Private Sub Tabla_Click()
Dim i, n, cont As Integer
Dim a, c As Single
a = Cells(5, 8)
c = Cells(5, 9)
n = Round(c - a, 0)
Range("I7:J7").Font.Bold = True
Range("I7:J7").Font.Color = RGB(0, 0, 255)
Cells(7, 8) = "x"
Cells(7, 9) = "y(x)"
cont = 0
For i = a To c
cont = cont + 1
68
Cells(7 + cont, 8) = i
Cells(5, 1) = i
Cells(7 + cont, 9) = Cells(5, 2)
Next
End Sub
Si se quiere hallar la solucin de la ecuacin x^3 -155 = 0 se ponen los datos y se
obtiene el siguiente resultado.
69
CAPITULO V
USO DEL GRABADOR DE MACROS
5.1 DESCRIPCIN.El grabador de Macros, es una herramienta que permite programar tareas de
manera automtica, o sea programar sin saber programar.
Podemos aprender a programar viendo como el grabador de Macros genera el
cdigo en Visual Basic.
El grabador de Macros tiene los siguientes iconos:
empezar a grabar se presiona la flecha y para detener el punto rojo.
. Para
, el
70
c) Todo lo que hagamos a partir de ahora ser grabado por la Macro, por lo
tanto es importante no cometer errores, ya que estos tambin serian
grabados.
luego
y presionamos
71
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Font.Bold = True
Selection.Font.ColorIndex = 3
End Sub
Tenemos que tener en cuenta que muchas de las lneas de cdigo no son
necesaria para nuestro propsito, ya que solo queramos centrar, poner en negrilla
y poner en color rojo.
Ese cdigo corresponde a las lneas:
Range("E6:F7").Select
.HorizontalAlignment = xlCenter
Selection.Font.Bold = True
Selection.Font.ColorIndex = 3
El resto es cdigo innecesario para nuestro propsito.
f(x)
100
81
64
49
36
25
16
9
4
1
0
1
4
9
16
25
36
72
7
8
9
10
49
64
81
100
73
g) De la misma manera , que en el primer ejemplo, vemos el cdigo generado
.
Sub dibujo()
'
' dibujo Macro
' Macro grabada el 10/7/2006 por Dante
'
' Acceso directo: CTRL+s
'
Range("A2:B22").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A2:B22"),
PlotBy:= _
xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Prueba"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "x"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "y=x^2"
End With
End Sub
Si deseamos, todo ese cdigo podemos trasladarlo a un botn de comando
que ejecute esa accin cuando lo presionemos.
Es importante practicar modificando pequeos aspectos y viendo como se
modifica el cdigo.
El tipo de grafico se encuentra en la lnea:
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
Modificando esta lnea podemos modificar el tipo de grafico.