Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
320to324
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
320to324
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Feld übergeben

Feld übergeben
09.10.2003 11:50:15
golem
Hallo,
Variablen einer anderen Funktion zu übergeben funkt, wie geht das mit Feldern?
Code:

Sub mak()
Dim a(20) As Integer, i as integer
For i = 0 To 20
a(i) = Cells(1 + i, 1)
Next
mak2 a(20)
End Sub



Sub mak2(Optional a As Integer)
Dim i as integer
For i = 0 To 20
Cells(1 + i, 4) = a(20)
Next
End Sub


FEhler:ByRef oder jetzt Datenfeld erwartet
Woran liegts und für was steht Optional(=Call by Value)??

mfg
Goli

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Feld übergeben
09.10.2003 11:53:36
Hajo_Zi
Hallo Golem

Kaum VBA Kenntnisse???

im folfgendem wird ein Array errstellt und dan sortiert.

Sub Dateiliste()
Dim Verzeichnis() As String
Dim Anzahl As Integer
Dim I As Integer
Dim strVerzeichnis As String
Dim StrDatei As String
Dim StrTyp As String
Dim Dateiname As String
Anzahl = 0
'    Liste erstellen
strVerzeichnis = "D:\Eigene Dateien\Hajo\"
StrTyp = "*.xls"
Dateiname = Dir(strVerzeichnis & StrTyp)
I = 3
Do While Dateiname <> ""
Anzahl = Anzahl + 1
ReDim Preserve Verzeichnis(1 To Anzahl)
Verzeichnis(Anzahl) = Dateiname
Dateiname = Dir
Loop
For I = Anzahl To 1 Step -1
MsgBox Verzeichnis(I)
Next I
End Sub


Public

Sub Sort_Z_A(SortArray, L, R)
'   sortieren von Z bis A
'   von GerdZ Herber.de
Dim I, J, x, y
I = L
J = R
x = SortArray((L + R) / 2)
While (I <= J)
While (SortArray(I) < x And I < R)
I = I + 1
Wend
While (x < SortArray(J) And J > L)
J = J - 1
Wend
If (I <= J) Then
y = SortArray(I)
SortArray(I) = SortArray(J)
SortArray(J) = y
I = I + 1
J = J - 1
End If
Wend
If (L < J) Then Call Sort_Z_A(SortArray, L, J)
If (I < R) Then Call Sort_Z_A(SortArray, I, R)
End Sub



Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/

Anzeige
AW: Feld übergeben ohjemmine viele Fragen...
09.10.2003 12:58:00
golem
Hallo&Danke Hajo,

zu Deiner Frage:
ich lerne(mit dem Forum) also bin ich...kenn C2+ ein wenig

meine Fragen:
der Befehl "Dir" öffnet einen Pfad, oder?
Ich sehe in beiden Sub Funktionen keinen Aufruf der anderen Sub Fkt? kann es sein, dass das Public Sub Rekursion (sich selbst aufruft) beinhaltet?

was macht diese Schleife:
For I = Anzahl To 1 Step -1
MsgBox Verzeichnis(I)
Next I

handelt es sich um quicksort bei der Public Fkt?

Mit den Funktionen habe ich ne Weile zu kauen :-)
Werden Dateien(in Windows) oder Zellen(in Excel) sortiert?
Viele Grüsse
Golem
Anzeige
AW: Feld übergeben ohjemmine viele Fragen...
09.10.2003 13:10:58
Hajo_Zi
Hallo Golem

da fehle ein Stück Code

Sort_Z_A Verzeichnis, LBound(Verzeichnis), UBound(Verzeichnis) ' aufrufen der Sub zum Sortieren
For I = Anzahl To 1 Step -1 ' Anzeige der sortietrten Einträge
MsgBox Verzeichnis(I)
Next I

mit Verzeichnis(Anzahl) = Dateiname werden die Dateinamen in das Array Verzeichnis geschrieben.


Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/

Anzeige
also werden Dateien sortiert-nicht Zellen ?
09.10.2003 14:08:26
golem
Hallo Hajo,
auch heute hast Du mir wieder weitergeholfen!
gruß
Golem

PS: Würde auch gerne so eine Grußformel bei meinen Fragen haben, wie mach ich das?
AW: also werden Dateien sortiert-nicht Zellen ?
09.10.2003 14:13:35
Hajo_Zi
Hallo Golem

