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

ubound fehlerabfrage

ubound fehlerabfrage
18.12.2003 15:49:53
Alexander
hallo liebes forum...
habe mir vor geraumer zeit aus der excelhilfe
folgendes macro benutzt um bestimmte xls files aus einem Ordner auszulesen und mit weiteren macors zu beartbeiten:

-----------------------------------------------------------------
-----------------------------------------------------------------
Public

Function FileArray(strpath As String, strPattern As String)
Dim arrDateien()
Dim intCounter As Integer
Dim strDatei As String
If Right(strpath, 1) <> "\" Then strpath = strpath & "\"
strDatei = Dir(strpath & strPattern)
Do While strDatei <> ""
intCounter = intCounter + 1
ReDim Preserve arrDateien(1 To intCounter)
arrDateien(intCounter) = strDatei
strDatei = Dir()
Loop
FileArray = arrDateien
End Function

--------------------------------------------
--------------------------------------------

in den anderen macromodulen habe ich die zu öffnenden dateien eingetragen:
---------------------------------
---------------------------------
sp_pfad = ThisWorkbook.Path
strpath = ThisWorkbook.Path & "\"
arrFiles = FileArray(strpath, "alex_suchliste_rezept??????.xls")
ChDir sp_pfad

n = 0
NN = 0
For intCounter = 1 To UBound(arrFiles)
Workbooks.Open strpath & arrFiles(intCounter)
-------------------------------
-------------------------------

mein Problen ist nun wenn die datei nicht vorhanden ist, bleibt das macro stehen
weil ubound(arrfiles) keinen wert hat...
habe diesbezüglich in der excel hilfe auch nichts gefunden...
ich möchte aber das das macro weiterläuft und vielleicht noch eine fehlermeldung in eine Fehler datei schreibt, damit man später die entsprechnende datei erneuern kann..
warscheinlich ist es nur ein kleines stücken code...
aber meinereiner hat schon einiges ausprobiert und da ich in vba am anfang stehe
bin ich schnell mit meinem latein am ende....
vielleicht hat ja einer von euch eine idee...
ich bedanke mich schon mal für eure hilfe..
alexander

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ubound fehlerabfrage
18.12.2003 17:36:14
Nepumuk
Hallo Alexander,
füge die Anweisung: Redim arrFiles(0) vor dem ersten benutzen des Arrays ein. Dann liefert, wenn nichts eingetragen die UBound-Funktion den Wert 0 zurück. Wenn du jetzt eine For - Next Anweisung mit 1 als Startwert und keinem negativen Schritt ausführst, wird die Schleife übergangen.
Gruß
Nepumuk
AW: ubound fehlerabfrage
18.12.2003 21:56:22
Alexander
hallo Nepumuk,

also wenn ich das richtig verstehe setze ich
Redim arrFiles(0)
bevor ich die "for intcount schleife" starte ein

------------------------------
ReDim arrFiles(0)
For intCounter = 1 To UBound(arrFiles)
Workbooks.Open strpath & arrFiles(intCounter)
-------------------------------

habe ich gemacht...
hat auch funktioniert...bis...
ein folgendes marco das gleiche versucht....
mit anderen worten....
habe ein macro welches mehrere macros startet die jeweils verschiedene dateien
aus demselben ordner auslesen.. also ein macro bearbeitet alle dateien
alex_suchliste_rezept??????.xls
ein anderes
mina_suchliste_rezept??????.xls
wieder ein anderes
Renate_suchliste_rezept??????.xls

so nun habe ich zum testen nur mina_suchliste_rezept dringelassen..
die macros habe ich alle wie oben geändert, nun bekomme ich eine felhlermeldung
weil index auserhalb des gültigen bereiches ist...
habe ich es an die falsche stelle gesetzt?

aber wenn ich die redim in die funktion einbaue bekomme ich eine fehlermeldung...

also so..
----------------------
Public

Function FileArray(strpath As String, strPattern As String)
Dim arrDateien()
Dim intCounter As Integer
Dim strDatei As String
Dim arrFiles As Variant
If Right(strpath, 1) <> "\" Then strpath = strpath & "\"
strDatei = Dir(strpath & strPattern)
Do While strDatei <> ""
intCounter = intCounter + 1
ReDim Preserve arrDateien(1 To intCounter)
arrDateien(intCounter) = strDatei
strDatei = Dir()
Loop
ReDim arrFiles(0)
FileArray = arrDateien
End Function

----------------------
hmm irgendetwie sollte ich die zurücksetzung schon in die funktion einbauen sonst müßte ich ja in allen macros die entsprechenden zeilen einbauen...
?

ciaoi
Alexander
Anzeige
AW: ubound fehlerabfrage
19.12.2003 16:35:49
Nepumuk
Hallo Alexander,
da es sich bei der Variablen um eine Variant - Variable handelt, musst du anders vorgehen. Ich habe dir mal ein Beispiel gemacht, wie die Abfrage eines Variantarrays gehandhabt wird:

Option Explicit
Function FileArray(strpath As String, strPattern As String)
Dim arrDateien() As String, strDatei As String, intCounter As Integer
If Right(strpath, 1) <> "\" Then strpath = strpath & "\"
strDatei = Dir(strpath & strPattern)
Do While strDatei <> ""
intCounter = intCounter + 1
ReDim Preserve arrDateien(1 To intCounter)
arrDateien(intCounter) = strDatei
strDatei = Dir()
Loop
If intCounter > 0 Then FileArray = arrDateien
End Function
Public Sub test()
Dim TestArray As Variant, intIndex As Integer
TestArray = FileArray("D:\Eigene Dateien\AEG\Arbeitsaufträge PT4\", "*x")
If IsArray(TestArray) Then
For intIndex = LBound(TestArray) To UBound(TestArray)
MsgBox TestArray(intIndex)
Next
End If
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige