Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

Wie kann ich von einer Sub in die andere "weiterleiten" Visual Basic?

Ich möchte von der Sub Main() in die Sub Rechenart() "weiterleiten".

Was muss ich in der Sub Main() eingeben damit das funktioniert?

Ach ja, falls das bei Visual Basic 2010 ausschlaggebend ist: Es ist eine Konsolenanwendung.

(Das dient nur als Übung um mir das Programmieren etwas näher zu bringen. :) )

2 Antworten

Bewertung
  • vor 10 Jahren
    Beste Antwort

    Kommt auf das VB an

    VB6 und VBA werden ohne Klammern aufgeufen In VB 20XX .Net mit Klammer

    Bsp.:

    public Sub Rechenart()

    End Sub

    * Aufruf VB 6 / VBA

    Test

    * Aufruf VB20XX

    Test()

    Aufruf einer nicht static Methode einer Klasse wird IMMER über ein Objekt aufgerufen

    <Objekt>.Rechenart()

    * Wenn das Objekt seine eigene Methode aufruft heißt das Objekt Me. Also

    Me.Rechenart()

    Das Me. kann aber auch weg gelassen werden.

    * Wenn das Objekt von aussen aufgerufen wird sieht das so aus

    Dim a as MeineKlasse

    a.Rechenart()

    * Ist die Methode static deklariert dann beziehen sich die Aufrufe nicht auf ein Objekt sondern auf die Klasse

    class MeineKlasse

    public static Sub Rechenart()

    End Sub

    end class

    Aufruf ist dann:

    MeineKlasse.Rechenart()

    * Aufruf In Zeilenbasic ist nochmal was anderes. Hier erfolgt der Aufruf mit

    Gosub Rechenart_Lable

    oder

    Gosub <Zeilennummer>

    Nun zu deiner Konsoleanwendung

    Die Main wird in eimem Modul angelegt. Damit ist die Main Global verfügbar. Für den Aufruf Kommt es drauf an wo die Sub Rechenart() angelegt wurde.

    Im einem Modul

    Sub Main()

    Rechenart()

    End Sub

    In MeineKlasse als Methode

    Sub Main()

    Dim a as MeineKlasse

    a=new MeineKlasse()

    a.Rechenart()

    End Sub

    In MeineKlasse als static Methode

    Sub Main()

    MeineKlasse.Rechenart()

    End Sub

    @Guitarfreak "Dies funktioniert aber nur, solange die Methoden in der selben Klasse sind. Ansonsten musst du ein Objekt erstellen."

    Das stimmt für VB nicht. VB gibt die Möglichkeit Module statt Klassen zu definieren. In diesen Modulen angelegte Funktionen und Unterprogramme sind wenn sie public sind überall verfügbar. Das entspricht einer Funktionsdeklaration in C++ ausserhalb einer Klasse. C# und Java läßt das tatsächlich nicht zu weil es der Objekorientierung wiederspricht.

    Übrigens hat VB keinen Zeilentrenner wie Pascal, C,C++ oder C# wo ein Zeile mit Punkt bzw. Semikolon abgeschlossen wird. Daher mußt einen Befehl immer mit Unterstrich am Ende abschließen wenn der Befehl noch nicht zuende ist.

  • Anonym
    vor 10 Jahren

    Also, ich glaube du meinst ausführen.

    Ich bin zwar nicht vertraut mit Visual Basic, habe aber Visual C#, C++ und PHP programmiert.

    Du führst Methoden aus, indem du ganz einfach ihren Namen aufrufst.

    also

    Rechenart();

    ich glaub in vb könnts sogar ohne Semikolon sein, ich bin mir nicht sicher.

    Dies funktioniert aber nur, solange die Methoden in der selben Klasse sind.

    Ansonsten musst du ein Objekt erstellen.

Haben Sie noch Fragen? Jetzt beantworten lassen.