Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variable an sub übergeben

Variable an sub übergeben
26.07.2015 12:46:03
P-Quest
Hallo,
ich weiss, dass ich eine Variable, die ich in einer Sub1 definiert habe an eine untergeordnete Sub2 übergeben kann, indem ich diese direkt mit
Call Sub(Variable)
aus Sub1 aufrufe.
Jetzt habe ich aber den Fall, dass ich eine Sub1 komplett abgeschlossen habe. Innerhalb dieser Sub wurde der Blattname (strName) definiert und für das Tabellenblatt vergeben.
Mit einer weiteren Schaltfläche sollen nun weitere Aktionen (Sub2) gestartet werden, für die ich den Blattnamen aus Sub1 benötige. Da die beiden Subs nicht direkt von einander abhängig sind, habe ich strName als Public definiert
Wenn ich jetzt
Call Sub2(strName)
ausführe, wird die Variable zwar erkannt (klar, ist ja Public), aber der Wert ist "".
Frage:
Wie kann ich den Wert für strName auch in Sub2, Sub3 etc. verwenden?
Gruß,
Peter

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable an sub übergeben
26.07.2015 13:07:35
mumpel
Hallo!
In diesen Fällen arbeitet man nicht mit Sub, sondern mit Function.
Public Sub Test()
MsgBox Rechne(12, 3)
End Sub

Public Function Rechne(a As Long, b As Long) As String
Rechne = a * b
End Function

VBA/HTML - CodeConverter für Office-Foren, AddIn für Office 2002-2013 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:mumpel

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Gruß, René

Anzeige
AW: Variable an sub übergeben
26.07.2015 13:10:01
Daniel
Hi
Wenn du Variablen hast, die von mehreren Subs verwendet werden sollen, dann reicht es aus wenn du diese in einem allgemeinen Modul oberhalb der Subs mit Public deklarierst.
Eine zusätzliche Übergabe oder Deklaration ist dann nicht mehr erforderlich, diese Variablen sind allen Subs bekannt und sie behalten ihren Wert auch nach Makroende, so dass sie von det nächsten Sub weiter verwendet werden können.
Gruß Daniel

AW: Variable an sub übergeben
26.07.2015 15:52:35
P-Quest
Hallo Daniel,
so hatte ich es mir gedacht, aber es klappt nicht. Also, das Ganze etwas genauer:
Ich habe in einem Sheet 3 Schaltflächen mit folgenden Ereignissen:
Private Sub cmdDatenHolen_Click()
Call DatenHolen
End Sub

Private Sub cmdDatenImport_Click()
Call DatenImportieren
End Sub

Private Sub cmdLoeschen_Click()
Call QuelleLoeschen
End Sub
Diese Ereignisprozeduren finden sich im Arbeitsblatt Gesamtliste.
Die aufgerufenen Subs liegen in einem allgemeinen Modul. (Ist das der Haken?)
Nun führe ich Sub Daten holen aus. Es wird ein Sheet von einem Workbook in das aktuelle Workbook kopiert. Im Verlauf dieser Sub wird die Variable wsName belegt.
wsName = Left(strTitel, Len(strTitel) - 5)
Vorgang beendet. Klappt auch alles.
Nun kann der Anwender noch einige manuelle Kontrollen in seiner Datei machen und danach sollten mittels der Schaltfläche DatenImport die Daten aus dem Sheet(wsName) in die Gesamtliste kopiert werden.
In der Sub Datenimport verwende ich zur Zuweisung der Tabellenblätter folgende Befehle:
Set wsGesamt = Sheets("Gesamtliste")
Set wsAuswertung = Sheets(wsName)
und genau bei dem 2ten Set-Befehl steigt Excel aus.
wsName habe ich mit folgendem Eintrag deklariert:
Public wsName As String 'Wird als Name des eingef. Tabellenblatts verwendet
Ich habe alle drei Varianten, also Public... in das allgemeine Modul, in das Tabellenbaltt und in Beide, getestet und alle führen zum gleichen Laufzeitfehler 9: Index ausserhalb des...
Auch eine Änderung
Public wsName 'Wird als Name des eingef. Tabellenblatts verwendet
führt zum gleichen Fehler.
Was mache ich falsch?

Anzeige
Häkchen vergessen...sorry
26.07.2015 15:54:48
P-Quest

AW: Häkchen vergessen...sorry
26.07.2015 17:17:48
P-Quest

Kann es sein,...
26.07.2015 19:12:35
robert
Hi,
dass das Sheet wsName nicht vorhanden ist?

AW: Kann es sein,...
26.07.2015 19:52:57
P-Quest
Hallo Robert,
das wäre zu einfach :-)
Das Blatt ist vorhanden. Im Einzelschrittmodus ist gut nachzuvollziehen, wie die variable wsName im Programmverlauf mit dem erwünschten Wert belegt wird. Allerdings bleibt die Public Variable leer.

Fehler gefunden
26.07.2015 19:56:12
P-Quest
Hallo,
der Hinweis von Robert hat mich dazu gebracht mir meinen Code nochmal genauer anzusehen.
Und siehe da, ich D... habe übersehen, die Deklaration von wsName aus dem Deklarationsteil der Sub zu entfernen. Auskommentiert...Funktioniert.
Merke: Deklariere eine Varibalke niemals 2 mal!
Danke für eure Zeit und entschuldigt, dass ich sie euch gestohlen habe.
Gruß,
Peter
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen