Switch & Überprüfung

Da benötige ich mal die Fehlermeldung. Das ist grundsätzlich: Nicht einfach schreiben "Hab nen Fehler" sondern konkret die Fehlermeldung. Was ist 'Fotomanagement.Jahr'? Ein Modul, aus dem du die Prozedur 'Jahr' aufrufst? Wenn ja, welchen Datentyp gibt sie zurück?

Versuch' doch bitte, mich mit etwas mehr Infos zu versorgen, dann kann ich Dir auch effektiver helfen :)
 
ok, dann mach ich das halt mal :)
ich hab ein Formular, welches Fotomanagemenet heißt und welches zwei Textfeldern besitzt. Die zwei Textboxes haben die Namen Tag und Jahr. Weiters habe ich eine ComboBox, wo der User den Monat auswählt. Diese ComboBox heißt Monat.

Es gibt dann weiters einen Button, der bestimmte Befehle durchführen muss.
Ein Befehl ist z.B. dass er einen Ordner erstellt mit dem gewünschten Datum. Also z.B. C:\2004\april\22

Private Sub Ausführen_Click() 'wobei Ausführen der Name des Buttons ist
^^hier runter habe ich die bisherigen Anweisungen. Ich möchte jetzt dass er den Tag, Monat und Jahr von den Textboxes und der Combobox nimmt (wobei die Monate umgewandelt werden ,aslo ä->ae und LCase) und dann diesen Ordner erstellt.
Vielen Dank für jede Hilfe! :)

Ich möchte noch hinzufügen, dass Tag und Jahr jeweils "Number" vom DataFormat sind und Monat ist "Allgemein".

Achja, und die Fehlermeldung lautet:
Laufzeitfehler '75':
Fehler beim Zugriff auf Pfad/Datei beim ersten MkDir
 
Zuletzt bearbeitet:
Vorraussetzung ist, dass der Ordner "H:\Fotos\Eigene Fotos\Fotoalbum" bereits existiert. Wenn das der Fall ist, wird des Fehlers Ursache sein, dass der Odrner "H:\Fotos\Eigene Fotos\Fotoalbum\$" & Jahr" schon existiert. Einen bereits existierenden Ordener kann man so nicht überschreiben. Untersuche das mal und versuche folgenden Prozedur-Vorschlag:

Private Sub Ausführen_Click()

Dim Tag$, Monat$, Jahr$

Set fs = CreateObject("Scripting.FileSystemObject")

Jahr = CStr(Fotomanagement.Jahr.Text)
Monat = CStr(Fotomanagement.Monat.Text)
Tag = CStr(Tage.Text)

If Not fs.folderexists("H:\Fotos\Eigene Fotos\Fotoalbum\$" & Jahr) = True Then
MkDir ("H:\Fotos\Eigene Fotos\Fotoalbum\$" & Jahr)
MkDir ("H:\Fotos\Eigene Fotos\Fotoalbum\$" & Jahr & "\$" & Monat)
MkDir ("H:\Fotos\Eigene Fotos\Fotoalbum\$" & Jahr & "\$" & Monat & "\$" & Tag)
Else
MsgBox "c:\$" & Jahr & " existiert bereits!", vbInformation, "Bereits vorhanden"

End If

End Sub

EDIT: hatte bei der Abfrage, ob der Ordner bereits existiert, vergessen, den Pfad zu ändern, sorry :)
 
Zuletzt bearbeitet:
hm.... das könnte der fall sein, dass er deswegen fehler machen, weil der ordner schon vorhanden ist.
ich hätte aber mal ne grundsätzliche frage:
spielt es eine rolle, ob ich nach dem \ noch ein $ verwende oder nicht?

bei mir macht er jetzt aber beim tag probleme. und zwar sagt er mir "fehler beim kompilieren: ungültiger bezeichner" beim .Tag in der folgenden dritten zeile:

Jahr = CStr(Fotomanagement.Jahr.Text)
Monat = CStr(Fotomanagement.Monat.Text)
Tag = CStr(Fotomanagement.Tag.Text)

find ich komisch, denn Tag ist ja vorhanden, genauso wie Jahr und Monat. Wieso steht da eigentlich .Text und nicht .Number? sorry für die peinliche frage, aber ich bin erst newbie in VB. :rolleyes:
 
