Com utilitzar If-Then a Excel 2016 VBA

If-Then és l'estructura de control més important de VBA. Probablement utilitzareu aquesta ordre cada dia. Utilitzeu l'estructura If-Then quan vulgueu executar una o més sentències de manera condicional. La clàusula Else opcional, si s'inclou, us permet executar una o més declaracions si la condició que esteu provant no és certa. Aquí teniu un procediment CheckUser senzill, recodificat per utilitzar l'estructura If-Then-Else:

Sub CheckUser2()
  UserName = InputBox ("Introduïu el vostre nom: ")
  Si UserName = "Satya Nadella" Aleshores
    MsgBox ("Benvingut Satya...")
'...[Més codi aquí]...
  Altrament
    MsgBox "Ho sento. Només Satya Nadella pot fer-ho".
  Acaba si
End Sub

Si-Llavors exemples

La rutina següent mostra l'estructura If-Then sense la clàusula Else opcional:

Sub GreetMe ()
  Si el temps < 0,5, MsgBox "Bon dia"
End Sub

El procediment GreetMe utilitza la funció de temps de VBA per obtenir l'hora del sistema. Si l'hora actual és inferior a .5, la rutina mostra una salutació amistosa. Si el temps és superior o igual a 0,5, la rutina s'acaba i no passa res.

Per mostrar una salutació diferent si el temps és superior o igual a 0,5, podeu afegir una altra declaració If-Then després de la primera:

Sub GreetMe2()
  Si el temps < 0,5, MsgBox "Bon dia"
  Si el temps >= 0,5, MsgBox "Bona tarda"
End Sub

Observeu que >= (més gran o igual a) s'utilitza per a la segona instrucció If-Then. Això garanteix que tot el dia estigui cobert. Si s'hagués utilitzat > (més que) no apareixeria cap missatge si aquest procediment s'executés precisament a les 12:00 del migdia. Això és bastant improbable, però amb un programa important com aquest, no voleu córrer cap risc.

Un exemple If-Then-Else

Una altra aproximació al problema anterior utilitza la clàusula Else. Aquí teniu la mateixa rutina recodificada per utilitzar l'estructura If-Then-Else:

Sub GreetMe3()
  Si el temps < 0,5 Aleshores MsgBox "Bon dia" Si no _
    MsgBox "Bona tarda"
End Sub

Tingueu en compte que el caràcter de continuació de línia (guió baix) s'utilitza a l'exemple anterior. La declaració If-Then-Else és en realitat una declaració única. VBA proporciona una manera lleugerament diferent de codificar construccions If-Then-Else que utilitzen una instrucció End If. Per tant, el procediment GreetMe es pot reescriure com

Sub GreetMe4()
  Si Temps < 0,5 Aleshores
    MsgBox "Bon dia"
  Altrament
    MsgBox "Bona tarda"
  Acaba si
End Sub

De fet, podeu inserir qualsevol nombre d'instruccions a la part If i qualsevol nombre d'instruccions a la part Else. Aquesta sintaxi és més fàcil de llegir i fa que les declaracions siguin més curtes.

Què passa si necessiteu ampliar la rutina GreetMe per gestionar tres condicions: matí, tarda i vespre? Teniu dues opcions: Utilitzeu tres sentències If-Then o utilitzeu una estructura imbricada If-Then-Else. La nidificació significa col·locar una estructura If-Then-Else dins d'una altra estructura If-Then-Else. El primer enfocament, utilitzant tres declaracions If-Then, és més senzill:

Sub GreetMe5()
 Atenuar el missatge com a cadena
 Si el temps < 0,5, Msg = "Matí"
 Si el temps >= 0,5 i el temps < 0,75, Msg = "Tarda"
 Si el temps >= 0,75, Msg = "Vitre"
 MsgBox "Bo" i Msg
End Sub

S'ha afegit un nou gir amb l'ús d'una variable. La variable Msg obté un valor de text diferent, depenent de l'hora del dia. La declaració MsgBox mostra la salutació: Bon dia, Bona tarda o Bona tarda.

La rutina següent realitza la mateixa acció però utilitza una estructura If-Then-End If:

Sub GreetMe6()
  Atenuar el missatge com a cadena
  Si Temps < 0,5 Aleshores
    Msg = "Matí"
  Acaba si
  Si el temps >= 0,5 i el temps <0,75 aleshores
    Msg = "Tarda"
  Acaba si
  Si Temps >= 0,75 Aleshores
    Msg = "Vitre"
  Acaba si
  MsgBox "Bo" i Msg
End Sub

Utilitzant ElseIf

En els exemples anteriors, s'executa cada instrucció de la rutina. Una estructura una mica més eficient sortiria de la rutina tan bon punt es descobri que una condició és certa. Al matí, per exemple, el procediment hauria de mostrar el missatge Bon dia i després sortir, sense avaluar les altres condicions superflues.

Amb una petita rutina com aquesta, no us haureu de preocupar per la velocitat d'execució. Però per a aplicacions més grans en què la velocitat és crítica, hauríeu de conèixer una altra sintaxi per a l'estructura If-Then.

A continuació s'explica com podeu reescriure la rutina GreetMe utilitzant aquesta sintaxi:

Sub GreetMe7()
 Atenuar el missatge com a cadena
 Si Temps < 0,5 Aleshores
   Msg = "Matí"
 ElseIf Temps >= 0,5 I Temps <0,75 Aleshores
   Msg = "Tarda"
 Altrament
   Msg = "Vitre"
 Acaba si
 MsgBox "Bo" i Msg
End Sub

Quan una condició és certa, VBA executa les declaracions condicionals i acaba l'estructura If. En altres paraules, aquest procediment és una mica més eficient que els exemples anteriors. La compensació és que el codi és més difícil d'entendre.

Un altre exemple Si-Llavors

Aquí hi ha un altre exemple que utilitza la forma simple de l'estructura If-Then. Aquest procediment demana a l'usuari una quantitat i després mostra el descompte adequat, en funció de la quantitat que introdueixi l'usuari:

Sub ShowDiscount()
  Dim Quantitat As Long
  Redueix el descompte com a doble
  Quantitat = InputBox ("Introdueix la quantitat:")
  Si Quantitat > 0, descompte = 0,1
  Si la quantitat >= 25, aleshores descompte = 0,15
  Si Quantitat >= 50 Aleshores Descompte = 0,2
  Si la quantitat >= 75, aleshores descompte = 0,25
  MsgBox "Descompte: " & Descompte
End Sub

Observeu que cada instrucció If-Then d'aquesta rutina s'executa i el valor de Descompte pot canviar a mesura que s'executen les sentències. Tanmateix, la rutina finalment mostra el valor correcte de Descompte perquè les declaracions If-Then estan en ordre ascendent dels valors de Descompte.

El procediment següent realitza les mateixes tasques utilitzant la sintaxi alternativa ElseIf. En aquest cas, la rutina acaba immediatament després d'executar les declaracions per a una condició veritable:

Sub ShowDiscount2()
 Dim Quantitat As Long
 Redueix el descompte com a doble
 Quantitat = InputBox("Introdueix la quantitat: ")
 Si Quantitat > 0 I Quantitat < 25 Aleshores
  Descompte = 0,1
 ElseIf Quantitat >= 25 I Quantitat < 50 Aleshores
  Descompte = 0,15
 ElseIf Quantitat >= 50 I Quantitat < 75 Aleshores
  Descompte = 0,2
 ElseIf Quantitat >= 75 Aleshores
  Descompte = 0,25
 Acaba si
 MsgBox "Descompte: " & Descompte
End Sub

Aquestes múltiples estructures If-Then són bastant feixugues. És possible que vulgueu utilitzar l'estructura If-Then només per a decisions binàries simples.


Com bloquejar Microsoft Word dobrir fitxers en mode només de lectura a Windows

Com bloquejar Microsoft Word dobrir fitxers en mode només de lectura a Windows

Com bloquejar Microsoft Word d'obrir fitxers en mode de només lectura a Windows Microsoft Word obre fitxers en mode de només lectura, cosa que fa que sigui impossible editar-los? No us preocupeu, els mètodes es mostren a continuació

Com solucionar la impressió incorrecta de documents de Microsoft Word

Com solucionar la impressió incorrecta de documents de Microsoft Word

Com corregir errors en imprimir documents incorrectes de Microsoft Word Els errors en imprimir documents de Word amb tipus de lletra canviats, paràgrafs desordenats, falta de text o contingut perdut són força habituals. No obstant això, no

Esborra els dibuixos de llapis i ressaltats a les teves diapositives de PowerPoint

Esborra els dibuixos de llapis i ressaltats a les teves diapositives de PowerPoint

Si heu utilitzat el llapis o el marcador per dibuixar a les vostres diapositives de PowerPoint durant una presentació, podeu desar els dibuixos per a la següent presentació o esborrar-los de manera que la propera vegada que el mostreu, començareu amb diapositives de PowerPoint netes. Seguiu aquestes instruccions per esborrar dibuixos a llapis i ressaltadors: Esborrant línies una a […]

Contingut de la biblioteca destils a SharePoint 2010

Contingut de la biblioteca destils a SharePoint 2010

La biblioteca d'estils conté fitxers CSS, fitxers de llenguatge de full d'estil extensible (XSL) i imatges utilitzades per pàgines mestres predefinides, dissenys de pàgina i controls a SharePoint 2010. Per localitzar fitxers CSS a la biblioteca d'estils d'un lloc de publicació: Trieu Accions del lloc→Visualitza Tot el contingut del lloc. Apareix el contingut del lloc. La biblioteca d'estil es troba a […]

Formateu els números en milers i milions als informes dExcel

Formateu els números en milers i milions als informes dExcel

No desbordeu el vostre públic amb números gigantesques. A Microsoft Excel, podeu millorar la llegibilitat dels vostres taulers i informes formatant els vostres números perquè apareguin en milers o milions.

Com compartir i seguir els llocs de SharePoint

Com compartir i seguir els llocs de SharePoint

Apreneu a utilitzar les eines de xarxes socials de SharePoints que permeten a persones i grups comunicar-se, col·laborar, compartir i connectar-se.

Com convertir les dates a formats Julian a Excel

Com convertir les dates a formats Julian a Excel

Les dates julianes s'utilitzen sovint en entorns de fabricació com a marca de temps i referència ràpida per a un número de lot. Aquest tipus de codificació de dates permet als minoristes, consumidors i agents de serveis identificar quan es va fabricar un producte i, per tant, l'antiguitat del producte. Les dates julianes també s'utilitzen en programació, militars i astronomia. Diferents […]

Com crear una aplicació web daccés

Com crear una aplicació web daccés

Podeu crear una aplicació web a Access 2016. Què és, de totes maneres, una aplicació web? Bé, web vol dir que està en línia i l'aplicació és només una abreviatura de "aplicació". Una aplicació web personalitzada és una aplicació de base de dades en línia a la qual s'accedeix des del núvol mitjançant un navegador. Creeu i manteniu l'aplicació web a la versió d'escriptori […]

Barra dinici ràpid a SharePoint 2010

Barra dinici ràpid a SharePoint 2010

La majoria de les pàgines del SharePoint 2010 mostren una llista d'enllaços de navegació a la barra d'inici ràpid al costat esquerre de la pàgina. La barra d'inici ràpid mostra enllaços al contingut del lloc destacat, com ara llistes, biblioteques, llocs i pàgines de publicació. La barra d'inici ràpid inclou dos enllaços molt importants: Enllaç de tot el contingut del lloc: el […]

Què signifiquen els missatges derror del solucionador a Excel?

Què signifiquen els missatges derror del solucionador a Excel?

Per a problemes senzills, Solver a Excel sol trobar ràpidament els valors òptims de la variable Solver per a la funció objectiu. Però, en alguns casos, Solver té problemes per trobar els valors de la variable Solver que optimitzen la funció objectiu. En aquests casos, Solver normalment mostra un missatge o un missatge d'error que descriu o discuteix el problema que […]