Microsoft Excel

Herbers Excel/VBA-Archiv

Venn-Diagramm Sortierung

Betrifft: Venn-Diagramm Sortierung von: Patrick
Geschrieben am: 25.08.2014 14:24:57

Hallo zusammen,

ich hoffe mir kann hier jemand helfen.
Mein Plan ist es, ein Venn-Diagramm aus zwei Listen zu erstellen. Dazu sind folgende Aufgaben zu erfüllen, die Umsetzung in das Diagramm an sich kriege ich glaube ich dann hin:

-Vergleichen der beiden Listen und die gleichen Listenzellen in eine Spalte (Schnittmenge der zukünftigen Vennkreise) kopieren
-kopieren und in eine andere Spalte einfügen der Zellen aus Liste 1, die nicht in Liste 2 enthalten sind.
-kopieren und in eine andere Spalte einfügen der Zellen aus Liste 2, die nicht in Liste 1 enthalten sind.

Ich habe mir in den unendlichen Weiten des Internets bereits einen Code besorgt, der auch zu funktionieren scheint (siehe Anhang), er besteht aus drei Teilprozeduren die über den "Berechnen Button" ausgeführt werden.
https://www.herber.de/bbs/user/92280.xlsm

Jetzt habe ich folgendes Problem, sind beide Listen identisch (genau identisch), dann kommt es zu einem Laufzeitfehler (13).
Desweiteren kommt es auch dazu, wenn eine der beiden Listen leer ist.

Hier liegt anscheinend ein logischer Fehler von mir vor, aber dazu reichen meine Kenntnisse leider nicht aus.

Ich hoffe ihr könnt mir bei dem Problem helfen!?

Gruß Patrick

  

Betrifft: If MyDic.Count > 0 then von: NoNet
Geschrieben am: 25.08.2014 15:37:30

Hallo Patrick,

die Überschneidungen werden in einem sog. "Dictionary-Objekt" abgelegt und dann per Transpose (=transponierte Matrix) in die Zellen geschrieben. Wenn das Dictionary-Objekt "leer" ist (also keine Elemente beinhaltet, da keine Überschneidung oder NUR Überschneidungen), funktioniert das Transponieren nicht, was zur Fehlermeldung führt.

Lösung : Prüfe im Code jeweils, ob das Objekt Elemente enthält (also die Anzahl größer 0 ist) :

Makro "Test1" :

        If MyDic.Count > 0 Then
            .Cells(6, 5).Resize(MyDic.Count) = WorksheetFunction.Transpose(MyDic.keys)
        End If
Makro "Test2" :
        If MyDic2.Count > 0 Then
            .Cells(6, 7).Resize(MyDic2.Count) = WorksheetFunction.Transpose(MyDic2.keys)
        End If
Makro "Test3" :
        If MyDic3.Count > 0 Then
            .Cells(6, 6).Resize(MyDic3.Count) = WorksheetFunction.Transpose(MyDic3.keys)
        End If
Gruß, NoNet


  

Betrifft: AW: If MyDic.Count > 0 then von: Patrick
Geschrieben am: 25.08.2014 16:15:10

Hallo NoNet,

klasse! Es hat funktioniert. Vielen Dank.

Gruß Patrick


 

Beiträge aus den Excel-Beispielen zum Thema "Venn-Diagramm Sortierung"