Wo wir grad bei Grundsätzlichem sind: Deklariere Deine Fragen nicht als peinlich. Frag' einfach :)

Aber nun zu den Problemen:
1. Es spielt keine Rolle, ob Du nun ein Dollar-Zeichen davor setzt oder nicht. Nur, wenn ich mir Deinen ersten Beitrag hier ansehe, denke ich einfach, Du wolltest die Ordner so benennen. Deshalb bin ich dabei geblieben...

2. Tag ist offensichtlich ein reserviertes Wort. Daher die Fehlermeldung. Wie Du an meinem letzten Beitrag siehst, habe ich Tag in Tage umbenannt und es funktioniert.

3. Egal, welches DataFormat Du für ein Textfeld wählst, so interessiert mich doch nur, was darin steht. Und das ist nunmal die Eigenschaft .Text. :)
Mit dem DataFormat kannst du z.B. folgendes ereichen: Du wählst für ein Textfeld, sei der Name 'txtTest', das DataFormat 'Datum' . So kannst Du nun z.B. den Monat der Eingabe mit 'Month(txtTest.Text)' feststellen. Steht also in 'txtTest' 22.04.1998, so wird Dir '4' geliefert....
 
ich bin jetzt schon soweit, dass er in den vorhandenen ordner 2004 reingeht und dort den monat anlegt (wenn ich die CStr Zeile für Tag kommentiere). folgender code:

Code:
    Dim Tag$, Monat$, Jahr$
    
    Set fs = CreateObject("Scripting.FileSystemObject")
    
    Jahr = CStr(Fotomanagement.Jahr.Text)
    Monat = CStr(Fotomanagement.Monat.Text)
    Tag = CStr(Fotomanagement.Tag.Text)
    
    If Not fs.folderexists("H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr) = True Then
    MkDir ("H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr)
    MkDir ("H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat)
    MkDir ("H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat & "\" & Tag)
        ElseIf Not fs.folderexists("H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat) = True Then
    MkDir ("H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat)
    MkDir ("H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat & "\" & Tag)
        ElseIf Not fs.folderexists("H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat & "\" & Tag) = True Then
    MkDir ("H:\Fotos\Eigene Fotos\Fotoalbum\" & Jahr & "\" & Monat & "\" & Tag)
    Else
    MsgBox "Ordner existiert bereits!", vbInformation, "Bereits vorhanden"
    
    End If

leider macht er mir aber bei Tag = CStr etc... wie beschrieben den Fehler mit ungültiger Bezeichner. Ich hab jetzt extra nocheinmal nachgeschaut. Die Textbox heißt Tag - komisch. Woran kann das noch liegen? Danke für jede Hilfe! :)
 
wow, super - es funktioniert. vielen dank für deine hilfe!
ich hätte aber abschließend noch eine kleinigkeit:
wie konvertiere ich nun die Monatsnamen?
ich hab schon folgenden code

Code:
    LCase (Replace(Jänner, "ä", "ae"))
    LCase (Februar)
    LCase (Replace(März, "ä", "ae"))
    LCase (April)
    LCase (Mai)
    LCase (Juni)
    LCase (Juli)
    LCase (August)
    LCase (September)
    LCase (Oktober)
    LCase (November)
    LCase (Dezember)
aber wo plaziere ich es am besten, damit die variable Monat mit dem neuen wert überschrieben wird?
 
Wie bereits erwähnt --> Tag ist ein reserviertes Wort. Ändere die Bezeichnung des Textfeldes 'Tag' und es funktioniert. Setze vor die Namen der Textfelder einfach 'txt' und gut. Dann erkennst Du sie auch später als Textfelder wieder ;)
 
Naja, die Variable heißt Monat und ist ein String. Das Wie ist halt das Problem. Ich kapier einfach nicht, wie man jetzt den geänderten Monat in eine neue Variable schreibt. Sagen wir dass monatneu die neue Variable ist für Monat nach der Änderung. Ich ändere zwar den Monat mit obigen Code, aber ich schreibe sie ja nirgends in eine Variable (monatneu), das ist genau das was ich nicht kapier.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück