Omet navegació

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ó Shell
EnviarTeclas: 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 €.