Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1196to1200
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
Inhaltsverzeichnis

Leeres Array

Leeres Array
Oliver
Hallo Profis,
ich werte Logfiles in bestimmten Archiven aus. Dabei verwende ich die Array-Funktion.
Leider sind die Archive auch manchmal leer und damit auch das Array.
sPath = Worksheets("Menue").Cells(FirstToolRow + Tool, 16) '"W:\log"
sPattern = Suchmuster$ '"*EventLog*.log"
arr = arrAll(sPath, sPattern)
'*** in der nächsten Zeile führt das "leere" Array zum Laufzeitfehler=9 ********
For iCounter = 1 To UBound(arr)
Cells(iCounter + 1, 2) = sPath & arr(iCounter)
Gibt es eine "saubere" Lösung, mit der man abfragen kann, ob ein Array leer ist?
If arr0 oder If arr="" funktionieren nicht! Schlimmstenfalls schicke ich den Laufzeitfehler mit on error... ins Nirvana.
Hat jemand vielleicht eine bessere Lösung?
Liebe Grüsse vom wilden Olli;-)

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Leeres Array
07.02.2011 19:25:38
ransi
HAllo
Versuch mal sowas:
for each ding in arr
iCounter = icounter+1
Cells(iCounter + 1, 2) = sPath & ding
next
Wenn das nicht geht, ich hab noch was mit API...
ransi
Leeres Array
07.02.2011 20:50:24
Anton
Hallo Olli,
so?:
If IsArray(arr) Then
For iCounter = 1 To UBound(arr)
'usw
End If
mfg Anton
AW: Leeres Array
08.02.2011 03:05:21
Peter
Hallo Olli
versuche mal
Dim Array_leer
If arr=Array_leer then msgbox "Leer"
Wenn du eine Variable deklarierst und ihr keinen Wert zuweist
ist sie wie dein Array leer
ciao Peter
AW: Leeres Array
08.02.2011 10:04:18
Tino
Hallo,
kommt darauf an wie arr Deklariert ist.
Ist diese vom Typ Variant und bekommt erst von der Funktion arrAll ein Array übergeben,
wobei die Funktion nur eine Array übergibt wenn was gefunden wurde, kann man es so lösen.
Dim arr
IF IsArray(arr) then
Ist arr bereits als Array Deklariert, kannst Du es mit einer Api Funktion lösen.
Private Declare Sub GetSafeArrayPointer Lib "msvbvm60.dll" Alias "GetMem4" _
(pArray() As Any, sfaPtr As Long)
Sub Beispiel()
Dim arr(), sfaPtr As Long
GetSafeArrayPointer arr, sfaPtr
If sfaPtr > 0 Then
MsgBox "Array ist initialisiert"
Else
MsgBox "Array ist nicht initialisiert"
End If
End Sub
Gruß Tino
Anzeige
AW: Leeres Array
08.02.2011 14:27:38
Oliver
Hallo Tino, hallo Leute,
Deine Lösung war zwar die letzte im Forum, aber auch die Einzige, die auf Anhieb funktioniert hat.
Trotdem Dank an alle!
der Code sieht jetzt so aus:
PrivateDeclareSubGetSafeArrayPointer Lib "msvbvm60.dll" Alias "GetMem4" (pArray() As Any, sfaPtr As Long)
Sub Mapping_Logfiles()
Dim arr(), sfaPtr As Long
Dim..... bla bla bla
Range("A2:I65536").Select
Selection.ClearContents
Range("A2").Select
sPath = Worksheets("Menue").Cells(FirstToolRow + Tool, 16) '"W:\log"
sPattern = Suchmuster$ '"*EventLog*.log"
arr = arrAll(sPath, sPattern)
GetSafeArrayPointer arr, sfaPtr
If sfaPtr > 0 Then
'***MsgBox "Array ist initialisiert"
For iCounter = 1 To UBound(arr)
Cells(iCounter + 1, 2) = sPath & arr(iCounter)
'***Pseudo_Hyperlink_erstellen()
Cells(iCounter + 1, 2).Select
Selection.Font.ColorIndex = 5
Selection.Font.Underline = xlUnderlineStyleSingle
test$ = sPath & arr(iCounter)
ActiveWindow.ScrollRow = iCounter 'nach oben scrollen
Next iCounter
Else
'***MsgBox "Array ist nicht initialisiert"
End If
End Sub
()
Tausend Dank!
Vom wilden Olli
Anzeige
AW: Leeres Array
09.02.2011 04:27:52
peter
ich dachte so
Sub arreay_test()
Dim test_array(1 To 8)
Dim test_array_leer
Dim array_zähler As Byte
test_array(1) = "mo"
test_array(2) = "di"
test_array(3) = "mi"
test_array(4) = "do"
test_array(5) = "fr"
array_zähler = 1
Do While array_zähler 

ciao Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige