Cómo hago esto en visual basic?

oskuro está baneado por "Utilizar clones para soltar spoilers salvajes en el hilo del horizon: Zero Dawn"
Os pongo el programa que nos han mandado para practicar en casa, ya lo tengo hecho, pero con case me es imposible hacerlo, ya que no recoge el valor de la variable cuando quiero hacer las comparaciones para cada "caso", os pego el código y una foto de lo que es el formulario, saludos.


Imagen

'Obligo a que toda variable tenga que ser declarada
Option Explicit

Private Sub Cmd_Aceptar_Click()
'Defino las variables a usar
Dim Vehiculo As String, Cuota As Integer, Cantidad As Integer

'Meto en la variable vehiculo lo introducido en la caja de texto
Vehiculo = UCase(Text1.Text)

'Si no se ha metido nada, entonces doy aviso y le hago meterlo otra vez
If Vehiculo = "" Then
    MsgBox "Debes Introducir un tipo de vehículo", 64, "ERROR!!"
    Else
        'Realizamos todos los casos
        Select Case Vehiculo
            Case "MOTO"
                Cuota = 30
                'Muestro importe total
                    MsgBox "El importe a pagar es de: " & Cuota & " Euros", 64, "TICKET"
            Case "CAMION"
                'Pido las toneladas que lleva el camion
                    Cantidad = InputBox("Introduce toneladas de peso del camión", "Introducir Peso")
                'Calculo el nuevo precio en base a las toneladas introducidas
                    Cuota = 30 + 25 * (Cantidad)
                'Muestro importe total
                    MsgBox "El importe a pagar es de:" & Cuota & " Euros", 64, "TICKET"
            Case "CAMIÓN"
                'Pido las toneladas que lleva el camion
                    Cantidad = InputBox("Introduce toneladas de peso del camión", "Introducir Peso")
                'Calculo el nuevo precio en base a las toneladas introducidas
                    Cuota = 30 + 25 * (Cantidad)
                'Muestro importe total
                    MsgBox "El importe a pagar es de:" & Cuota & " Euros", 64, "TICKET"
            Case "BICICLETA"
                    Cuota = 100
                'Muestro importe total
                    MsgBox "El importe a pagar es de: " & Cuota & " Euros", 64, "TICKET"
            Case "COCHE"
                    Cuota = 30
                'Muestro importe total
                    MsgBox "El importe a pagar es de: " & Cuota & " Euros", 64, "TICKET"
            Case Else
                    MsgBox "Introduce bien el nombre del vehículo", 64, "ERROR!"
        End Select
       
End If
Text1.Text = ""
Form1.Text1.SetFocus


End Sub

Private Sub Cmd_Salir_Click()
End
End Sub

Private Sub Form_Load()
   
    Picture1.Print
    Picture1.Print Spc(6); "Bicicleta "
    Picture1.Print Spc(6); "Coche "
    Picture1.Print Spc(6); "Moto "
    Picture1.Print Spc(6); "Camión "
   
    Picture2.Print
    Picture2.Print Spc(2); "100 €"
    Picture2.Print Spc(2); "30 €"
    Picture2.Print Spc(2); "30 €"
    Picture2.Print Spc(2); "30 € + 25€ * Tonelada"
   
   
End Sub


Gracias

EDITO: Ya lo he conseguido, ahora lo que no se, es cómo hacer para que una vez mostrado el resultado, el textbox del formulario, vuelva a recuperar el foco y se vuelva el cursor de escribir visible en él como al inicio, voy a ver si lo veo [sonrisa]
Para lo que quieres es mejor que uses un array, en la ayuda del visual viene como usarlos y ejemplos, el Select Case que tienes se quedarian en un For con un par de If dentro.

Busca tambien los tipos de datos definidos por el usuario, en conjunto con un array te quedara mejor que como lo tienes.

Si no entiendes como funcionan avisa.

Para lo del foco seria Text1.SetFocus()

Saludos
oskuro está baneado por "Utilizar clones para soltar spoilers salvajes en el hilo del horizon: Zero Dawn"
indasc escribió:Para lo que quieres es mejor que uses un array, en la ayuda del visual viene como usarlos y ejemplos, el Select Case que tienes se quedarian en un For con un par de If dentro.

Busca tambien los tipos de datos definidos por el usuario, en conjunto con un array te quedara mejor que como lo tienes.

Si no entiendes como funcionan avisa.

Para lo del foco seria Text1.SetFocus()

Saludos


Ya, ya imagino que con array será más fácil, pero es que llevamos como 2 semanas con visual, y aún no los hemos dado y no me quiero adelantar.

Ahora probaré lo del focus.

Tenía con if lo que tengo ahora con case, pero casi que con los case se me queda más corto, es menos lioso que poner if tal then tal else if tal then cual y luego cerrar todos los if etc.

Gracias, voy a probar lo del focus [beer]

EDITO: No me deja lo del focus, lo pongo donde el form_load:

Text1.SetFocus()

así tal cual pero me dice que se esperaba un =.

De todas formas, lo de Text1.SetFocus() lo tengo que poner en el form_load on en Cmd_Aceptar_Click()?gracias

EDITO2:

ya lo he conseguido, en el evento del click, meto:

Form1.Text1.SetFocus

y ya puedo hacerlo, gracias [risita]
2 respuestas