SlideShare a Scribd company logo
1 of 55
Introducció a Visual Basic for Applications
Jaime Rodriguez Claver
jaime.rodriguez@iri.cat
Institut de Recerca en Enginyeria Informàtica - IRI
Introducció a Visual Basic for Applications

Programa
 Visual Basic for Applications
 Entorn de desenvolupament
 La nostra primera Macro (gravada)
 Macros segures
 Sintaxis
• Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Visual Basic for Applications
Què és?
 Llenguatge de programació integrat en les aplicacions de Microsoft Office
 Basat en Visual Basic
Què ens permet?
 Programar Macros
 Desenvolupar aplicacions d’escriptori basades en Office
Per a què?
 Ampliar funcionalitats
 Automatitzar tasques quotidianes
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Entorn de desenvolupament
Com entrar-hi
 Afegir pestanya Programador
Introducció a Visual Basic for Applications

Entorn de desenvolupament
Com entrar-hi
 Seleccionar Visual Basic

o combinació de Tecles
 Alt + F11
Introducció a Visual Basic for Applications

Entorn de desenvolupament
En ell editarem les nostres Macros mitjançant programació en VBA
Introducció a Visual Basic for Applications

Entorn de desenvolupament
Barra de menús i eines
Opcions de configuració, importació/exportació, eines d’edició, depuració i execució,...
Explorador de projectes
Accés i edició dels projectes i dels seus objectes
Finestra de propietats
Configuració i edició dels objectes, formularis i controls
Àrea de treball
Generació de codi
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

La nostra primera Macro (gravada)
Introducció a Visual Basic for Applications

La nostra primera Macro (gravada)
A l’entorn de programació hem generat el següent codi
Introducció a Visual Basic for Applications

La nostra primera Macro (gravada)
Guardarem l’arxiu amb la macro generada però, necessitarà un format compatible:
Microsoft Word
.docm
Microsoft Excel
.xlsm
Extensió “habilitada per a Macros”
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Macro segures
El codi VBA és prou potent com per provocar un desgavell al nostra ordinador
Què podem fer?
Aplicar una política de seguretat adequada
Quines possibilitats hi ha?
Deshabilitar les Macros
Preguntar cada vegada
Habilitar només les Macros de confiança
Habilitar-les totes
Introducció a Visual Basic for Applications

Macro segures
Menú de configuració de la protecció (o confiança) contra Macros
Introducció a Visual Basic for Applications

Macro segures
Crear un Certificat Digital
 Identifiquem qui a creat aquelles Macros
 Podrem confiar en les Macros firmades per certificats de confiança
Introducció a Visual Basic for Applications

Macro segures
Firmar un document amb un Certificat Digital
 Identificarem aquest document amb Macros com de confiança
 El nostre Office no ens deshabilitarà les Macros d’aquest document
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Sintaxis
Un programa està composat per
 Procediments
 Instruccions
 Crides
 Variables
 Dades
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
•
Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Procediments
Els procediments estan composats per
 Seqüència d’instruccions ..
 .. definides amb una capçalera ..
 .. que les identifica amb un nom

N’hi ha de dos tipus
 Subrutines
 Funcions
Introducció a Visual Basic for Applications

Procediments
Subrutines
 Les instruccions estan empaquetades entre les clàusules
Sub nom_subrutina([llistat_de_paràmetres])
[seqüència d’instruccions]
End Sub
 Poden contenir paràmetres
 No retornen cap informació
Sub avis(missatge As String)
MsgBox(missatge)
End Sub
Introducció a Visual Basic for Applications

Procediments
Funcions
 Les instruccions estan empaquetades entre les clàusules
Function nom_subrutina([llistat_de_paràmetres])
_[parametre_retornat]
[seqüència d’instruccions]
End Function
 Poden contenir paràmetres
 Poden retornar informació
Function suma(x As Integer, y As Integer) As Integer
suma = x + y
End Function
Retornarà el resultat de la suma dels valors corresponents a x i y
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
•
Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Variables i Assignacions
Variables
 Contenen informació necessària per el programa
 Per exemple, extraccions de la realitat (nom, edat, alçada,...)
 El seu contingut pot variar en el transcurs del programa
 Definides per cert format, depenen del tipus d’informació que continguin
String
Text
Integer
Valors enters
Double
Valors decimals
Boolean
True (cert) o False (fals)
Variant Qualsevol dels valors anteriors
Introducció a Visual Basic for Applications

Variables i Assignacions
Assignacions
 Introduïm/Modifiquem un valor a una variable
Dim nom As String
nom = “Mireia”
Dim edat As Integer
edat = 22
Dim altura As Double
altura = 1.64
Dim casada As Boolean
casada = False

 Declaració de la variable del tipus de text
 Assignació del text Mireia a la variable nom
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
•
Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Expressions
Aritmètiques
 El resultat serà un valor numèric
Dim edat, x, y As Integer
..
edat = (x + 3*(y -1)) / 2
Dim altura, x, y As Double
..
altura = 1 + ((x Mod 10) / 10) + ((y Mod 10) * 0.01)
Introducció a Visual Basic for Applications

Expressions
Lògiques
 El resultat serà un valor True/False (cert o fals)
Dim solter, casat, divorciat, vidu As Boolean
..
solter = Not (casat Or divorciat Or vidu)
Dim compra, festiu As Double
Dim diners, preu As Double
..
compra = festiu And diners >= preu
Dim es_igual As Double
Dim paraula1, paraula2 As String
..
es_igual = paraula1 = paraula2
Introducció a Visual Basic for Applications

Expressions
Concatenadores
 El resultat serà un nou valor de text
Dim vocals As String
..
vocals = “aei” & “ou”
Dim subjecte, nom As String
..
subjecte = “En “ & nom
Dim oracio, subjecte, predicat As String
..
oracio = subjecte & predicat
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
• Expressions
•
Sentències condicionals
• Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Sentències Condicionals
Permeten en funció d’una condició seguir un camí o altre
La condició ha d’avaluar-se en True/False (cert o fals)
 variable Booleana
 expressió lògica
 informació Booleana retornada d’una funció
Introducció a Visual Basic for Applications

Sentències Condicionals
IF .. THEN ..
Només si es compleix la condició s’executen la seqüència d’instruccions
If condicio Then
[instruccions]
End If
If edat >= 65 Then
jubilat = True
End If
If edat < 25 And aturat Then
inem = inem + 1
atur_juvenil = atur_juvenil + 1
End If
Sinó es complís la condició, no s'executarien les instruccions
Introducció a Visual Basic for Applications

Sentències Condicionals
IF .. THEN .. ELSE
Depenen si es compleix la condició s’executen una o altre seqüència d’instruccions
If condicio Then
[instruccions]
Else
[instruccions_alternatives]
End If
If edat >= 65 Then
jubilat = True
Else
jubilat = False
End If
Sinó es complís la condició, s'executarien les instruccions alternatives
Introducció a Visual Basic for Applications

Sentències Condicionals
IIF
Model simplificat per assignacions depenen de la condició
variable = IIf(condició, valor_si_cert, valor_si_fals)
jubilat = IIf(edat >= 65, True, False)
persona = IIf(edat < 90, "adolescent", "adult")
posicio = IIf(primer, 1, 2)
posicio = IIf(Not primer, 1, 2)
valor = IIf(opcio1 And opcio2, 3.14, 0.2)
Si es complís la condició, la variable agafarà el primer valor, sinó el segon.
Introducció a Visual Basic for Applications

Sentències Condicionals
Condicionals Enllaçats
Podem enllaçar-los i necessitem més d’una possible opció
If condicio Then
[instruccions]
Else If
[instruccions_alternatives1]
..
Else
[instruccions_alternativesN]
End If
If angle < 90 Then
tipus = “agut”
Else If angle > 90 Then
tipus = “obtús”
Else
tipus = “recte”
End If
Introducció a Visual Basic for Applications

