VBA Exit Sub | Sortiu del subprocediment VBA si no es compleixen les condicions

Subprocedent de sortida d'Excel VBA

Surt de la sub instrucció surt del subprocés abans de les línies definides de codis VBA. No obstant això, per sortir del subprocés hem d’aplicar algun tipus de prova lògica.

Construïm això en termes senzills.

 Sub MacroName () "..." Alguns codis aquí "... Surt de Sub" Surt del Sub sense executar més línies de codi a sota "..." Aquest codi s'ignorarà "... Finalitza Sub 

Exemples

Podeu descarregar aquesta plantilla VBA Exit Sub Excel aquí: plantilla VBA Exit Sub Excel

Exemple 1

Per obtenir un millor exemple, mireu el codi següent.

Codi:

 Sub Exit_Example1 () Dim k Llarg per k = 1 a 10 cel·les (k, 1). Valor = k Següent k Final Sub 

El codi anterior inserirà números de sèrie de l'1 al 10 a les cel·les A1 a A10.

Ara vull inserir només 5 números de sèrie i tan bon punt el valor de la variable "k" sigui 6 vull sortir del sub.

Per a això, hauré d'afegir la prova lògica en excel com SI k = 6 Llavors sortiu de Sub.

Codi:

 Sub Exit_Example1 () Dim k Long Per a k = 1 a 10 Si k = 6 Llavors Surt de Sub 'Tan bon punt k el valor sigui 6 ignorarà tots els codis i sortirà de les cel·les (k, 1). Valor = k Next k Final Sub 

Ara executeu el codi línia per línia. Premeu la tecla F8 per iniciar el procediment.

A partir d’ara, el valor k és zero.

Per canviar el valor k a 1, premeu la tecla F8 una vegada més.

Per tant, el valor k és 1, el nostre codi continua funcionant i inserirà 1 a la cel·la A1. Així, seguiu executant el bucle fins que el valor de k sigui 6.

Ara el valor de k és 6 i la línia de codi està a punt d'executar la nostra prova lògica per sortir del subprocés. Si premo la tecla F8 una vegada més, sortirà directament de tot el subprocediment.

Com podem veure, ha destacat la paraula "Surt de sub". En prémer la tecla F8 sortirà del subprocediment sense anar a la paraula "Finalitzar sub".

Exemple # 2: en cas d'error Surt del subprocés

També podem sortir del subprocés quan obtenim els valors d'error. Per exemple, tingueu en compte les dades següents per dividir el número 1 del número 2.

A continuació es mostra el codi per obtenir la divisió de dos nombres.

Codi:

 Sub Exit_Example2 () Dim k Long Per k = 2 a 9 cel·les (k, 3). Valor = Cel·les (k, 1). Valor / cel·les (k, 2). Valor Següent k Finalitzar sub 

Com sabem, no podem dividir cap nombre per zero. Per tant, si intentem fer-ho, obtindrem l’error com a Temps d’execució Error ‘11’: Division By Zero.

Per evitar-ho tan aviat com trobem algun error, esmentaré la meva macro per sortir del subprocés amb efecte immediat. El codi següent és un d’aquests casos.

Codi:

 Sub Exit_Example2 () Dim k Long Per k = 2 to 9 On Error GoTo ErrorHandler Cells (k, 3). Valor = Cells (k, 1). Valor / Cells (k, 2). Valor Next k ErrorHandler: Exit Sub Finalitzar sub 

A l'exemple anterior, he esmentat la declaració "On Error Goto ErrorHandler". Aquí la paraula ErrorHandler és l’etiqueta que he assignat. Si podeu veure a la part inferior del codi he esmentat l'etiqueta com a

ErrorHandler: Surt del sub 

Així que tan aviat com el codi es produeixi un error, farà que el codi pugui saltar a l'etiqueta i l'etiqueta tingui la instrucció "Exit Sub", de manera que sortirà del subprocediment.

Ara executaré el codi, calcularà la divisió fins que trobi un error.

Com podeu veure a la cel·la C7, s'ha produït un error com a "Divisió per zero", de manera que ha sortit del subprocés. Sense informar l’usuari que surti del subprocés sempre és perillós. Per informar l'usuari sobre l'error, podem incloure un petit quadre de missatge.

Codi:

 Sub Exit_Example2 () Dim k Long Per k = 2 a 9 en cas d'error GoTo ErrorHandler Cells (k, 3). Valor = Cells (k, 1). Valor / Cells (k, 2). Valor Next k ErrorHandler: MsgBox " S'ha produït un error i l'error és: "& vbNewLine & Err.Description Exit Sub End Sub 

El codi anterior mostrarà el missatge d'error i, a continuació, sortirà del subprocés. Mentre s'executa el codi si es produeix un error, es mostrarà el quadre de missatge a VBA com a continuació.

Aquesta és una manera més fiable de sortir del subprocediment.