Macros en excel

Hola tengo una macro para crear tablas de multiplicar en excel pero no me hace la multiplicación me prodran ayudar?

Sub Tablas()Dim X As IntegerOn Error GoTo mensajeX=InputBox (“Tabla de multiplicar que desea:”)If X > 100 ThenMsgBox “El número máximo que puede colocar es 100”TablasEnd IfRange (“a1”).Value=”Tablas de Multiplicar”Range (“a1”).Font.Bold=TrueRange (“a1”).Font.Size=12Range (“a1:z1”).ColumnWidth=5Range (“a3:e12”).SelectSelection.HorizontalAligment = x1CenterSelection.Font.Bold=TrueActiveWindows.Zoom=150Cells(3,1).Activaterenglón=1For a =1 To 10c= X * aActiveCell.Cells(renglón, 1).Value =XActiveCell.Cells(renglón, 2).Value =”*”ActiveCell.Cells(renglón, 3).Value =aActiveCell.Cells(renglón, 1).Value =XActiveCell.Cells(renglón, 1).Value”=”ActiveCell.Cells(renglón, 1).Value =crenglón = renglón +1NextRange (“f12”).Activatemensaje:If Err =6 ThenIf MsgBox(“El número que ingreso en incorrecto,” & Chr(13) &”¿Desea ingresar otro numero?”, vbYesNo+vbDefaultButton1 +vbquestion, “Error”)=vbYes ThenTablasElseExit SubEnd IfEnd IfEnd Sub

1 respuesta

Respuesta
1

Tomo tu pregunta. Ahora que he logrado separar las líneas que estaban todas unidas voy a intentar ver por qué no funciona.

Has cometido un error bastante frecuente. Usas una sentencia

on error goto linea

Para controlar un error de entrada, lectura de fichero, etc. y luego te olvidas de volver a la normalidad con un

on error goto 0

Con lo cual no aparecen los errores posteriores y parece que no los hay, pero los hay y te sacaban de la subrutina.

Una vez puesto ese on error goto 0 han aparecido todos los errores que tenías, alguno de lógica pero sobre todo de erratas. Uno que es bastante frecuente el confundir la letra ele con el número 1, como tenías en x1Center cuando era xlCenter. Luego tenías un ActiveWindows en vez de ActiveWindow y alguna otra cosa como que no tenías una orden de salir de la subrutina antes de las líneas de gestionar el error

Pero lo fundamental es que el on error goto linea solo se debe usar excepcionalmente e inmediatamente volver a on error goto 0 para enterarnos de qué está pasando.

Esta es la macro corregida

Sub Tablas()
 Dim X, a As Integer
 On Error GoTo mensaje
 X = InputBox("Tabla de multiplicar que desea:")
 On Error GoTo 0
 If X > 100 Then
   MsgBox "El número máximo que puede colocar es 100"
   Tablas
 End If
 Range("a1").Value = "Tablas de Multiplicar"
 Range("a1").Font.Bold = True
 Range("a1").Font.Size = 12
 Range("a1:z1").ColumnWidth = 5
 Range("a3:e12").Select
 Selection.HorizontalAlignment = xlCenter
 Selection.Font.Bold = True
 ActiveWindow.Zoom = 150
 Cells(3, 1).Activate
 renglón = 3
 For a = 1 To 10
   c = X * a
   Cells(renglón, 1).Value = X
   Cells(renglón, 2).Value = "*"
   Cells(renglón, 3).Value = a
   Cells(renglón, 4).Value = "="
   Cells(renglón, 5).Value = c
   renglón = renglón + 1
 Next
 Range("f12").Activate
 Exit Sub
mensaje:
 If Err = 6 Then
   If MsgBox("El número que ingreso en incorrecto," & Chr(13) & "¿Desea ingresar otro numero?", vbYesNo + vbDefaultButton1 + vbQuestion, “Error”) = vbYes Then
      Tablas
   Else
      Exit Sub
   End If
 End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas