Hilfe bei VB 6 Quellcode

Von: , 21.01.2011 09:13 Uhr

Mit meinen Laien Kenntnissen habe ich dieses VB PRG geschrieben. Mein Problem ist das abfangen der möglichen zwei Fehler und falls andere auftreten diese ganz zu ignorieren und auf die Maske zurück zu kehren.

Ich möchte ein Menue erstellen um 8 Punkte auswählen zu können und somit verschiedene Aufgaben (PRG) zu starten.

Es können zwei Fehler auftreten:
1. Es wurde kein Punkt gesetzt bzw. kein gewünschtes PRG zum Aufruf gewählt (Fehler = MsgBox("Bitte Version wählen", vbOKOnly + vbInformation, "Information)

2. Das gewählte PRG welches ausgewählt wurde ist aus welchem Grund auch immer auf dem Datentreäger (CD/DVD) nicht vorhanden (Fehler = MsgBox("Diese Version ist nicht verfügbar", vbOKOnly + vbInformation, "Information")

Der Code den ich geschrieben habe sieht wie folgt aus:
-------------------------------------------------------


Private Sub cmdDeutschok_Click()

On Error GoTo ErrorHandler

Select Case True

Case opt1
x = Shell("\setup1.exe", 1)
Case opt2
x = Shell("\setup2.exe_", 1)
Case opt3
x = Shell("\setup3.exe", 1)
Case opt4
x = Shell("\setup4.exe", 1)
Case opt5
x = Shell("\setup5.exe", 1)
Case opt6
x = Shell("\setup6.exe", 1)
Case opt7
x = Shell("\setup7.exe", 1)
Case opt8
x = Shell("\setup8.exe", 1)
Case Else
Fehler = MsgBox("Bitte Version wählen", vbOKOnly + vbInformation, "Information")
End Select

Exit Sub

ErrorHandler:
Fehler = MsgBox("Diese Version ist nicht verfügbar", vbOKOnly + vbInformation, "Information")
End Sub
-------------------------------------------------------

Danke und Gruss, Herbi

3 Antworten zu dieser Frage

  1. Antwort von nach 3 Tagen 0 hilfreich
    Re: Hilfe bei VB 6 Quellcode

    Hallo Herbi,

    deine Version dürfte so wie du sie geschrieben hast, funktionieren.

    Du kannst dir aber auch meine Version durchsehen/probieren:

    -------------------------------------------------------
    Private Sub cmdDeutschOk_Click()

    Dim iMenOpt As Integer 'Menü-Option
    Dim sMenPgm As String 'Programm das zum
    'akt. Menü gestartet werden soll
    Dim iProcID As Integer 'Process-ID
    '(=Rückgabewert der Shell-Function)

    On Local Error GoTo ErrHandler

    '**************************************************
    '*** Test-Zuweisungen ***
    iMenOpt = 1
    sMenPgm = "C:\Windows\System32\calc.exe"

    'Hinweis: bei Win95, Win98 lautet der Pfad
    '\Windows\System\
    'bei WinNt, Win2000 lautet der Pfad
    '\WinNT\System32\
    '**************************************************

    If (iMenOpt < 1) Or (iMenOpt > 8) Then
    Call MsgBox("Bitte Version wählen", vbOKOnly + vbInformation,
    "Information")
    Else
    iProcID = Shell(sMenPgm, vbNormalFocus)
    End If

    Exit Sub

    ErrHandler:

    Select Case Err.Number
    Case 53, 76
    '53 = Datei nicht gefunden,
    '76 = Pfad nicht gefunden
    Call MsgBox("Diese Version ist nicht verfügbar",
    vbOKOnly + vbInformation, "Information")
    Case Else 'anderer Fehler
    'wenn Anzeige gewünscht, sonst weg lassen
    Call MsgBox(Error(Err.Number), vbOKOnly +
    vbInformation, "Information")
    End Select
    Resume Next

    End Sub
    -------------------------------------------------------

    Die Menü-Option und den vollständigen Pfad und Namen
    des aufzurufenden Programms habe ich den Variablen
    iMenOpt bzw. sMenPgm zugewiesen.

    Wenn du die Programmzeilen als Procedure ausführst,
    kannst du diese beiden Variablen einfach an die Procedure übergeben.

    Hoffe dir ein wenig geholfen zu haben.
    Viel Erfolg noch für deine weitere Programmierzukunft

    Gruß
    Günther

    • Antwort von nach 4 Tagen 0 hilfreich
      Re^2: Hilfe bei VB 6 Quellcode

      Hallo Günther

      meine Version funktioniert wie Du schreibst so weit prima nur mit der Fehlermeldung gibts Probleme denes werden immer beide Fehlermeldungen ausgegeben egal was ich auswähle oder aktiviere.

      Etwas habe ich noch vergessen zu erwähnen: bei den 'opt1 - 8) sind vorab immer andere Pfade angegeben wie C:\33\3\setup3.exe oder c:\33\5\setup5.exe
      Ist das mit Deinem Vorschlag auch möglich.

      Danke und Gruss, Herbi

      • Antwort von nach 4 Tagen 0 hilfreich
        Re^3: Hilfe bei VB 6 Quellcode

        Hallo Herbi,

        ich habe dir ein kleines Beispielprogramm zusammengestellt, an dem du deine gewünschten Funktionen ausprobieren und nachsehen kannst.

        Du musst dazu ein neues Projekt erstellen und auf die leere Form eine Listbox und einen CommandButton platzieren.
        Anschließend fügst du noch den folgenden Quellcode ein.

        -------------------------------------------------------
        Option Explicit

        Dim aPgmListe() As String

        Private Sub Form_Load()

        List1.FontSize = 12
        List1.Height = 2500
        List1.Width = 1950

        Command1.Width = 1950
        Command1.Caption = "Programm starten"

        'Programmnamen in die Listbox eintragen
        List1.AddItem ("Taschenrechner")
        List1.AddItem ("Texteditor")
        List1.AddItem ("Programm 3")
        List1.AddItem ("Programm 4")
        List1.AddItem ("Programm 5")
        List1.AddItem ("Programm 6")
        List1.AddItem ("Programm 7")
        List1.AddItem ("Programm 8")

        'Programmliste dimensionieren (8 mögliche Einträge)
        ReDim aPgmListe(7)

        'Programme zuweisen, die aufgerufen werden können
        aPgmListe(0) = "C:\Windows\System32\calc.exe"
        aPgmListe(1) = "C:\Windows\System32\notepad.exe"
        aPgmListe(2) = "Programm 3"
        aPgmListe(3) = "Programm 4"
        aPgmListe(4) = "Programm 5"
        aPgmListe(5) = "Programm 6"
        aPgmListe(6) = "Programm 7"
        aPgmListe(7) = "Programm 8"

        End Sub

        Private Sub Command1_Click()

        ExecPgmAusw (List1.ListIndex)

        End Sub

        Private Sub ExecPgmAusw(iPgmIdx As Integer)

        Dim iProcID As Integer 'Process-ID (Rückgabewert der Shell-Function)

        On Local Error GoTo ErrHandler

        If (iPgmIdx < 0) Or (iPgmIdx > UBound(aPgmListe)) Then
        'kein gültiger Programmlistenindex
        Call MsgBox("Bitte Version wählen", vbOKOnly + vbInformation, "Information")
        Else
        'Programm mit dem entsprechenden Index starten
        iProcID = Shell(aPgmListe(iPgmIdx), vbNormalFocus)
        End If

        Exit Sub

        ErrHandler:

        Select Case Err.Number
        Case 53, 76
        '53 = Datei nicht gefunden,
        '76 = Pfad nicht gefunden
        Call MsgBox("Diese Version ist nicht verfügbar", vbOKOnly + vbInformation, "Information")
        Case Else
        'alle anderen Fehler
        'wenn Anzeige gewünscht, sonst weg lassen
        Call MsgBox(Error(Err.Number), vbOKOnly + vbInformation, "Information")
        End Select
        Resume Next

        End Sub

        -------------------------------------------------------

        Ich hoffe, du kannst damit dein Programm nach deinen Anforderungen anpassen.

        PS:
        Du hast bei deiner <Select case> - Anweisung als Auswahlvariable "True" stehen.
        Eigentlich sollte dort eine Variable stehen, die eine der die möglichen Optionen vorgibt ...

        Gruß
        Günther

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!