Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1108to1112
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 aus Call mitnehmen

Variable aus Call mitnehmen
Moritz
Hallo,
ich habe einzelne Makros für eine bessere Übersicht erstellt. Nun wollte ich aus einen Hauptmakro, die benötigten Makros mit dem Befehl Call starten. Nachdem die einzelen Makros abgearbeitet sind, benötige ich vereinzelt die Variablen. Wie kann ich einzelne Variablen mitnehmen in das Hauptmakro?
Anbei ein Beispiel:
Hauptmakro
Sub all()
Call isin
'Die Variable anzahl_isin und den Vektor isins() benötige ich später noch, wie kann ich diese ü _
bergeben?
Worksheets("Tabelle1").Cells(1, 1) = anzahl_isin
End Sub

Sub isin()
tabellenblatt = "Input"
tabellenblatt2 = "Tabelle1"
bn = 1
loeschen = "J1:K" & Worksheets(tabellenblatt2).Cells(Rows.Count, "J").End(xlUp).Row
Worksheets(tabellenblatt2).Range(loeschen).ClearContents
'Finale Vektor-Daten zum erfassen
ibereich = "D1:D" & Worksheets(tabellenblatt).Cells(Rows.Count, "A").End(xlUp).Row
Worksheets(tabellenblatt).Range(ibereich).AdvancedFilter Action:=xlFilterCopy, CopyToRange:= _
Worksheets(tabellenblatt2).Range("J2"), Unique:=True
For i = 1 To Worksheets(tabellenblatt).Cells(Rows.Count, "A").End(xlUp).Row
If Worksheets(tabellenblatt2).Cells(i, 10) = "" Or Len(Worksheets(tabellenblatt2).Cells(i,  _
10))  12 Then
Else
If bn = 1 Then
bn = Worksheets(tabellenblatt2).Cells(i, 10)
anzahl_isin = 1
Else
If Worksheets(tabellenblatt2).Cells(i, 10)  bn Then
bn = Worksheets(tabellenblatt2).Cells(i, 10)
anzahl_isin = anzahl_isin + 1
End If
End If
End If
Next i
Dim isins() As String
ReDim isins(anzahl_isin)
'ISIN-Vektor erstellen
j = 0
For i = 1 To Worksheets(tabellenblatt2).Cells(Rows.Count, "J").End(xlUp).Row
If Worksheets(tabellenblatt2).Cells(i, 10) = "" Or Len(Worksheets(tabellenblatt2).Cells(i,  _
10))  12 Then
Else
j = j + 1
isins(j) = Worksheets(tabellenblatt2).Cells(i, 10)
End If
Next i
End Sub
Vielen Dank für Eure Unterstützung!
Moritz

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Public anzahl_isin As ...
20.10.2009 16:45:18
Matthias
Hallo
Public anzahl_isin As DeinDatenTyp
und
Public isins As DeinDatenTyp
z. B.
Public isins As Long oder
in einem Modul daklarieren
Dann kannst Du von überall her darauf zugreifen.
Deinen benötigten DatenTyp musst Du selbst einstellen.
Gruß Matthias
AW: Variable aus Call mitnehmen
20.10.2009 17:13:05
Erich
Hi Moritz,
das geht auch ohne Public-Variablen. Die Routine wird mit einem Parameter aufgerufen,
der nachher die Ergebnisse enthält.
Probier mal:

Option Explicit                  ' IMMER ZU EMPFEHLEN !
Sub haupt()
Dim strIsin() As String
isinN strIsin()
' oder
'  Call isinN(strIsin())
MsgBox "Anzahl: " & UBound(strIsin)
MsgBox "strIsin(0): " & strIsin(0)
MsgBox "strIsin(1): " & strIsin(1)
MsgBox "strIsin(letztes): " & strIsin(UBound(strIsin))
End Sub
Sub isinN(isins() As String)
Dim wksI As Worksheet, wksT As Worksheet
Dim bn As String, ii As Long, anzahl_isin As Long, jj As Long
Set wksI = Worksheets("Input")
Set wksT = Worksheets("Tabelle1")
With wksT
.Cells(1, 10).Resize(.Cells(.Rows.Count, 10).End(xlUp).Row, 2).ClearContents
'Finale Vektor-Daten zum erfassen
wksI.Cells(1, 4).Resize(wksI.Cells(Rows.Count, 1).End(xlUp).Row).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=.Cells(2, 10), Unique:=True
'Finale Vektor-Daten zum erfassen
bn = 1
For ii = 1 To wksI.Cells(Rows.Count, 1).End(xlUp).Row
If Len(.Cells(ii, 10)) = 12 Then
If bn = 1 Then
bn = .Cells(ii, 10)
anzahl_isin = 1
Else
If .Cells(ii, 10)  bn Then
bn = .Cells(ii, 10)
anzahl_isin = anzahl_isin + 1
End If
End If
End If
Next ii
ReDim isins(anzahl_isin)
'ISIN-Vektor erstellen
jj = 0
For ii = 1 To .Cells(Rows.Count, 10).End(xlUp).Row
If Len(.Cells(ii, 10)) = 12 Then
jj = jj + 1
isins(jj) = .Cells(ii, 10)
End If
Next ii
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Variable aus Call mitnehmen
21.10.2009 10:07:05
Moritz
Hallo Erich,
ich habe die Makros teilweise in Tabellenblättern und teilweise in Modulen liegen. Muss ich dann jeweils immer Option Explicit über jedes Makro drüber setzen?
Da die eine ISIN in der Regel aus Buchstaben und Zahlen besteht muss ich sie als Integer bezeichnen oder läuft das auch mit String? Bei Option Explicit darf ich jede Variable nur einmal verwenden, oder? Also kann ich nicht mehrere Schleifen mit i laufen lassen. Auch nicht wenn ich jeweils für den Schleifen i wieder auf 1 bzw. die notwendige Zahl setze?
Viele Grüße
Moritz
Option Explicit usw.
21.10.2009 11:07:41
Erich
Hi Moritz,
eine Frage vorab - weil du dazu so gar nichts geschrieben hast:
Funktioniert die Kombination haupt() und isinN(...) bei dir? Das würde mich schon interessieren...
Doch nun zu deinen Fragen:
"Muss ich dann jeweils immer Option Explicit über jedes Makro drüber setzen?"
Bei schon existierenden Modulen empfehle ich dir das.
Wenn du in VBA im Menü Extras - Optionen, Karte "Editor"
die Option "Variablendeklaration erforderlich" aktivierst,
schreibt der VBA-Editor automatisch "Option Explicit" als erste Zeile in jedes neue Modul.
"Bei Option Explicit darf ich jede Variable nur einmal verwenden, oder?"
Nein! Jede Variable darf nur einmal deklariert, aber natürlich mehrfach verwendet werden.
(Das tust du doch auch schon, wenn du i als Schleifenzähler und
sinnvollerweise auch innerhalb der Schleife verwendest.)
In meinem isinN-Beispiel (mit Option Explicit) wird ii in zwei Schleifen genutzt.
Zu Option Explicit schau auch mal z. B. hier:
http://www.online-excel.de/excel/singsel_vba.php?f=4
http://www.vbarchiv.net/faq/allg_optionexplicit.php
http://www.vb-seminar.de/vb_27.htm
"Da die eine ISIN in der Regel aus Buchstaben und Zahlen besteht
muss ich sie als Integer bezeichnen oder läuft das auch mit String?"
Ein Integer kann keine Buchstaben beinhalten, sondern nur ganze Zahlen.
Das geht also nur mit String.
In meinem haupt-Beispiel steht nicht zufällig "Dim strIsin() As String".
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige