Herbers Excel-Forum - das Archiv

Feld übergeben

Bild

Betrifft: Feld übergeben
von: golem
Geschrieben am: 09.10.2003 11:50:15
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
Bild

Betrifft: AW: Feld übergeben
von: Hajo_Zi
Geschrieben am: 09.10.2003 11:53:36
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/

Bild

Betrifft: AW: Feld übergeben ohjemmine viele Fragen...
von: golem
Geschrieben am: 09.10.2003 12:58:00
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
Bild

Betrifft: AW: Feld übergeben ohjemmine viele Fragen...
von: Hajo_Zi
Geschrieben am: 09.10.2003 13:10:58
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/

Bild

Betrifft: also werden Dateien sortiert-nicht Zellen ?
von: golem
Geschrieben am: 09.10.2003 14:08:26
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?
Bild

Betrifft: AW: also werden Dateien sortiert-nicht Zellen ?
von: Hajo_Zi
Geschrieben am: 09.10.2003 14:13:35
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/

Bild

Betrifft: natürlich würde ich meine eigene designen! o.T.
von: golem
Geschrieben am: 09.10.2003 14:21:25
Bild

Betrifft: AW: Feld übergeben ohjemmine viele Fragen...
von: Reinhard
Geschrieben am: 09.10.2003 13:25:38
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



Bild

Betrifft: Danke für die Nachricht! o.T.
von: golem
Geschrieben am: 09.10.2003 14:10:58
Bild

Betrifft: AW: Feld übergeben
von: K.Rola
Geschrieben am: 09.10.2003 12:05:41
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
Bild

Betrifft: sicher?
von: golem
Geschrieben am: 09.10.2003 13:04:18
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
Bild

Betrifft: AW: sicher?
von: K.Rola
Geschrieben am: 09.10.2003 13:47:19
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
Bild

Betrifft: meine Hilfe ist Englisch :-( o.T.
von: golem
Geschrieben am: 09.10.2003 14:03:16
Bild

Betrifft: AW: meine Hilfe ist Englisch :-( o.T.
von: K.Rola
Geschrieben am: 09.10.2003 14:22:44
Hallo,

was will der Dichter uns damit sagen?

Gruß K.Rola
Bild

Betrifft: so gut, dass niemend weiss, dass ich... heiß
von: golem
Geschrieben am: 09.10.2003 14:55:13
selbst die deutsche Erklärung ist nicht immer leicht...

Gruß
Golem
 Bild