Cómo identificar errores específicos en excel 2016 vba

Video: Episodio 531 - Corregir errores en macro

Todos los errores de VBA no son iguales. Algunos son graves, y algunos son menos graves. Aunque es posible ignorar los errores considera que son inconsecuentes, debe hacer frente a otros errores más graves. En algunos casos, es necesario identificar el error específico que se produce.

Cada tipo de error tiene un número oficial. Cuando se produce un error, Excel almacena el número de errores en un objeto llamado error Err. Número de propiedad de este objeto contiene el número de error, y su descripción propiedad contiene una descripción del error. Por ejemplo, la instrucción siguiente muestra el número de error, un colon, y una descripción del error:

MsgBox Err.Number & ": " & Err.Description

Tenga en cuenta que los mensajes de error de Excel no siempre son muy útiles - pero ya saben.

Video: Curso VBA para Excel - Clase 13 Validar el ingreso de datos duplicados con Inputbox

El procedimiento siguiente muestra cómo determinar qué error se ha producido. En este caso, puede pasar por alto los errores causados ​​por tratar de obtener la raíz cuadrada de un número no positivo (es decir, el error 5) o errores causados ​​por tratar de obtener la raíz cuadrada de un valor numérico (error 13).

Por otra parte, es necesario informar al usuario si la hoja está protegida y la selección contiene una o más células cerradas. (De lo contrario, el usuario puede pensar que la macro trabajó cuando en realidad no lo hizo.) El intento de escribir en una celda cerrada en una hoja de cálculo protegida provoca error 1004.

Sub SelectionSqrt () Dim celular Como RangeDim Mens Como StringIf TypeName (Selección) lt; gt; "Distancia" A continuación, la salida SubOn Error GoTo ErrorHandlerFor cada celda en Selectioncell.Value = Sqr (Celda.Value) Siguiente cellExit SubErrorHandler: sheetMsgBox Select Case Err.NumberCase 5 `Negativo numberResume NextCase 13` Tipo mismatchResume NextCase 1004 `celda cerrada, protegida "Cell está bloqueado. Inténtalo de nuevo.", VbCritical, cell.AddressExit subcaso ElseErrMsg = Error (Err.Number) MsgBox "ERROR: " & Mens, vbCritical, cell.AddressExit SubEnd SelectEnd Sub

Cuando se produce un error de ejecución, la ejecución salta al código a partir de la etiqueta ErrorHandler. Seleccione las pruebas de estructura de casos para tres números de error comunes. Si el número de error es de 5 o 13 años, la ejecución se reanuda en la siguiente sentencia. (En otras palabras, se ignora el error.) Sin embargo, si el número de error es 1004, la rutina informa al usuario y luego termina. El último caso, un cajón de sastre de errores no anticipados, atrapa todos los demás errores y muestra el mensaje de error real.

Artículos Relacionados