dazu brauchts Du Speicherplatz irgendwo im Internet. Der Gruß ist eine gif Datei und der Rest ist Text den ich als Textbaustein in meinen Browser abgelegt habe.
Erstellt habe ich sie mit Adobe Photoshop 7.0

Ich kann es aber nicht leiden wenn jemand meine Grußformel nachbaut. Es sollte schon jeder seine eigene Form haben.


Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/

Anzeige
natürlich würde ich meine eigene designen! o.T.
09.10.2003 14:21:25
golem
AW: Feld übergeben ohjemmine viele Fragen...
09.10.2003 13:25:38
Reinhard
Ho golem,
ich hab mal Hajos Code so verändert dass beide Subs angesprochen werden wenn du Dateiliste() startest.
Ja, es wird bubblesort oder was ähnliches was sich selbst aufruft um etwas zu sortieren.
Dir(c:\*.exe) liefert die erste datei mit .exe Endung, weitere Dir(), die nächsten .exe.
Siehe Hilfe zu dir.
Verzeichnis() *hmmh* DateiListe() wäre ggfs sprechender gewesen.
Die von dir erwähnte For-shleife listet nacheinander alle gefunden dateien auf.
Gruß
reinhard


Sub Dateiliste()
Dim Verzeichnis() As String
Dim Anzahl As Integer
Dim I As Integer
Dim strVerzeichnis As String
Dim StrDatei As String
Dim StrTyp As String
Dim Dateiname As String
Anzahl = 0
'    Liste erstellen
strVerzeichnis = "d:\eigene dateien\"
StrTyp = "*.xls"
Dateiname = Dir(strVerzeichnis & StrTyp)
I = 3
Do While Dateiname <> ""
Anzahl = Anzahl + 1
ReDim Preserve Verzeichnis(1 To Anzahl)
Verzeichnis(Anzahl) = Dateiname
Dateiname = Dir
Loop
For I = Anzahl To 1 Step -1
'MsgBox Verzeichnis(I)
Cells(I, 1) = Verzeichnis(I)
Next I
Sort_Z_A Verzeichnis, LBound(Verzeichnis), UBound(Verzeichnis)
For I = Anzahl To 1 Step -1
'MsgBox Verzeichnis(I)
Cells(I, 5) = Verzeichnis(I)
Next I
End Sub





Sub Sort_Z_A(SortArray, L, R)
'   sortieren von Z bis A
'   von GerdZ Herber.de
Dim I, J, x, y
I = L
J = R
x = SortArray((L + R) / 2)
While (I <= J)
While (SortArray(I) < x And I < R)
I = I + 1
Wend
While (x < SortArray(J) And J > L)
J = J - 1
Wend
If (I <= J) Then
y = SortArray(I)
SortArray(I) = SortArray(J)
SortArray(J) = y
I = I + 1
J = J - 1
End If
Wend
If (L < J) Then Call Sort_Z_A(SortArray, L, J)
If (I < R) Then Call Sort_Z_A(SortArray, I, R)
End Sub



Anzeige
Danke für die Nachricht! o.T.
09.10.2003 14:10:58
golem
AW: Feld übergeben
09.10.2003 12:05:41
K.Rola
Hallo,

optionale Argumente müssen Variant sein!
Außerdem muss geprüft werden, ob das Argument übergeben wurde.
(IsMissing).
Siehe OLH dazu.

Gruß K.Rola
sicher?
09.10.2003 13:04:18
golem
Hallo&danke k.Rola,
bist Du Dir sicher, dass optionale Übergaben an andere Fkten Variant sein müssen, habe nämlich auch schon Fkten mit Boolean oder Int übergeben,nur bei Feldübergaben hängts noch.
Wann wird Ismissing dann aufgerufen- vor der Übergabe?
Viele Grüsse
Golem
AW: sicher?
09.10.2003 13:47:19
K.Rola
Hallo,

schau doch einfach mal in die Hilfe, das ist recht ordentlich erklärt.
IsMissing wird in der aufgerufenen Prozedur geprüft.

Gruß K.Rola
Anzeige
meine Hilfe ist Englisch :-( o.T.
09.10.2003 14:03:16
golem
AW: meine Hilfe ist Englisch :-( o.T.
09.10.2003 14:22:44
K.Rola
Hallo,

was will der Dichter uns damit sagen?

Gruß K.Rola
so gut, dass niemend weiss, dass ich... heiß
09.10.2003 14:55:13
golem
selbst die deutsche Erklärung ist nicht immer leicht...

Gruß
Golem

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige