vbs input box help

Discussion in 'Windows - General discussion' started by bizkit101, Oct 19, 2009.

  1. bizkit101

    bizkit101 Member

    Joined:
    Sep 4, 2008
    Messages:
    32
    Likes Received:
    0
    Trophy Points:
    16
    hi i made an input box that when you put the number of the program you want in it runs it that works. but i want to make the letter Q make it quit. i put in ElseIf
    Code:
    fname = Q Then
                 WScript.Quit
    But every time i put Q in, an error keeps coming up saying "type mismatch: '[string: "Q"]' " here is my whole code:
    Code:
    Dim fname
    
    Sub Run(ByVal sFile)
    Dim shell
    
        Set shell = CreateObject("WScript.Shell")
        shell.Run Chr(34) & sFile & Chr(34), 1, false
        Set shell = Nothing
    End Sub
    
    strMenu="Select a program" & VbCrLf &_
    "1 HxD" & VbCrLf &_
    "2 Johnson" & VbCrLf &_
    "3 ConCept" & VbCrLf &_
    "Q Quit"
    do
    fname=InputBox(strMenu,"Menu")
    
    If fname = 1 Then
    	Run "C:\Documents and Settings\fix\Local Settings\Application Data\HxD\HxD.exe"
    ElseIf fname = 2 Then
    	Run "C:\Documents and Settings\fix\My Documents\mods\programs\Johnson1.4_bin\Johnson.exe"
    ElseIf fname = 3 Then
    	Run "C:\Documents and Settings\fix\My Documents\mods\programs\CONcept 0.3\CONcept.exe"
    ElseIf fname = Q Then
    	WScript.Quit
    END If
    loop
    I put The quit option in because i had to loop it so the input box wouldn't go away after it ran the program.

    if you can give me an easier way to make the input box stay where it is please tell me but if you can't then just tell me whats wrong
    thanks in advanced
     
    Last edited: Oct 20, 2009
  2. silk42

    silk42 Regular member

    Joined:
    Dec 21, 2007
    Messages:
    591
    Likes Received:
    0
    Trophy Points:
    26
    You're doing a mathematical comparison, that's why you're getting a type mismatch. The easiest solution is to simply change your quit option to a number, such as 4 or 999. If you really want to keep it a letter, then you need to make it mathematical for the program. Here's an option.
    ------------------------------------------------------
    Dim fname

    Sub Run(ByVal sFile)
    Dim shell

    Set shell = CreateObject("WScript.Shell")
    shell.Run Chr(34) & sFile & Chr(34), 1, false
    Set shell = Nothing
    End Sub

    strMenu="Select a program" & VbCrLf &_
    "1 HxD" & VbCrLf &_
    "2 Johnson" & VbCrLf &_
    "3 ConCept" & VbCrLf &_
    "Q Quit"
    do
    fname=InputBox(strMenu,"Menu")

    if asc(fname) = 81 then
    fname = 999
    end if


    If fname = 1 Then
    Run "C:\Documents and Settings\fix\Local Settings\Application Data\HxD\HxD.exe"
    ElseIf fname = 2 Then
    Run "C:\Documents and Settings\fix\My Documents\mods\programs\Johnson1.4_bin\Johnson.exe"
    ElseIf fname = 3 Then
    Run "C:\Documents and Settings\fix\My Documents\mods\programs\CONcept 0.3\CONcept.exe"
    ElseIf fname = 999 Then
    WScript.Quit
    END If
    loop
    ------------------------------------------------------

    The above code is case sensitive, so you will need to enter a capital Q. You could obviously edit it if you wanted to be able to use a lower case q.
     

Share This Page