Excel-VBA-Aufruf sub aus einem anderen sub mit mehreren Eingängen, Ausgängen in verschiedenen Größen
Ich nennen möchte eine sub aus einem anderen sub-innen im selben Modul. Der erste sub würde mein main-code und da würde ich rufen Sie die zweite Unterroutine. Zweite Unterprogramm erhält mehrere Eingänge als integer, double, double-arrays double-Matrizen. Die Größe des arrays und Matrizen sind bekannt und gespeichert in eine integer-variable. Der sub gibt auch mehrere Ausgänge. Also, ich möchte so etwas wie dies tun.
sub Main()
Nc As integer
Dim kij(1 To Nc, 1 To Nc), xi(1 to Nc), a1 As Double
'I assign values to my variables from the excelsheet e.g. Nc=Cells(1,1) etc.
CalculateA(Nc,kij, xi, a1, a)
Cells(5,5)=a
end sub
sub CalculateA(Nc as integer,kij as matrix double, xi as array double, a as Double)
a=0
For i=1 To Nc
For j=1 To Nc
a = a + kij(i,j)*x(i)*x(j)
Next j
Next i
a = a*a1
end sub
Woher weiß er, welcher sub ist der sub main, wo es beginnt zu laufen. Kann ich den sekundären sub auf der Oberseite und den code irgendwie beginnt unten Unterprogramm?
InformationsquelleAutor der Frage user2421555 | 2013-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aufruf einer sub in einem anderen sub-Sie müssen nur zu tun:
Also, wo haben Sie
CalculateA(Nc,kij, xi, a1, a)
müssen Siecall CalculateA(Nc,kij, xi, a1, a)
Als läuft das erste problem, es ist für Sie entscheiden, wenn Sie möchten, führen Sie eine sub, die Sie gehen können, um das makro Liste wählen Sie die, die Sie ausführen möchten, und führen Sie es aus, Sie können auch geben es einen jey-Verknüpfung und müssen nur drücken Sie diese Tasten, auf sekundäre subs normalerweise mache ich es wie
Private sub CalculateA(...)
verursachen auf diese Weise ist es nicht angezeigt, in der makro-Liste und es ist einfacher, mit zu arbeitenHoffe es hilft,
Bruno
PS: Wenn Sie weitere Fragen haben, gerade Fragen, aber dies ist nicht eine community, wo Sie Fragen, für code, den Sie kommen hier mit einer Frage oder einem code, der nicht ausgeführt wird und um Hilfe bitten, nicht wie "Es wäre toll, wenn könnten Sie schreiben es in der Excel-VBA-format".
InformationsquelleAutor der Antwort Newbie
Diese sind eigentlich zwei Fragen.
Die erste ist hier beantwortet: Aufruf einer Sub in VBA
Dem zweiten, protip: es gibt keine main-Unterroutine in VBA. Vergessen Verfahrensrecht, Allgemeine Sprachen. VBA-subs sind "Makros" - Sie können, führen Sie Sie durch drücken von Alt+F8 oder durch das hinzufügen einer Schaltfläche, um das Arbeitsblatt und der Aufruf der sub aus der automatisch generierten "ButtonX_Click" sub.
InformationsquelleAutor der Antwort Carlos Vieira
VBA-subs sind keine Makros. Eine VBA-sub kann ein makro, aber es ist kein muss.
Den Begriff "makro" ist nur für den aufgezeichneten user-Aktionen. von diesen Maßnahmen wird ein code generiert und gespeichert in einem sub. Dieser code ist einfach und nicht bieten leistungsfähige Strukturen wie Schleifen, z.B. Do .. until, for .. next, while.. do, und andere.
Die elegantere Art und Weise ist, zu entwerfen und schreiben Sie Ihre eigenen VBA-code ohne Verwendung des makro-Funktionen!
VBA ist eine Objekt-basierte und event-orientierte Sprache. Subs, oder bette nennen es "sub-Routinen" begonnen, das durch spezielle Ereignisse. Die Veranstaltung kann das drücken einer Taste oder das öffnen einer Arbeitsmappe, und viele, viele andere sehr spezifische Ereignisse.
Wenn Sie den Fokus auf VB6 und nicht auf VBA, dann Sie können feststellen, dass es immer ein Haupt-Fenster, Haupt-oder form. Diese form wird gestartet, wenn Sie starten Sie das kompilierte ausführbare "xxxx.exe".
In VBA-Sie haben nichts davon, aber Sie haben eine XLSM-Datei, welche gestartet wird von Excel. Können Sie fügen Sie einige code, um das Workbook_Open-Ereignis. Dieses Ereignis wird generiert, wenn Sie öffnen Sie Ihre gewünschte excel-Datei, die aufgerufen wird, eine Arbeitsmappe. Innerhalb der Arbeitsmappe, die Sie haben Arbeitsblätter.
Ist es nützlich, um mehr vertraut mit der so genannten Objekt-Modell von excel. Die Arbeitsmappe hat mehrere Ereignisse und Methoden. Auch das Arbeitsblatt hat mehrere Ereignisse und Methoden.
In der Objekt-basierte Modell, das Sie haben, Objekte, Ereignisse und Methoden. Methoden sind Aktion, die Sie tun können, mit einem Objekt. Ereignisse sind Dinge, die passieren können zu einem Objekt. Ein Objekte kann eine andere enthalten Objekte, und so weiter. Sie können neue Objekte erstellen, wie Blätter oder Diagramme.
InformationsquelleAutor der Antwort