Anzeige
Archiv - Navigation
1120to1124
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

System.collections.arraylist

System.collections.arraylist
Born
Guten Tag,
ich versuche, ein Array dynamisch zu füllen. Im Internet an verschiedenen
Orten wird das über die VB-ArrayList gemacht. Muß man
dazu eine bestimmte Library einbinden?
Ich bekomme schon am Anfang bei Set objArraylst= CreateObject("System.Collections.arraylist")
eine Fehlermeldung:
"Laufzeitfehler.... Automatisierungsfehler"
Herzlichen Dank
Born

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
VBA<>VB
10.12.2009 11:30:39
Rudi
Hallo,
was hast du genau vor?
Gruß
Rudi
AW: System.collections.arraylist
10.12.2009 12:41:39
Reinhard
Hallo Born,
von Ransi fand ich auf
http://www.office-loesung.de/ftopic142856_0_0_asc.php?sid=4e93697d3adb47ff6ae63533fd69f986#595267
den nachfolgenden Code. Er läuft problemlos durch.
Public Sub test()
Dim objArrLst
Dim Mein_Array()
Dim L As Long
Dim scrDic
Set objArrLst = CreateObject("System.collections.arraylist")
Set scrDic = CreateObject("Scripting.dictionary")
Mein_Array = Array(1, 1, 1, 1, 2, 1, 4, 5, 4, 5)
On Error Resume Next
For L = 0 To UBound(Mein_Array) - 1
If Not scrDic.exists(Mein_Array(L)) Then
scrDic.Add Mein_Array(L), L
objArrLst.Add Mein_Array(L)
End If
Next
On Error GoTo 0
Erase Mein_Array
With objArrLst
.Sort
Mein_Array = .ToArray
End With
'Jetzt ist Mein_Array sortiert ohne Duplikate
Set objArrLst = Nothing
Set scrDic = Nothing
End Sub

Gruß
Reinhard
Anzeige
läuft bei mir nicht
10.12.2009 13:04:39
Rudi
Automatisierungsfehler.
Gruß
Rudi
AW: läuft bei mir nicht
10.12.2009 14:03:52
Born
Ja genau, Rudi,
ja, was heißt "Automatisierungsfehler"?
Ich will ReDim/Presever umgehen.
Born
AW: läuft bei mir nicht
10.12.2009 17:20:32
ransi
HAllo Born
Ich habe auch Excel 2007.
DA läuft das auch.
Das Problem war schonmal in irgendeinem Thread.
Das System.Collections hatte sich irgendwie mit SQL-Server gebissen...
Es wurde damals keine Lösung erarbeitet.
Ich will ReDim preserve umgehen.

Auch dafür gibt es mit Arrays oder Dictionarys Lösungen.
Was hast du genau vor ?
ransi
AW: läuft bei mir nicht
10.12.2009 18:12:16
Born
Hallo ransi,
danke fürs Schreiben.
Ich will eine Spalte aus Excel, die bei jedem Durchgang um ein paar Zahlen erweitert wird,
in ein Array packen.
Bisher habe ich einfach alle Werte in ein zweidimensionales Array gepackt:
AR = ActiveSheet.Range(Cells(9, 8), Cells(Range("B1000").End(xlUp).Row, 8))
Jetzt ist mir aufgefallen, daß nicht alle Werte aus der Spalte im Array sein sollten,
deshalb die Schleife:
For i = 1 to lrow
If Cells(i + 8, 8) 0 Then
s = s + 1
AR(s) = Cells(i + 8, 8)
End If
Next i
Aber da kriege ich Probleme eben damit, daß jetzt nicht nur lrow, sondern auch die
Menge der Werte im Array jedesmal anders ist. Und ich verstehe nicht, warum man
ein Array nicht mit
Dim AR(Range("B5")) dimensionieren kann.
Gruß und Dank,
Born
Anzeige
AW: läuft bei mir nicht
10.12.2009 15:13:56
Reinhard
Hallo Rudi,
tut mir leid, mein Fehler die Version nicht anzugeben.
Ich habe es auf XL2000 getestet, da lief es.
Gruß
Reinhard
AW: läuft bei mir nicht
10.12.2009 15:15:22
Born
Hallo Reinhard,
ich habe die XL2007.
Gruß,
Born
System.collections.arraylist ?
10.12.2009 17:51:20
Born
Hat noch jemand eine Idee?
Anzeige
AW: System.collections.arraylist ?
10.12.2009 18:31:41
ransi
HAllo
Die ArrayList ist in der mscorlib.dll enthalten.
Versuch mal den Verweis händisch zu setzen und dann so:
Public Sub machs()
Dim objAL As New ArrayList
objAL.Add 123
MsgBox objAL.Count
End Sub


Wenn das auch nicht funktioniert, hake den Versuch mit der Arraylist ab....
Dann versuch sowas:
Option Explicit


Public Sub test()
Dim AR As Variant
Dim objDic As Object
Dim L As Long
Dim vntOUT As Variant
Set objDic = CreateObject("Scripting.Dictionary")
AR = ActiveSheet.Range(Cells(9, 8), Cells(Range("B1000").End(xlUp).Row, 8))
For L = LBound(AR) To UBound(AR)
    If AR(L, 1) <> 0 Then objDic(L) = AR(L, 1)
Next
vntOUT = objDic.items
End Sub


DAs ist ebenfalls sehr schnell und sollte auf jedenfall funktionieren.
ransi
Anzeige
AW: System.collections.arraylist ?
10.12.2009 19:00:38
Born
Hallo ransi,
großartige Hilfe, vielen Dank.
Der erste Vorschlag brachte wieder den Automatisierungsfehler.
Vorschlag Nr. 2 wird in die Analen der Array-Erstellung eingehen.
Herzlichen Dank,
born

7 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige