Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Verweise

VBA Verweise
28.09.2019 21:39:58
Erwin
Hallo,
ich suche den Namen des Verweises um CreateObject("System.Collections.Arraylist")
zu nutzen.
Gruß Flo
Anzeige

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Verweise
28.09.2019 22:27:16
Erwin
Hallo Thorsten,
hilft nicht, führt zu einem Automatisierungsfehler,
da der Verweis fehlt, dessen Name ich ja gerade suche.
Gruß
Erwin
AW: VBA Verweise
28.09.2019 22:45:33
snb
Schau mal:
http://www.snb-vba.eu/VBA_Arraylist_en.html#L_4.1
AW: VBA Verweise
28.09.2019 22:46:17
Oberschlumpf
hmm
Hi Erwin,
aber der Dateiname wird doch in dem Link genannt.
Ransi schreibt:
HAllo
Die ArrayList ist in der mscorlib.dll enthalten.
>>>>>>>>>und er schreibt noch mehr Tipps<<<<<<<<<<<
Aber ok, wenn das nich hilft, weiß ich leider auch nix.
Ciao
Thorsten
Anzeige
AW: VBA Verweise
29.09.2019 09:38:58
Erwin
Hi,
den Namen hätte ich dann schon mal: mscorlib.dll
Hatte ich auch in den Verweisen ausgewählt und getestet mit:
Sub Test()
Dim c As Object
Set c = CreateObject("System.Collections.ArrayList")
End Sub
führt aber zu einem Automatisierngsfehler.
Ich habe Windows 10, Excel 15, Framework 4
Als Pfad für mscorlib.dll wird angezeigt:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb
Gruß
Flo
Anzeige
AW: VBA Verweise
29.09.2019 09:54:26
Oberschlumpf
Hi Erwin,
ich habe deinen Code gerade getestet - läuft auf meinem PC ohne Fehlermeldung durch.
Du nutzt Office 2013, ich nutze Office 2016.
Als Verweise in der getesteten, neuen Excel-Datei sind gesetzt:
Userbild
(die mscorlib.dll ist nicht mit dabei)
Eigtl find ich es unwahrscheinlich, weil Excel 2013 ja auch nicht sooo alt ist, aber vllt hats doch was mit deiner Version zu tun?
Ciao
Thorsten
Anzeige
AW: VBA Verweise
29.09.2019 19:49:19
Erwin
Hi Thorsten,
Windows 7 + Excel 2011: kein Fehler, ob mscorlib.dll erforderlich weis ich jetzt nicht mehr
Windows 10 + Excel 2016: kein Fehler, mscorlib.dll nicht erforderlich
Windows 10 + Excel 2013: Automatisierungsfehler
Hat wohl mit mscorlib.dll nichts zu tun.
Auf meinem Rechner war Windows 7 + Excel 2011 installiert, es erfolgt ein update auf Windows 10 + Excel 2013. Ob hier ein Installationsfehler kann ich nicht raus finden, zumal mir Administrationsrechte fehlen.
Gruß
Flo
Anzeige
AW: VBA Verweise
29.09.2019 22:20:09
Oberschlumpf
Hallo noch mal,
hmm...ich lese diesen Beitrag erst jetzt, nachdem ich im anderen schon geantwortet habe.
In deiner anderen Antwort dachte ich noch, du hast dich vertippt.
Aber auch hier schreibst du wiederholt Windows 10 + Office 2011 ?
Office 2011 ist doch die Version für Apple, oder?
Na ja, das nur hier nebenbei.
Ciao
Thorsten
Anzeige
AW: VBA Verweise
30.09.2019 08:24:17
Erwin
Hallo,
sorry, es war Windows7+Office2010 (excel 14.0)
Gruß
Flo
AW: VBA Verweise
30.09.2019 08:28:32
Erwin
Hi Thorsten,
sorry, war natürlich Windows7+Office2010
Gruß
Flo
LÖSUNG !!! ? !!! :-)
29.09.2019 10:09:47
Oberschlumpf
Hi Erwin!
Öffne mal im VBE Extras/Verweise und scroll dann so weit runter bis...
Userbild
und jetzt schreibst du in deinem Code so wie hier
Userbild
Die Auswahl "As ArrayList" stand nicht zur Verfügung, so lange der obige Verweis nicht gesetzt war.
Ich habe jetzt zwar keine Testcodes geschrieben, um tatsächlich den Beweis zu haben, mit dem ich deine Frage beantworten könnte, aber ich frage trotzdem :-)
Ist dein Problem nun gelöst?
Ciao
Thorsten
Anzeige
AW: LÖSUNG !!! ? !!! :-)
29.09.2019 20:05:08
Erwin
Hi Thorsten,
der Code muss auf Rechnern mit unterschiedlichen Windows + Office-Versionen laufen:
Windows7+Excel2011: funktioniert
Windows10+Excel:2016: funktioniert
Windows10+Excel2013: funktioniert nicht
hier der Code:
strText Liste die Sortiert werden soll, z.B.: "A12, A123, B12, A34, B12, A2, B1"
SortOrder, 0=unsortiert, 1=abwärts, 2=aufwärts
Function Sorttext(strText As String, Optional SortOrder As Byte = 2) As String
On Error GoTo Laufzeitfehler
Dim objArrayList As Object
Dim vntArr As Variant
Dim L As Long
If SortOrder > 1 Then
Set objArrayList = CreateObject("System.Collections.Arraylist")
vntArr = Split(strText, ", ")
With objArrayList
For L = LBound(vntArr) To UBound(vntArr)
.Add (vntArr(L))
Next
.Sort
If SortOrder = 2 Then
Sorttext = Join(.ToArray, ", ")
Else
.Reverse
Sorttext = Join(.ToArray, ", ")
End If
End With
Else
Sorttext = strText
End If
On Error GoTo 0
Exit Function
Laufzeitfehler:
'Fehlerbehandlung
'Call Fehlermeldung("Sorttext(strText As String, Optional sortOrderUp As Boolean = True) As  _
String")
End Function
Gruß
Flo
Anzeige
AW: LÖSUNG !!! ? !!! :-)
29.09.2019 22:12:31
Oberschlumpf
Hi Erwin,
ich freu mich, dass du zumindest grundsätzlich mit meiner Hilfe eine Lösung gefunden hast.
Aber warum es mit Win10+O2013 nicht geht, weiß ich leider auch nicht. Ich habe nur O2016 zur Verfügung.
Vielleicht findet sich ja noch jemand, der dir auch die letzte Frage beantworten kann.
Ciao
Thorsten
Anzeige
hier weiter offen...owT
29.09.2019 22:20:55
Oberschlumpf
AW: hier weiter offen...owT
29.09.2019 23:12:41
Erwin
Hallo,
vielleicht hat jemand eine einfache Lösung ohne "CreateObject("System.Collections.Arraylist")",
die ich dann für meinen Fall "Win10+O2013" anwenden kann. Falls nicht müsste ich die Liste dann
in einer Schleife sortieren. Interessant wäre auch eine Verifizierung des Falls "Win10+O2013".
Gruß
Flo
Anzeige
AW: hier weiter offen...owT
30.09.2019 08:50:30
Oberschlumpf
Hi Erwin?,
Hi Flo?,
vllt ein Missverständnis.
Wenn du den Verweis auf die mscorlib.dll setzt, wird die Zeile
CreateObject("System.Collections.Arraylist")

nicht mehr benötigt.
Hilft dieser Hinweis für XL2013?
Ciao
Thorsten
Anzeige
AW: hier weiter offen...owT
29.09.2019 23:12:48
Erwin
Hallo,
vielleicht hat jemand eine einfache Lösung ohne "CreateObject("System.Collections.Arraylist")",
die ich dann für meinen Fall "Win10+O2013" anwenden kann. Falls nicht müsste ich die Liste dann
in einer Schleife sortieren. Interessant wäre auch eine Verifizierung des Falls "Win10+O2013".
Gruß
Flo
Anzeige
AW: hier weiter offen...owT
29.09.2019 23:13:06
Erwin
Hallo,
vielleicht hat jemand eine einfache Lösung ohne "CreateObject("System.Collections.Arraylist")",
die ich dann für meinen Fall "Win10+O2013" anwenden kann. Falls nicht müsste ich die Liste dann
in einer Schleife sortieren. Interessant wäre auch eine Verifizierung des Falls "Win10+O2013".
Gruß
Flo
Anzeige
AW: hier weiter offen...owT
29.09.2019 23:13:41
Erwin
Hallo,
vielleicht hat jemand eine einfache Lösung ohne "CreateObject("System.Collections.Arraylist")",
die ich dann für meinen Fall "Win10+O2013" anwenden kann. Falls nicht müsste ich die Liste dann
in einer Schleife sortieren. Interessant wäre auch eine Verifizierung des Falls "Win10+O2013".
Gruß
Flo
Anzeige
AW: hier weiter offen...owT
29.09.2019 23:13:58
Erwin
Hallo,
vielleicht hat jemand eine einfache Lösung ohne "CreateObject("System.Collections.Arraylist")",
die ich dann für meinen Fall "Win10+O2013" anwenden kann. Falls nicht müsste ich die Liste dann
in einer Schleife sortieren. Interessant wäre auch eine Verifizierung des Falls "Win10+O2013".
Gruß
Flo
Anzeige
AW: hier weiter offen...owT
29.09.2019 23:13:59
Erwin
Hallo,
vielleicht hat jemand eine einfache Lösung ohne "CreateObject("System.Collections.Arraylist")",
die ich dann für meinen Fall "Win10+O2013" anwenden kann. Falls nicht müsste ich die Liste dann
in einer Schleife sortieren. Interessant wäre auch eine Verifizierung des Falls "Win10+O2013".
Gruß
Flo
Anzeige
AW: hier weiter offen...owT
29.09.2019 23:13:59
Erwin
Hallo,
vielleicht hat jemand eine einfache Lösung ohne "CreateObject("System.Collections.Arraylist")",
die ich dann für meinen Fall "Win10+O2013" anwenden kann. Falls nicht müsste ich die Liste dann
in einer Schleife sortieren. Interessant wäre auch eine Verifizierung des Falls "Win10+O2013".
Gruß
Flo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Verweise für die ArrayList in Excel


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Verweise überprüfen: Gehe zu Extras > Verweise.

  3. Verweis setzen: Scrolle durch die Liste und suche nach mscorlib.dll. Setze das Häkchen. Dieser Schritt ist wichtig, um den Fehler mit CreateObject("System.Collections.Arraylist") zu vermeiden.

  4. Code eingeben: Verwende den folgenden Code, um eine Instanz der ArrayList zu erstellen:

    Sub Test()
       Dim c As Object
       Set c = CreateObject("System.Collections.ArrayList")
    End Sub
  5. Testen: Führe den Code aus, um sicherzustellen, dass alles korrekt funktioniert.


Häufige Fehler und Lösungen

  • Automatisierungsfehler: Dies passiert oft, wenn der Verweis auf mscorlib.dll nicht gesetzt ist. Überprüfe die Verweise in Deinem VBA-Editor.
  • Falsche Excel-Version: Der Code kann auf verschiedenen Excel-Versionen unterschiedlich funktionieren. Teste Deinen Code auf Windows 10 mit Excel 2013, da hier spezifische Fehler auftreten können.
  • Fehlender Verweis: Wenn CreateObject("System.Collections.Arraylist") nicht funktioniert, stelle sicher, dass der Verweis auf mscorlib.dll gesetzt ist.

Alternative Methoden

Falls Du die Verwendung von CreateObject("System.Collections.Arraylist") vermeiden möchtest, kannst Du auch eine einfache VBA-Array-Lösung verwenden:

Function Sorttext(strText As String, Optional SortOrder As Byte = 2) As String
    Dim arr() As String
    arr = Split(strText, ", ")
    ' Sortieren des Arrays hier implementieren
    ' Verwende eine Schleife, um die Liste zu sortieren
    Sorttext = Join(arr, ", ")
End Function

Diese Methode sortiert die Liste ohne die ArrayList und kann in allen Excel-Versionen problemlos funktionieren.


Praktische Beispiele

Ein praktisches Beispiel zur Verwendung der ArrayList in VBA:

Function Sorttext(strText As String, Optional SortOrder As Byte = 2) As String
    Dim objArrayList As Object
    Dim vntArr As Variant
    Dim L As Long

    If SortOrder > 1 Then
        Set objArrayList = CreateObject("System.Collections.Arraylist")
        vntArr = Split(strText, ", ")
        With objArrayList
            For L = LBound(vntArr) To UBound(vntArr)
                .Add (vntArr(L))
            Next
            .Sort
            If SortOrder = 2 Then
                Sorttext = Join(.ToArray, ", ")
            Else
                .Reverse
                Sorttext = Join(.ToArray, ", ")
            End If
        End With
    Else
        Sorttext = strText
    End If
End Function

In diesem Beispiel wird eine Liste von Texten sortiert, die durch Kommas getrennt sind.


Tipps für Profis

  • Verwende With-Anweisungen: Diese verbessern die Lesbarkeit und Effizienz Deines Codes.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um die Ausführung Deines Codes auch bei unerwarteten Ereignissen zu gewährleisten.
  • Versionierung: Achte immer darauf, welche Excel-Version und welches Windows-Betriebssystem Du verwendest, da dies die Funktionalität Deines Codes beeinflussen kann.

FAQ: Häufige Fragen

1. Warum funktioniert CreateObject("System.Collections.Arraylist") nicht in Excel 2013?
Es kann an fehlenden Verweisen oder Inkompatibilitäten mit der Version liegen. Stelle sicher, dass mscorlib.dll korrekt referenziert ist.

2. Was ist der Unterschied zwischen ArrayList und einem normalen VBA-Array?
ArrayList bietet erweiterte Funktionen wie Sortierung und dynamische Größenanpassung, während ein normales VBA-Array statisch ist und nur eine feste Größe hat.

3. Wie kann ich die ArrayList in Excel 2010 verwenden?
Die Verwendung ist ähnlich; stelle sicher, dass Du die richtigen Verweise setzt und den Code entsprechend anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige