Excel VBA Code, ON Variable GOTO Alternativas [cerrado]

-1

He leído los pros y los contras de las ON X GOTOdeclaraciones y estoy al tanto de las alternativas de llamadas y jmp y del hecho de que se considera una mala práctica, pero me gustaría una solución alternativa simple para su uso. Igualmente (no solo ser perezoso) sino que el uso de extensas líneas de código para cada alternativa parece ineficiente y no tan fácil de leer.

En esencia, me gustaría una alternativa simple a lo siguiente (escrito en código en inglés en lugar de cualquier código específico pero necesario en VBA):

Input x

On x Goto LineA, LineB, LineC

LineA....
End

LineB....
End

LineC....
End

o:

List of alternatives (choice = 1, choice = 2, choice = 3)

Input choice

on choice someVariable = string1, string2, string3

(Remaining code which uses that string)

Ambos son muy similares, teniendo en cuenta que la lista podría tener cualquier longitud y las cadenas podrían ser más largas, pero seleccionadas por una sola declaración en lugar de saltar a nuevas líneas de código en cada caso específico.

John Nicholson
fuente
Lo que está solicitando es una orden de trabajo. Debe leer un poco sobre "VBa para principiantes" y "Cómo crear una instancia de una variable".
ejbytes

Respuestas:

1

No ignore las mejores prácticas y consejos. Este código es perfectamente legible y hace lo que necesita sin romper las reglas ...

Sub test()

  Select Case InputBox("Enter a value")

    Case "1"
      'Do things that are specific to "1"
       Beep
      'Or better still, call a specific sub
      DoSomething1
    Case "2"
      'Do things that are specific to "2"
       Beep
      'Or better still, call a specific sub
      DoSomething2
    Case "3"
      'Do things that are specific to "3"
      Beep
      'Or better still, call a specific sub
      DoSomething3
    Case Else
      'Do Nothing

  End Select

End Sub

Sub DoSomething1()
  Beep
End Sub

Sub DoSomething2()
  Beep
  Beep
End Sub

Sub DoSomething3()
  Beep
  Beep
  Beep
End Sub
ThunderFrame
fuente
Gracias, Mi educación VBA (Autodidacta) había perdido el uso de 'CASO', ¡ahora no! Puedo usar eso para mis dos situaciones anteriores. Aunque todavía implica nuevas líneas para cada nueva opción de selección, es relativamente breve y se puede seguir fácilmente.
John Nicholson