3.6 Sentències
- Assignació:
variable = expressió
- Condicional:
IF condició THEN
sentències
[ELSEIF condició THEN
sentències ]
[ELSE
sentències ]
END IF
- Condicional múltiple:
SELECT CASE expressió a comprovar
CASE llista
sentències
...
[CASE ELSE
sentències ]
END SELECT
- Bucle Do ...Loop
DO [{WHILE | UNTIL} condició]
sentències
LOOP
DO
sentències
LOOP [{WHILE | UNTIL} condició]
- Bucle For ... Next
FOR comptador = valor_inicial TO valor_final [ STEP increment]
sentències
NEXT [comptador]
- Bucle For Each... Next
És una variant del bucle For que permet que el comptador no siga numèric creixent (o decreixent) sinó que anirà agafant els valors d'una llista, d'un grup (que podrà ser un vector o un altre conjunt, com veurem més avant)
FOR EACH element IN grup
sentències
NEXT [element]
- Bucle While ... Wend
WHILE condició
sentències
WEND
En els dos primers bucles tenim la possibilitat de eixir directament (Exit Do, Exit For)
- Executar l'acció d'una macro: DoCmd.nom_acció_macro.
Així per exemple, podem obrir el formulari Departament amb
DoCmd.OpenForm "Departament"
Es poden fer quasi totes les accions que en les macros (no oblidem de posar-lo en anglès), excepte algunes perquè ja tenen la seua pròpia funció o mètode.
Les que no es poden fer són:
CuadroMsg: utilitzar directament la funció MsgBox
EstablecerValor: utilitzar l'operador = per a assignar.
DetenerMacro: no està disponible en Visual Basic.
DetenerTodasMacros: no està disponible en Visual Basic.
EjecutarCodigo: directament posar el nom de la funció o procediment
EjecutarAplicación: utilitzar la funció ShellEnviarTeclas: utilitzar directament la funció SendKeys
Exercici 3.9
Proveu la següent funció que trau la taula de multiplicar del 7.
Function Taula_7()
Dim i%
Dim s$
s = ""
For i = 1 To 10 Step 1 'si no posem step 1 igual incrementarà en 1
s = s & " 7 x " & i & " = " & 7 * i & Chr(10)
Next i
MsgBox (s)
End Function
Exercici 3.10
Fer una funció anomenada Imparells que mostre els nombres imparells entre 1 i 50.
Intenteu que el resultat es mostre en una única finestra, per la incomoditat de que mostre cadascun en una finestra (i en són 25). Ho podeu fer separant els numeros per espais en blanc, o baixant de línia (per a anar a una noval línia podeu fer incloure el caràcter de nova línia, que és chr(10)), tal i com està en l'exemple de la Taula del 7.
Incloure posteriorment un botó en el formulari Botons que quan s'aprete s'execute la funció anterior.
Exercici 3.11 (voluntari)
Incloure un altre botó en el formulari Botons que quan s'aprete s'execute la funció Sumar() (situada en el mòdul Funcions) la qual ha d'anar demanant números per mig de la funció inputbox() i els ha d'anar sumant, fins introduir el 0. Aleshores ha de traure el resultat de la suma.
Exercici 3.12
Copiar el següent procediment, per a provar la sentència FOR EACH
Sub vector()
Dim vec(5)
Dim element
vec(0) = 4 + 5
vec(1) = "Hola"
vec(2) = "Adéu"
vec(3) = Date
vec(4) = Time
For Each element In vec
MsgBox (element)
Next element
End Sub
Observeu que el vector és de 6 elements, i que l'últim element del vector no està inicialitzat, i per tant té el valor nul (per ser tot el vector Variant)
Exercici 3.13
Fer una altra vegada el control sobre el sou major de 4.000 €, però així com abans només s'avisava, ara donarem la possibilitat d'introduir-lo o no.
Per tant substituirem la macro incrustada que es va fer en l'exercici 2.8 per una funció associada a l'eixida del control Sou (estarà situada en el mòdul associat al formulari Empleat).
La funció MsgBox té els següents arguments:
MsgBox(comentari,botons_a_posar,títol_finestra,fitxer_ajuda,context) As botó_cont
Els botons a posar són constants definides que indiquen quins botons volem que isquen. En el nostre exemple posaríem vbYesNo, i la contestació que hem de mirar és vbNo (si s'ha apretat el botó de No), on posaríem l'acció DoCmd.CancelEvent. És a dir quedaria la condició d'aquesta manera
If MsgBox("Molt alt. Segur que vols el valor " & Sou & " ?", vbYesNo) = vbNo Then
Aneu en compte. El de dalt només s'ha d'executar si el sou és superior a 4.000 €.
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial SenseObraDerivada 2.5