Sentències Condicionals
SELECT CASE
Per avaluar diferents condicions d’una mateixa variable pot ser-nos menys engorrós
Select Case variable
Case cas1:
[instruccions_cas_1]
..
Case casN:
[instruccions_cas_N]
End Select
Select Case opcio
Case 1:
menu = “sopa i peix”
Case 2:
menu = “pasta i bistec”
Case 3:
menu = “amanida i truita”
End Select
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
•
Sentències iteratives
• Crides
• Control d’errors
Introducció a Visual Basic for Applications

Sentències Iteratives
Permeten en funció d’una condició repetir un procés
La condició ha d’avaluar-se en True/False (cert o fals)
 variable Booleana
 expressió lògica
 informació Booleana retornada d’una funció
Introducció a Visual Basic for Applications

Sentències Iteratives
FOR .. NEXT
La seqüència d’instruccions s’executa un nombre determinat de vegades
For condicio_inicial To condicio_final
[instruccions]
Next
For edat = 0 To 25
MsgBox(“En Marcel té “ & Str(edat) & “ anys”)
Next
For i = 1 To 10
anys = anys + 1
dies_febrer = IIf(any Mod 4 = 0, 29, 28)
Next i
En el moment que deixa de complir-se la condició, ja no s'executen les
instruccions
Introducció a Visual Basic for Applications

Sentències Iteratives
FOR EACH .. NEXT
La seqüència d’instruccions s’executa per cada element de la llista
For element To llistat_elements
[instruccions]
Next element
For Each nom In llista_noms
MsgBox(“Bon dia “ & nom)
Next
For numero In llista_numeros
If numero = numero_a_buscar Then trobat = True
Next numero
Quan ja hem visitat tots els elements, deixen d'executar-se les instruccions
Introducció a Visual Basic for Applications

Sentències Iteratives
WHILE .. WEND
La seqüència d’instruccions s’executa mentre es compleixi la condició
While condicio
[instruccions]
Wend
While Not trobat And i < 25
If alumne[i] = “Mercè” Then
i = i + 1
Wend

trobat = True

While aleatori <> 5
aleatori = Int((maxim –minim + 1) * Rnd + minim)
c = c + 1
Wend
En el moment que deixa de complir-se la condició, ja no s'executen les
instruccions
Introducció a Visual Basic for Applications

Sentències Iteratives
DO [While|Until] .. LOOP
La seqüència d’instruccions s’executa:
 mentre es compleixi la condició (While)
 fins que es compleixi la condició (Until)
Do [While|Until] condicio
[instruccions]
loop
Do While aleatori <> 5
aleatori = Int((maxim –minim + 1) * Rnd + minim)
c = c + 1
Loop
Do Until aleatori = 5
aleatori = Int((maxim –minim + 1) * Rnd + minim)
c = c + 1
Loop
Dos sentències iteratives que fan el mateix, observeu les diferències
Introducció a Visual Basic for Applications

Sentències Iteratives
DO .. LOOP [While|Until]
La seqüència d’instruccions s’executa i posteriorment comprova la condició:
 si se segueix complint, segueix (While)
 fins que no es compleixi segueix (Until)
Do
[instruccions]
loop [While|Until] condicio
Do
aleatori = Int((maxim –minim + 1) * Rnd + minim)
c = c + 1
Loop While aleatori <> 5
Do
aleatori = Int((maxim –minim + 1) * Rnd + minim)
c = c + 1
Loop Until aleatori = 5
Ens assegurem així que les instruccions s’executin almenys una vegada
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
•
Crides
• Control d’errors
Introducció a Visual Basic for Applications

Crides
Els procediments que haurem creat en el nostre codi s’executaran quan els invoquem.
Aquest procés d’invocació l’anomenem crida.
Dos tipus:
 Crides de Subrutines o Funcions sense paràmetre de retorn
Call nom_procediment([parametre1, .., parametreN])
 Crides de Funcions amb paràmetre de retorn
Resultat = nom_funcio([parametre1, .., parametreN])
Introducció a Visual Basic for Applications

Crides
Sub benvinguda(nom As String)
MsgBox ("Hola " & nom)
End Sub
Function avui_som() As String
avui_som = Date
End Function
Function despedida()
MsgBox ("Fins aviat")
End Function
Si executem..
Call benvinguda("Muriel")
data = avui_som()
MsgBox ("La data d'avui és " & data)
Call despedida
Introducció a Visual Basic for Applications

Crides
Sub benvinguda(nom As String)
MsgBox ("Hola " & nom)
End Sub
Function avui_som() As String
avui_som = Date
End Function
Function despedida()
MsgBox ("Fins aviat")
End Function
Si executem..
Call benvinguda("Muriel")
MsgBox ("La data d'avui és " & avui_som())
Call despedida
Introducció a Visual Basic for Applications

Programa






Visual Basic for Applications
Entorn de desenvolupament
La nostra primera Macro (gravada)
Macros segures
Sintaxis
• Procediments
• Variables i assignacions
• Expressions
• Sentències condicionals
• Sentències iteratives
• Crides
•
Control d’errors
Introducció a Visual Basic for Applications

Control d’Errors
Ens podem trobar que el nostre codi provoqui un error d’execució
Què passarà?
 S’aturarà l’execució del programa
 Mostrarà un missatge d’error

Com podem evitar-ho?
 Preveient totes les possibles execucions..
 .. i l’ús d’instruccions de gestió d’errors
Introducció a Visual Basic for Applications

Control d’Errors
Quan acostumen a sorgir errors d’execució?
 Contexts d’execució no previstos pel programador (accés a objects buit, que no
existeix, o que ja s’han eliminat, divisions entre 0, ...)
 Accés a elements externs que ens provoquen l’error (bases de dades, altres
arxius, ...)
 L’usuari no introdueix informació o ho fa en un format no previst, ...
Introducció a Visual Basic for Applications

Control d’Errors
GoTo
Salta fins l’etiqueta especificada (no executa la instrucció ni les que hi ha fins
l’etiqueta)
On Error GoTo etiqueta

On Error GoTo error
x = y / z
y = 2
...
error:
MsgBox(“Divisió entre 0?”)
Si falla x = y / z la instrucció y = 2 NO s’executa
Introducció a Visual Basic for Applications

Control d’Errors
Resume Next
Salta només la instrucció que falla
On Error Resume Next

On Error Resume error
x = y / z
z = 2
Si falla x = y / z la instrucció y = 2 SI s’executa
Introducció a Visual Basic for Applications

Gràcies
jaime.rodriguez@iri.cat
Barcelona Activa, 2012

More Related Content

Viewers also liked

Surya epaper 11 desember 2013
Surya epaper 11 desember 2013Surya epaper 11 desember 2013
Surya epaper 11 desember 2013
Portal Surya
 
The Trento Experience for the IEEE Smart Cities Initiative
The Trento Experience for the IEEE Smart Cities InitiativeThe Trento Experience for the IEEE Smart Cities Initiative
The Trento Experience for the IEEE Smart Cities Initiative
Sergio Cagol
 
Electronic courses why you should opt for
Electronic courses   why you should opt forElectronic courses   why you should opt for
Electronic courses why you should opt for
jackchristian
 
Manohar electric-machinery-store
Manohar electric-machinery-storeManohar electric-machinery-store
Manohar electric-machinery-store
Mr. Sanjay Taneja
 

Viewers also liked (9)

HTTP Basic
HTTP BasicHTTP Basic
HTTP Basic
 
Criminología I
Criminología ICriminología I
Criminología I
 
Bailiffscourt
BailiffscourtBailiffscourt
Bailiffscourt
 
Surya epaper 11 desember 2013
Surya epaper 11 desember 2013Surya epaper 11 desember 2013
Surya epaper 11 desember 2013
 
Metodología de búsqueda
Metodología de búsquedaMetodología de búsqueda
Metodología de búsqueda
 
The Trento Experience for the IEEE Smart Cities Initiative
The Trento Experience for the IEEE Smart Cities InitiativeThe Trento Experience for the IEEE Smart Cities Initiative
The Trento Experience for the IEEE Smart Cities Initiative
 
Electronic courses why you should opt for
Electronic courses   why you should opt forElectronic courses   why you should opt for
Electronic courses why you should opt for
 
Sleep Quality and Quality of Life in Adults with Type 2 Diabetes
Sleep Quality and Quality of Life in Adults with Type 2 DiabetesSleep Quality and Quality of Life in Adults with Type 2 Diabetes
Sleep Quality and Quality of Life in Adults with Type 2 Diabetes
 
Manohar electric-machinery-store
Manohar electric-machinery-storeManohar electric-machinery-store
Manohar electric-machinery-store
 

Vba

  • 1. Introducció a Visual Basic for Applications Jaime Rodriguez Claver jaime.rodriguez@iri.cat Institut de Recerca en Enginyeria Informàtica - IRI
  • 2. Introducció a Visual Basic for Applications Programa  Visual Basic for Applications  Entorn de desenvolupament  La nostra primera Macro (gravada)  Macros segures  Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 3. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 4. Introducció a Visual Basic for Applications Visual Basic for Applications Què és?  Llenguatge de programació integrat en les aplicacions de Microsoft Office  Basat en Visual Basic Què ens permet?  Programar Macros  Desenvolupar aplicacions d’escriptori basades en Office Per a què?  Ampliar funcionalitats  Automatitzar tasques quotidianes
  • 5. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 6. Introducció a Visual Basic for Applications Entorn de desenvolupament Com entrar-hi  Afegir pestanya Programador
  • 7. Introducció a Visual Basic for Applications Entorn de desenvolupament Com entrar-hi  Seleccionar Visual Basic o combinació de Tecles  Alt + F11
  • 8. Introducció a Visual Basic for Applications Entorn de desenvolupament En ell editarem les nostres Macros mitjançant programació en VBA
  • 9. Introducció a Visual Basic for Applications Entorn de desenvolupament Barra de menús i eines Opcions de configuració, importació/exportació, eines d’edició, depuració i execució,... Explorador de projectes Accés i edició dels projectes i dels seus objectes Finestra de propietats Configuració i edició dels objectes, formularis i controls Àrea de treball Generació de codi
  • 10. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 11. Introducció a Visual Basic for Applications La nostra primera Macro (gravada)
  • 12. Introducció a Visual Basic for Applications La nostra primera Macro (gravada) A l’entorn de programació hem generat el següent codi
  • 13. Introducció a Visual Basic for Applications La nostra primera Macro (gravada) Guardarem l’arxiu amb la macro generada però, necessitarà un format compatible: Microsoft Word .docm Microsoft Excel .xlsm Extensió “habilitada per a Macros”
  • 14. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 15. Introducció a Visual Basic for Applications Macro segures El codi VBA és prou potent com per provocar un desgavell al nostra ordinador Què podem fer? Aplicar una política de seguretat adequada Quines possibilitats hi ha? Deshabilitar les Macros Preguntar cada vegada Habilitar només les Macros de confiança Habilitar-les totes
  • 16. Introducció a Visual Basic for Applications Macro segures Menú de configuració de la protecció (o confiança) contra Macros
  • 17. Introducció a Visual Basic for Applications Macro segures Crear un Certificat Digital  Identifiquem qui a creat aquelles Macros  Podrem confiar en les Macros firmades per certificats de confiança
  • 18. Introducció a Visual Basic for Applications Macro segures Firmar un document amb un Certificat Digital  Identificarem aquest document amb Macros com de confiança  El nostre Office no ens deshabilitarà les Macros d’aquest document
  • 19. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 20. Introducció a Visual Basic for Applications Sintaxis Un programa està composat per  Procediments  Instruccions  Crides  Variables  Dades
  • 21. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 22. Introducció a Visual Basic for Applications Procediments Els procediments estan composats per  Seqüència d’instruccions ..  .. definides amb una capçalera ..  .. que les identifica amb un nom N’hi ha de dos tipus  Subrutines  Funcions
  • 23. Introducció a Visual Basic for Applications Procediments Subrutines  Les instruccions estan empaquetades entre les clàusules Sub nom_subrutina([llistat_de_paràmetres]) [seqüència d’instruccions] End Sub  Poden contenir paràmetres  No retornen cap informació Sub avis(missatge As String) MsgBox(missatge) End Sub
  • 24. Introducció a Visual Basic for Applications Procediments Funcions  Les instruccions estan empaquetades entre les clàusules Function nom_subrutina([llistat_de_paràmetres]) _[parametre_retornat] [seqüència d’instruccions] End Function  Poden contenir paràmetres  Poden retornar informació Function suma(x As Integer, y As Integer) As Integer suma = x + y End Function Retornarà el resultat de la suma dels valors corresponents a x i y
  • 25. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 26. Introducció a Visual Basic for Applications Variables i Assignacions Variables  Contenen informació necessària per el programa  Per exemple, extraccions de la realitat (nom, edat, alçada,...)  El seu contingut pot variar en el transcurs del programa  Definides per cert format, depenen del tipus d’informació que continguin String Text Integer Valors enters Double Valors decimals Boolean True (cert) o False (fals) Variant Qualsevol dels valors anteriors
  • 27. Introducció a Visual Basic for Applications Variables i Assignacions Assignacions  Introduïm/Modifiquem un valor a una variable Dim nom As String nom = “Mireia” Dim edat As Integer edat = 22 Dim altura As Double altura = 1.64 Dim casada As Boolean casada = False  Declaració de la variable del tipus de text  Assignació del text Mireia a la variable nom
  • 28. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 29. Introducció a Visual Basic for Applications Expressions Aritmètiques  El resultat serà un valor numèric Dim edat, x, y As Integer .. edat = (x + 3*(y -1)) / 2 Dim altura, x, y As Double .. altura = 1 + ((x Mod 10) / 10) + ((y Mod 10) * 0.01)
  • 30. Introducció a Visual Basic for Applications Expressions Lògiques  El resultat serà un valor True/False (cert o fals) Dim solter, casat, divorciat, vidu As Boolean .. solter = Not (casat Or divorciat Or vidu) Dim compra, festiu As Double Dim diners, preu As Double .. compra = festiu And diners >= preu Dim es_igual As Double Dim paraula1, paraula2 As String .. es_igual = paraula1 = paraula2
  • 31. Introducció a Visual Basic for Applications Expressions Concatenadores  El resultat serà un nou valor de text Dim vocals As String .. vocals = “aei” & “ou” Dim subjecte, nom As String .. subjecte = “En “ & nom Dim oracio, subjecte, predicat As String .. oracio = subjecte & predicat
  • 32. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 33. Introducció a Visual Basic for Applications Sentències Condicionals Permeten en funció d’una condició seguir un camí o altre La condició ha d’avaluar-se en True/False (cert o fals)  variable Booleana  expressió lògica  informació Booleana retornada d’una funció
  • 34. Introducció a Visual Basic for Applications Sentències Condicionals IF .. THEN .. Només si es compleix la condició s’executen la seqüència d’instruccions If condicio Then [instruccions] End If If edat >= 65 Then jubilat = True End If If edat < 25 And aturat Then inem = inem + 1 atur_juvenil = atur_juvenil + 1 End If Sinó es complís la condició, no s'executarien les instruccions
  • 35. Introducció a Visual Basic for Applications Sentències Condicionals IF .. THEN .. ELSE Depenen si es compleix la condició s’executen una o altre seqüència d’instruccions If condicio Then [instruccions] Else [instruccions_alternatives] End If If edat >= 65 Then jubilat = True Else jubilat = False End If Sinó es complís la condició, s'executarien les instruccions alternatives
  • 36. Introducció a Visual Basic for Applications Sentències Condicionals IIF Model simplificat per assignacions depenen de la condició variable = IIf(condició, valor_si_cert, valor_si_fals) jubilat = IIf(edat >= 65, True, False) persona = IIf(edat < 90, "adolescent", "adult") posicio = IIf(primer, 1, 2) posicio = IIf(Not primer, 1, 2) valor = IIf(opcio1 And opcio2, 3.14, 0.2) Si es complís la condició, la variable agafarà el primer valor, sinó el segon.
  • 37. Introducció a Visual Basic for Applications Sentències Condicionals Condicionals Enllaçats Podem enllaçar-los i necessitem més d’una possible opció If condicio Then [instruccions] Else If [instruccions_alternatives1] .. Else [instruccions_alternativesN] End If If angle < 90 Then tipus = “agut” Else If angle > 90 Then tipus = “obtús” Else tipus = “recte” End If
  • 38. Introducció a Visual Basic for Applications Sentències Condicionals SELECT CASE Per avaluar diferents condicions d’una mateixa variable pot ser-nos menys engorrós Select Case variable Case cas1: [instruccions_cas_1] .. Case casN: [instruccions_cas_N] End Select Select Case opcio Case 1: menu = “sopa i peix” Case 2: menu = “pasta i bistec” Case 3: menu = “amanida i truita” End Select
  • 39. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 40. Introducció a Visual Basic for Applications Sentències Iteratives Permeten en funció d’una condició repetir un procés La condició ha d’avaluar-se en True/False (cert o fals)  variable Booleana  expressió lògica  informació Booleana retornada d’una funció
  • 41. Introducció a Visual Basic for Applications Sentències Iteratives FOR .. NEXT La seqüència d’instruccions s’executa un nombre determinat de vegades For condicio_inicial To condicio_final [instruccions] Next For edat = 0 To 25 MsgBox(“En Marcel té “ & Str(edat) & “ anys”) Next For i = 1 To 10 anys = anys + 1 dies_febrer = IIf(any Mod 4 = 0, 29, 28) Next i En el moment que deixa de complir-se la condició, ja no s'executen les instruccions
  • 42. Introducció a Visual Basic for Applications Sentències Iteratives FOR EACH .. NEXT La seqüència d’instruccions s’executa per cada element de la llista For element To llistat_elements [instruccions] Next element For Each nom In llista_noms MsgBox(“Bon dia “ & nom) Next For numero In llista_numeros If numero = numero_a_buscar Then trobat = True Next numero Quan ja hem visitat tots els elements, deixen d'executar-se les instruccions
  • 43. Introducció a Visual Basic for Applications Sentències Iteratives WHILE .. WEND La seqüència d’instruccions s’executa mentre es compleixi la condició While condicio [instruccions] Wend While Not trobat And i < 25 If alumne[i] = “Mercè” Then i = i + 1 Wend trobat = True While aleatori <> 5 aleatori = Int((maxim –minim + 1) * Rnd + minim) c = c + 1 Wend En el moment que deixa de complir-se la condició, ja no s'executen les instruccions
  • 44. Introducció a Visual Basic for Applications Sentències Iteratives DO [While|Until] .. LOOP La seqüència d’instruccions s’executa:  mentre es compleixi la condició (While)  fins que es compleixi la condició (Until) Do [While|Until] condicio [instruccions] loop Do While aleatori <> 5 aleatori = Int((maxim –minim + 1) * Rnd + minim) c = c + 1 Loop Do Until aleatori = 5 aleatori = Int((maxim –minim + 1) * Rnd + minim) c = c + 1 Loop Dos sentències iteratives que fan el mateix, observeu les diferències
  • 45. Introducció a Visual Basic for Applications Sentències Iteratives DO .. LOOP [While|Until] La seqüència d’instruccions s’executa i posteriorment comprova la condició:  si se segueix complint, segueix (While)  fins que no es compleixi segueix (Until) Do [instruccions] loop [While|Until] condicio Do aleatori = Int((maxim –minim + 1) * Rnd + minim) c = c + 1 Loop While aleatori <> 5 Do aleatori = Int((maxim –minim + 1) * Rnd + minim) c = c + 1 Loop Until aleatori = 5 Ens assegurem així que les instruccions s’executin almenys una vegada
  • 46. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 47. Introducció a Visual Basic for Applications Crides Els procediments que haurem creat en el nostre codi s’executaran quan els invoquem. Aquest procés d’invocació l’anomenem crida. Dos tipus:  Crides de Subrutines o Funcions sense paràmetre de retorn Call nom_procediment([parametre1, .., parametreN])  Crides de Funcions amb paràmetre de retorn Resultat = nom_funcio([parametre1, .., parametreN])
  • 48. Introducció a Visual Basic for Applications Crides Sub benvinguda(nom As String) MsgBox ("Hola " & nom) End Sub Function avui_som() As String avui_som = Date End Function Function despedida() MsgBox ("Fins aviat") End Function Si executem.. Call benvinguda("Muriel") data = avui_som() MsgBox ("La data d'avui és " & data) Call despedida
  • 49. Introducció a Visual Basic for Applications Crides Sub benvinguda(nom As String) MsgBox ("Hola " & nom) End Sub Function avui_som() As String avui_som = Date End Function Function despedida() MsgBox ("Fins aviat") End Function Si executem.. Call benvinguda("Muriel") MsgBox ("La data d'avui és " & avui_som()) Call despedida
  • 50. Introducció a Visual Basic for Applications Programa      Visual Basic for Applications Entorn de desenvolupament La nostra primera Macro (gravada) Macros segures Sintaxis • Procediments • Variables i assignacions • Expressions • Sentències condicionals • Sentències iteratives • Crides • Control d’errors
  • 51. Introducció a Visual Basic for Applications Control d’Errors Ens podem trobar que el nostre codi provoqui un error d’execució Què passarà?  S’aturarà l’execució del programa  Mostrarà un missatge d’error Com podem evitar-ho?  Preveient totes les possibles execucions..  .. i l’ús d’instruccions de gestió d’errors
  • 52. Introducció a Visual Basic for Applications Control d’Errors Quan acostumen a sorgir errors d’execució?  Contexts d’execució no previstos pel programador (accés a objects buit, que no existeix, o que ja s’han eliminat, divisions entre 0, ...)  Accés a elements externs que ens provoquen l’error (bases de dades, altres arxius, ...)  L’usuari no introdueix informació o ho fa en un format no previst, ...
  • 53. Introducció a Visual Basic for Applications Control d’Errors GoTo Salta fins l’etiqueta especificada (no executa la instrucció ni les que hi ha fins l’etiqueta) On Error GoTo etiqueta On Error GoTo error x = y / z y = 2 ... error: MsgBox(“Divisió entre 0?”) Si falla x = y / z la instrucció y = 2 NO s’executa
  • 54. Introducció a Visual Basic for Applications Control d’Errors Resume Next Salta només la instrucció que falla On Error Resume Next On Error Resume error x = y / z z = 2 Si falla x = y / z la instrucció y = 2 SI s’executa
  • 55. Introducció a Visual Basic for Applications Gràcies jaime.rodriguez@iri.cat Barcelona Activa, 2012