gary: Excel: Zellenvergleich

Hallo alle miteinander,

Ich möchte gerne zwei Zelleninhalte (Zahlenwerte) miteinander vergleichen. Das Ergebniss soll optisch ausgegeben werden.

Sind die zwei Werte identisch, soll ein grüner Kreis erscheinen - sind die Werte ungleich, soll ein roter Kreis erscheinen. Also ähnlich einer Ampel. Die "Ampel"-Leuchten sind nicht das Problem. Sondern wie Frage ich zuerst die zwei Zellen auf Gleichheit ab, und wie setzte ich das Abfrageergebnis beispielsweise über ein Makro ab.

Viele Grüsse gary

  1. Hallo alle miteinander,

    Habe Möglichkeiten zum Zellvergleich gefunden:

    Beispiel 1:
    =ODER (IDENTISCH (ZelleA; ZelleB))
    Dies liefert den Ausdruck Wahr oder Falsch und kann zwei Zellenwerte vergleichen.

    Beispiel 2:
    =UND(IDENTISCH(ZelleA1; ZelleA2); IDENTISCH(ZelleB1; ZelleB2); IDENTISCH(ZelleC1; ZelleC2))
    Dies liefert den Ausdruck Wahr oder Falsch und kann mehrere Zellenpaare vergleichen. Dabei gilt, ist nu ein Paar ungleich, wird Falsch ausgegeben.

    die Ampellösung mit grün für Wahr und Rot für Falsch ist aber auf Eis gelegt. Zu kompliziert...

    Viele Grüsse gary

    1. Hi,

      Beispiel 1:
      =ODER (IDENTISCH (ZelleA; ZelleB))
      Dies liefert den Ausdruck Wahr oder Falsch und kann zwei Zellenwerte vergleichen.

      das sieht mir etwas umständlich aus. Das müsste doch auch reichen:

      =A1=B1

      Beispiel 2:
      =UND(IDENTISCH(ZelleA1; ZelleA2); IDENTISCH(ZelleB1; ZelleB2); IDENTISCH(ZelleC1; ZelleC2))
      Dies liefert den Ausdruck Wahr oder Falsch und kann mehrere Zellenpaare vergleichen. Dabei gilt, ist nu ein Paar ungleich, wird Falsch ausgegeben.

      Hier müsstest Du mal etwas präzisieren, was Du vorhast. Um die Anzahl der unterschiedlichen Paare herauszubekommen kannst Du schreiben:

      =SUMME(WENN(A1:D1=A2:D2;0;1))

      Die Eingabe der Formel muss allerdings mit Strg + Shift + Enter abgeschlossen werden, so dass die Formel dann so aussieht:

      {=SUMME(WENN(A1:D1=A2:D2;0;1))}

      Ist das Ergebnis 0, sind alle Paare gleich.

      die Ampellösung mit grün für Wahr und Rot für Falsch ist aber auf Eis gelegt. Zu kompliziert...

      Nanu, aufgeben? Wenn Du das mal etwas genauer beschreibst, kann man da sicher etwas machen - vor allem, wie Deine Ampellösung bis jetzt aussieht und wie was herauskommen soll.

      Viele Grüße

      Jörg

      1. Hi Jörg,

        Hier müsstest Du mal etwas präzisieren, was Du vorhast. Um die Anzahl der unterschiedlichen Paare herauszubekommen kannst Du schreiben:

        Mach ich, bitte sehr:
        Excel-Rechner

        Ablauf ist so:
        Ich öffne die E-Mail. Makiere den Mailinhalt, kopiere mit strg+c diesen Inhalt, und füge in mein Excel mit strg+v den Inhalt in die Spalte A1.

        Dann drücke ich meinen selbstgemachten Knopf "Import einlesen" und Excel liest die Daten im richtigen Format in die Spalte B und C ein. Jetzt berechnet mir das Excelprogram die Gültigen Preise und zeigt für jedes Land die Validen Werte an.

        Für Deutschland wird z. B. in F38 bis F40 die Netto, Steuer und Brutto Preise errechnet. Darunter stehen die übermittelten E-Mail-Werte in F43 - F45. Meine Formel untersucht oben und unten die Werte auf Gleichheit und zeigt dann im Feld F/G50 Wahr oder Falsch an.

        Nanu, aufgeben? Wenn Du das mal etwas genauer beschreibst, kann man da sicher etwas machen - vor allem, wie Deine Ampellösung bis jetzt aussieht und wie was herauskommen soll.

        Ursprünglich war eine Art Ampel rot/grün geplant, anstelle des Textes "Wahr / Falsch".

        Nur weiss ich nicht, wie ich ein Makro über den Wertezustand abhängig von F/G50 aufrufen soll. Gedacht war, dass die Bürokraft quasi gleich sieht: "Grün" ok, ist freigegeben zum Druck...

        Desswegen sagte ich auf Eis gelegt...

        Mit freundlichem Gruss gary

        1. Hallo zusammen,

          Hat jemand eine Idee, wie man das Aussehen einer Grafik von einem Zellenwert abhängig machen kann?

          Also wenn z.B: A1="Wahr" ist eine Grafik anzeigen. Wenn A1="Falsch" ist eine andere Grafik anzeigen.

          Viele Grüsse gary

          1. Hi gary,

            Hat jemand eine Idee, wie man das Aussehen einer Grafik von einem Zellenwert abhängig machen kann?

            Also wenn z.B: A1="Wahr" ist eine Grafik anzeigen. Wenn A1="Falsch" ist eine andere Grafik anzeigen.

            kein Problem:

            Lege beide Grafiken übereinander. Mit einem entsprechenden Ereignis (z. B. Worksheet_Calculate) prüfst Du den Zellwert und blendest je nach Wunsch eine der Grafiken aus, die andere dafür ein. Die Syntax wäre so:

            Sheets("Sowieso").Shapes("Picture 1").Visible = True

            Viele Grüße

            Jörg

            1. Hi Jörg,

              Das heisst ich könnte am Ende des Makros, dass dem Button "Import einlesen" zugeordnet ist, mit dem Befehl Worksheet_Calculate einen Zellenwert (F/G50) auslesen und über eine Bedingung Sheets("Sowieso").Shapes("Picture 1").Visible = True
              ausführen. Na dann muss ich manuell an den Makro-Code. Aus Bequemlichkeit nutze ich oft "Makros aufzeichnen". (Ja ich weis, bin ein fauler Hund *g*)

              Ist das grob richtig?

              Gruss gary

              1. Hi gary,

                Das heisst ich könnte am Ende des Makros, dass dem Button "Import einlesen" zugeordnet ist, mit dem Befehl Worksheet_Calculate einen Zellenwert (F/G50) auslesen und über eine Bedingung Sheets("Sowieso").Shapes("Picture 1").Visible = True
                ausführen.

                nein, nicht ganz. Wenn Du sowieso schon eine Routine hast, brauchst Du das Ereignis nicht mehr, also Worksheet_Calculate. Ereignis heißt ja, dass etwas ausgeführt wird, wenn etwas passiert - in diesem Fall bei einer Berechnung. Wenn Deine Routine schon läuft, kannst Du den Vergleich der Werte und das davon abhängige Ein- und Ausblenden der Grafiken auch gleich da einbauen.

                Das Calculate-Ereignis würde sich dann anbieten, wenn die Zahlen händisch geändert werden.

                Na dann muss ich manuell an den Makro-Code. Aus Bequemlichkeit nutze ich oft "Makros aufzeichnen". (Ja ich weis, bin ein fauler Hund *g*)

                Naja, Makros und damit der Makrorecorder haben ihre Grenzen. Versuche mal, mit dem Recorder eine Schleife oder eine einfache If-Abfrage aufzuzeichnen. ;-)
                Außerdem kannst Du mal beobachten, wie oft der die Methoden "Select" und "Activate" aufzeichnet. Die sollten nämlich vermieden und im günstigsten Fall gar nicht verwendet werden. Sonst kommt bald die Frage: "Bei der Ausführung meines Makros flackert und wackelt die Bildschirmanzeige. Wie bekomme ich das weg?" ;-)

                Viele Grüße

                Jörg

                1. Hi Jörg,

                  nein, nicht ganz. Wenn Du sowieso schon eine Routine hast, brauchst Du das Ereignis nicht mehr, also Worksheet_Calculate.

                  Nur zum Verständnis:
                  Routine ist das Makro? Desshalb wird "Worksheet_Calculate" nicht benötigt.

                  Ereignis heißt ja, dass etwas ausgeführt wird, wenn etwas passiert - in diesem Fall bei einer Berechnung.

                  Jein, das Ereignis ist der Klick auf "Import einlesen". Excel rechnet nach der Aufteilung der Datenfelder automatisch die in den einzelnen Zellen befindlichen Formeln aus.

                  Wenn Deine Routine schon läuft, kannst Du den Vergleich der Werte und das davon abhängige Ein- und Ausblenden der Grafiken auch gleich da einbauen.

                  Also im Makro "Funktion_Import_Einlesen" was ja dem Knopf "Import einlesen" (eine schlichte Grafik) zugewiesen ist am Ende(!) die zusäzliche Ampellösung anfügen. Am Ende desshalb, da die Ampelfunktion auf das Ergebnis in der Zelle F/G50 (Wahr/Falsch) warten muss?

                  Das Calculate-Ereignis würde sich dann anbieten, wenn die Zahlen händisch geändert werden.

                  "Händisch" wird eigentlich nichts geändert. Die Importdaten stammen aus der E-Mail und werden mit obigem Makro in Felder aufgeteilt. Die anderen Werte sind fest eingestellt. Zur Berechnung dienen die übermittelten E-Mail Stückzahlen.

                  Grund für das Ganze ist, dass man mir hier im Forum dazu geraten hat,  übermittelte E-Mail Daten nachzurechnen. Weil die Clientseite am Javacode manipulieren könnte.

                  Zurück zum Makrocode:
                  Also sowas in die Richtung if FG50=WAHR then goto Ampel_grün
                  if FG50=FALSCH then goto Ampel_rot

                  Ampel_grün:
                  Grafikbefehle....

                  Ampel_rot:
                  Grafikbefehle....

                  Wobei der Sybtax jetzt natürlich gar nicht Excelkompatibel ist *g*

                  BtW. Ist die Makrosprache VisualBasic? Hab sowas mal gelesen...

                  Viele Grüsse gary

                  1. Hi gary,

                    Nur zum Verständnis:
                    Routine ist das Makro? Desshalb wird "Worksheet_Calculate" nicht benötigt.

                    ja, genau.

                    Ereignis heißt ja, dass etwas ausgeführt wird, wenn etwas passiert - in diesem Fall bei einer Berechnung.

                    Jein, das Ereignis ist der Klick auf "Import einlesen". Excel rechnet nach der Aufteilung der Datenfelder automatisch die in den einzelnen Zellen befindlichen Formeln aus.

                    Also doch. ;-)
                    Der Klick auf "Import einlesen" wird abgefangen, also ist das das Ereignis. Der Klick passiert, also wird etwas ausgeführt. Hier sind noch ein paar weitere Ereignisse (müsste allerdings mal etwas aktualisiert werden …):

                    http://www.vba-beispiele.de/office.php?was=1302

                    Wenn Deine Routine schon läuft, kannst Du den Vergleich der Werte und das davon abhängige Ein- und Ausblenden der Grafiken auch gleich da einbauen.

                    Also im Makro "Funktion_Import_Einlesen" was ja dem Knopf "Import einlesen" (eine schlichte Grafik) zugewiesen ist am Ende(!) die zusäzliche Ampellösung anfügen. Am Ende desshalb, da die Ampelfunktion auf das Ergebnis in der Zelle F/G50 (Wahr/Falsch) warten muss?

                    Ja, genau:

                    • Klick auf Grafik
                    • Daten werden eingelesen
                    • Excelformeln rechnen
                    • Prüfen der Werte
                    • Ampelfunktion, also Grafiken aus-/einblenden

                    "Händisch" wird eigentlich nichts geändert. Die Importdaten stammen aus der E-Mail und werden mit obigem Makro in Felder aufgeteilt. Die anderen Werte sind fest eingestellt. Zur Berechnung dienen die übermittelten E-Mail Stückzahlen.

                    Dann brauchst Du wirklich keine weiteren Event-Handler, Ereignisse müssen also nicht abgefangen werden.

                    Zurück zum Makrocode:
                    Also sowas in die Richtung if FG50=WAHR then goto Ampel_grün
                    if FG50=FALSCH then goto Ampel_rot

                    Ampel_grün:
                    Grafikbefehle....

                    Ampel_rot:
                    Grafikbefehle....

                    Am liebsten würde ich jetzt "Autsch" schreiben. ;-)
                    Goto verwendet man eigentlich nur noch bei Fehlerbehandlungen, sonst nicht mehr.

                    if FG50=WAHR then
                        Grafik1.visible = true
                        Grafik2.visible = false
                    else
                        Grafik1.visible = false
                        Grafik2.visible = true
                    end if

                    Wobei der Sybtax jetzt natürlich gar nicht Excelkompatibel ist *g*

                    Nee, meine auch nicht, dient ja auch nur zur Veranschaulichung.

                    BtW. Ist die Makrosprache VisualBasic? Hab sowas mal gelesen...

                    Einmal gibt es VB, das ist die Sprache an sich. Dann gibt es VBA, das ist Visual Basic for Applications und ist eingebettet in die einzelnen Office-Anwendungen. Dadurch hat "jedes" VBA ein paar Besonderheiten, zum Beispiel besondere Objekte, Methoden und Eigenschaften. In Excel gibt es zum Beispiel das Range-Objekt, das man in Word vergeblich suchen wird.

                    Ein VB-Programm wird kompiliert, wodurch man z. B. eine ausführbare exe-Datei hat. In VBA geschriebener Code benötigt die jeweilige Anwendung zur Ausführung, also z. B. Excel.

                    Dann gibt es noch VBS, das man im Windows-Editor schreiben kann.
                    Bei Wikipedia gibt es, glaube ich,auch einen Artikel dazu.

                    Viele Grüße
                    Jörg

                    1. Hallo zusammen,

                      Der bisherige Makrocode sieht so aus:

                      Sub Funktion_Import_Einlesen()
                      '
                      ' Funktion_Import_Einlesen Makro
                      ' Makro am 03.12.2007 von Gary aufgezeichnet
                      '

                      '
                          Range("A1:A11").Select
                          Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                              TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                              Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
                              :=":", FieldInfo:=Array(Array(1, 1), Array(2, 1))
                          Range("A12:A40").Select
                          Selection.TextToColumns Destination:=Range("A12"), DataType:=xlDelimited, _
                              TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
                              Semicolon:=False, Comma:=False, Space:=True, Other:=False, OtherChar _
                              :=":", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1))
                          Range("A42:C42").Select
                      End Sub

                      Ich muss nun den Inhalt der Zelle F50 prüfen (ob WAHR oder FALSCH drin steht), um dann entsprechend diesem Inhalt eine Grafik anzeigen.

                      Also:

                      if FG50=WAHR then
                          Grafik1.visible = true
                          Grafik2.visible = false
                      else
                          Grafik1.visible = false
                          Grafik2.visible = true
                      end if

                      Wer weiss, wie die obere Abfrage Excelkonform (VBA) geschrieben werden kann.

                      Viele Grüsse gary

                      1. Hallo zusammen,

                        Ich habe die IF-Anweisung weiter angepasst. Diese sieht nun so aus:

                        If D50 = "WAHR" Then
                            Sheets("Tabelle1").Shapes("Ellipse21").Visible = False
                            Sheets("Tabelle1").Shapes("Ellipse19").Visible = True
                            Else
                            Sheets("Tabelle1").Shapes("Ellipse19").Visible = False
                            Sheets("Tabelle1").Shapes("Ellipse21").Visible = True
                          End if

                        Der Code stoppt bei der vorletzten Zeile mit der Fehlermeldung:
                        Das Element mit dem Anngegebenen Namen wurde nicht gefunden.

                        Den Namen vom Element "Ellipse21" habe ich durch Makro zuweisen herausbekommen. Folglich muss es existieren.
                        Kann mir eigentlich nur noch einen Syntaxfehler vorstellen.

                        Bin für hilfe dankbar

                        Grüsse und Gute Nacht gary

                        1. Hallo zusammen,

                          So, wollte nur zur Information sagen das ich es geschafft habe, einen Zellenzustand grafisch anzuzeigen.

                          Der Code um alle Ampelsignale auf aus zu setzen:

                          ' Alle Ampeln aus
                              ActiveSheet.Shapes("Group 41").Select
                              Selection.ShapeRange.ZOrder msoBringToFront
                              ActiveSheet.Shapes("Group 42").Select
                              Selection.ShapeRange.ZOrder msoBringToFront
                              ActiveSheet.Shapes("Group 46").Select
                              Selection.ShapeRange.ZOrder msoBringToFront
                              ActiveSheet.Shapes("Group 50").Select
                              Selection.ShapeRange.ZOrder msoBringToFront
                              ActiveSheet.Shapes("Group 54").Select
                              Selection.ShapeRange.ZOrder msoBringToFront
                              ActiveSheet.Shapes("Group 58").Select
                              Selection.ShapeRange.ZOrder msoBringToFront

                          Und die Abfrage, die so schwer gar nicht ist, wenn man weisswies geht:

                          ' D-Ampel-Setting

                          ' green light
                            If Range("F50") = True Then
                              ActiveSheet.Shapes("Oval 22").Select
                              Selection.ShapeRange.ZOrder msoBringToFront
                            End If

                          ' red light
                            If Range("F50") = False Then
                              ActiveSheet.Shapes("Oval 27").Select
                              Selection.ShapeRange.ZOrder msoBringToFront
                            End If

                          Die Excel-Syntax ist halt schon stark gewöhnungsbedürftig. Nennt sich  wie gesagt wurde VBA (Visual Basic for Applications) und dann kommen noch spezifische Unterschiede je nach verwendeter Excel Version dazu,tztz

                          Viele Grüsse gary

                          Ende!

                          1. Hi gary,

                            Der Code um alle Ampelsignale auf aus zu setzen:

                            ' Alle Ampeln aus
                                ActiveSheet.Shapes("Group 41").Select
                                Selection.ShapeRange.ZOrder msoBringToFront
                                ActiveSheet.Shapes("Group 42").Select
                                Selection.ShapeRange.ZOrder msoBringToFront
                                ActiveSheet.Shapes("Group 46").Select
                                Selection.ShapeRange.ZOrder msoBringToFront
                                ActiveSheet.Shapes("Group 50").Select
                                Selection.ShapeRange.ZOrder msoBringToFront
                                ActiveSheet.Shapes("Group 54").Select
                                Selection.ShapeRange.ZOrder msoBringToFront
                                ActiveSheet.Shapes("Group 58").Select
                                Selection.ShapeRange.ZOrder msoBringToFront

                            eigentlich müsste das auch kürzer gehen:

                            for each x in activesheet.shapes
                                x.shaperange.zorder msobringtofront
                            next

                            Ist aber nicht getestet, mit Grafiken arbeite ich nur selten.
                            Ansonsten solltest Du immer versuchen, Select und Activate zu vermeiden.

                            ActiveSheet.Shapes("Group 41").ShapeRange.ZOrder msoBringToFront

                            Und die Abfrage, die so schwer gar nicht ist, wenn man weisswies geht:

                            ' D-Ampel-Setting

                            Auch hier taucht Select wieder auf …
                            In dem kleinen Beispiel mag das mit Select noch gehen, aber wenn Du mal etwas Komplexeres schreibst, wirst Du merken, wie lästig das ist.

                            Die Excel-Syntax ist halt schon stark gewöhnungsbedürftig. Nennt sich  wie gesagt wurde VBA (Visual Basic for Applications) und dann kommen noch spezifische Unterschiede je nach verwendeter Excel Version dazu,tztz

                            Naja, die Syntax ist halt Basic. Wenn man sich daran gewöhnt hat, geht es schon. Im Prinzip ist es immer:

                            Objekt.Methode bzw.
                            Objekt.Eigenschaft = xyz

                            Schlimmer sind wirklich die verschiedenen Versionen …

                            Viele Grüße

                            Jörg

                            1. Hi Jörg,

                              Falls der link weiter oben deine Page ist - nicht schlecht - respekt.

                              eigentlich müsste das auch kürzer gehen:

                              for each x in activesheet.shapes
                                  x.shaperange.zorder msobringtofront
                              next

                              Ist aber nicht getestet, mit Grafiken arbeite ich nur selten.

                              Jaja, jetz kommst du und merkerst *g* - mich Jahrelang sitzen lassen, hier mit den Kindern und dem Hund, ich lass mich scheiden, hehe

                              Ansonsten solltest Du immer versuchen, Select und Activate zu vermeiden.

                              Ich habe festgestellt, das ich nach einem Makroaufruf, beispielsweise die endposition des Focus so setzen kann. Sonst ist die zuletzt angesprochene Grafik nach Makroende noch mariert. Das sieht blöd aus.

                              ActiveSheet.Shapes("Group 41").ShapeRange.ZOrder msoBringToFront

                              BTW. Das "Group" ist übrigens der ausgeschaltete Ampelkörper.

                              Auch hier taucht Select wieder auf …
                              In dem kleinen Beispiel mag das mit Select noch gehen, aber wenn Du mal etwas Komplexeres schreibst, wirst Du merken, wie lästig das ist.

                              Da ich mir der Syntax nicht sicher war, habe ich das so gelösst. Ich startete Makro- aufzeichnen, marierte eine Grafik, schob diese über das Kontexmenü/Rheihenfolge/in den Hintergrund und stoppte die Aufzeichnung. Nun konnte ich im Makro selber spionieren, wie die Befehle aussehen. - Clever muss man sein! *Eigenlob*

                              Dabei lösste sich auch mein Fehler: Wenn man per Rechtsklick auf eine Grafik ein Makro zuweisen will, stand bei mir z.B. Ellipse21. Folglich verwendete ich in VBA ("Ellipse21").Visible o.ä....
                              Dann die Fehlermeldung Objekt not found. Warum? Na Klar, das Objekt heisst nähmlich in VBA Oval21 also ("Oval21"). blablabla

                              Ich habe nicht gedacht, das in einem "eingedeutschtem Kontexmenü auch der Grafikname "eingedeutscht" wird. Da kann VBA lange suchen... ;-)

                              Naja, die Syntax ist halt Basic. Wenn man sich daran gewöhnt hat, geht es schon. Im Prinzip ist es immer:

                              Objekt.Methode bzw.
                              Objekt.Eigenschaft = xyz

                              Schlimmer sind wirklich die verschiedenen Versionen …

                              Schützt Microsoft eigentlich die Befehle von Excel bzw. ist es verboten diese zu publizieren? Es gibt zwar Foren, die sich mit Excel beschäftigen aber weder dort, noch auf google gibt es eine Sammlung der Befehle, wie was anzuwenden ist. Stattdessen wollen sie dir an jeder ecke im Internet ein Excelhandbuch aufs Auge drücken. Wobei ein Buch sicher nicht schlecht ist. Mich wundert eben nur, das es so schwer ist, eine Komplette Doku aufzutreiben.

                              So sehen übrigens die Ampeln aus. (Hier waren sie allrdings noch ohne korrekte Funktion, aber jetzt geht es ja)

                              guckst_du_hier

                              Viele, viele Grüsse

                              [latex]
                              gary_\mathrm {max}
                              [/latex]

                              1. Hi nochmal Jörg,

                                Hab gesehen das die Grafik im Link falsch beschriftet ist. Der Ampelkörper ist natürlich im Vordergrund, und die beiden Leuchten im Hintergrund. Je nach Zustand des Feldes WAHR/FALSCH wird dann eine Leuchte in den Vordergrund gehoben.

                                So, jetzt ist gut.. ;-)

                                Grüsse gary

                              2. Hi gary,

                                Falls der link weiter oben deine Page ist - nicht schlecht - respekt.

                                nee, ist er nicht, aber ein Inhaber dieser Seiten ist auch hier im Forum. ;-)

                                Vielleicht interessieren Dich aber meine Seiten: http://www.vba-beispiele.de ;-)

                                Jaja, jetz kommst du und merkerst *g* - mich Jahrelang sitzen lassen, hier mit den Kindern und dem Hund, ich lass mich scheiden, hehe

                                Jaja, ich habe auch schon eine Scheidung hinter mir. VBA hat damit aber nichts zu tun. ;-)

                                Ansonsten solltest Du immer versuchen, Select und Activate zu vermeiden.

                                Ich habe festgestellt, das ich nach einem Makroaufruf, beispielsweise die endposition des Focus so setzen kann. Sonst ist die zuletzt angesprochene Grafik nach Makroende noch mariert. Das sieht blöd aus.

                                Ja, deswegen schrieb ich "versuchen". Immer gelingt es leider nicht.

                                Da ich mir der Syntax nicht sicher war, habe ich das so gelösst. Ich startete Makro- aufzeichnen, marierte eine Grafik, schob diese über das Kontexmenü/Rheihenfolge/in den Hintergrund und stoppte die Aufzeichnung. Nun konnte ich im Makro selber spionieren, wie die Befehle aussehen. - Clever muss man sein! *Eigenlob*

                                Kompliment. ;-)
                                Aber so mache ich es auch manchmal, wenn ich zu faul zum Tippen bin oder etwas, da selten gebraucht wird, nicht weiß. Nur muss man eben wissen, dass der Makrorecorder jeden M… aufzeichnet, wie auch dieses Select und Activate

                                Sie Dir mal den Unterschied an:

                                for i = 1 to 1000
                                cells(i, 1).select
                                activecell.value = i
                                next

                                und:

                                for i = 1 to 1000
                                cells(i, 1).value = i
                                next

                                Kannst auch mal die Ausführungszeiten der beiden Codeschnippsel stoppen.

                                Dabei lösste sich auch mein Fehler: Wenn man per Rechtsklick auf eine Grafik ein Makro zuweisen will, stand bei mir z.B. Ellipse21. Folglich verwendete ich in VBA ("Ellipse21").Visible o.ä....
                                Dann die Fehlermeldung Objekt not found. Warum? Na Klar, das Objekt heisst nähmlich in VBA Oval21 also ("Oval21"). blablabla

                                Ich habe nicht gedacht, das in einem "eingedeutschtem Kontexmenü auch der Grafikname "eingedeutscht" wird. Da kann VBA lange suchen... ;-)

                                Jetzt, wo Du's sagst …
                                Naja, mit Grafiken arbeite ich nur sehr selten mal und wenn, sind es Diagramme.

                                Schützt Microsoft eigentlich die Befehle von Excel bzw. ist es verboten diese zu publizieren?

                                Dann hätte ich bestimmt schon längste eine Abmahnung, wie auch viele andere, die Webseiten dazu im Internet haben. ;-)

                                Stattdessen wollen sie dir an jeder ecke im Internet ein Excelhandbuch aufs Auge drücken. Wobei ein Buch sicher nicht schlecht ist. Mich wundert eben nur, das es so schwer ist, eine Komplette Doku aufzutreiben.

                                Gerade bei den Büchern muss man vorsichtig sein, weil es da auch viel Müll gibt. Es scheint nicht schwierig zu sein, ein Buch zu schreiben und zu veröffentlichen, so dass das anscheinend jeder kann …

                                So sehen übrigens die Ampeln aus. (Hier waren sie allrdings noch ohne korrekte Funktion, aber jetzt geht es ja)

                                Sieht gut aus, Kompliment.

                                Na dann mal viel Spaß noch. ;-)

                                Viele Grüße

                                Jörg