Feld übergeben

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
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

Beiträge aus den Excel-Beispielen zum Thema " Speichern unter löst Combo-Box Change Ereignis aus"