Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Wieso klettert Dir
#1
Hallo,

vielleicht kann mir jemand von euch bitte mal erklären, wieso die Funktion Dir durch ein gegebenes Verzeichnis klettert.

Habe ich untenstehenden Code, wird mit debug.print strDatei im entsprechenden Vereichnis ein Dateiname nach dem anderen

angezeigt.  Aber wieso?


Code:
Sub Klettern()
Dim i%, strDatei$

strDatei = Dir("C:\Testen\")
Do While strDatei <> ""
Debug.Print strDatei
strDatei = Dir()
Loop

End Sub
Antworten Top
#2
Hi,

weil der Code solange durch Dein Verzeichnis läuft, bis er keine Datei mehr findet. Wenn Du das nicht programmiert hast, sondern nur abkopiert, dann solltest Du Dich mal hier durcharbeiten:

http://www.online-excel.de/excel/singsel_vba.php?f=92 u.weitere
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Weil dein Programm das verlangt, Algor! :)
Do … Loop ist eine Schleife, die erst beendet wird, wenn Dir nichts mehr findet. Solange das nicht der Fall ist, geht's weiter und das Programm setzt die Datei-Variable immer auf den neuesten Dir-Stand, also ins nächste Unterverzeichnis, sofern noch eins vorhanden ist.
Gruß, Castor
Antworten Top
#4
Sorry Leute,

aber ich verstehe es nicht. Den Code habe ich schon selbst geschrieben, aber nur weil ich es weiß, nicht weil ich es verstehe!

Wenn ich so etwas mal ohne Schleife (rein zur Veranschaulichung!!!!), also while oder for programmiere sieht das Ganze so aus:


Code:
Sub Ohne_Schleife()
Dim strDatei$
strDatei = Dir("C:\Testen\")
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
strDatei = Dir
Debug.Print strDatei
.
.
.
.

End Sub


Wie macht die Funktion Dir das? Weil sie überladen wurde??
Antworten Top
#5
Hallo,

das schreibt Microsoft dazu:


Zitat:Beim ersten Aufruf der Dir-Funktion müssen Sie einen PathName angeben. Um das nächste Element abzurufen, können Sie die Dir-Funktion nachfolgend ohne Parameter aufrufen.
Gruß Atilla
Antworten Top
#6
@Atilla
dank deines Zitates bekomme ich zumindest eine grobe Vorstellung davon. Obwohl das "innere" der Dir Funktion, also das "wie" natürlich noch völlig verborgen bleibt.

Zeigt auch mein Code:
Code:
Sub Von_Element_zu_Element()
Debug.Print Dir("C:\Testen\")
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
Debug.Print Dir
.
.
.
End Sub

Das "nachfolgende" Dir weiß vom "vorausfolgenden" welchen Wert es hat.
Antworten Top
#7
Weil es die VBA übersetzung ist von MS-DOS:


Code:
sub M_snb()
  msgbox createobject("wscript.shell").exec("cmd /c Dir C:\Testen\*.* /b/a-d").stdout.readall
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste