Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bilder/Shapes austauschen bzw. einfügen (Logik)

Forumthread: Bilder/Shapes austauschen bzw. einfügen (Logik)

Bilder/Shapes austauschen bzw. einfügen (Logik)
10.11.2004 11:12:42
Dennis
Hallo liebes Forum!
Habe folgendes Prob:
Auf alle Arbeitsblätter einer Mappe sollen als Kopfzeile Logos eines Kunden stehen. Es gibt 2 verschiedene Firmen mit jeweils einem eigenen Logo. Nun soll ein Firmenlogo gegen das andere getauscht werden, bei irgendeinem Ereignis, z.B. Worksheet_Change.
So weit so gut. Ich habe jetzt die Logos in einer Tabelle "Grafiken" angelegt und jedem Logo einen Namen vergeben. Ich möchte nämlich nicht die Logos übereinander legen in jeder Tabelle, die Logos sollen sich nämlich einfach austauschen lassen. Jetzt weiß ich von der Logik her nicht mehr weiter!
Meine Denkansätze:
1. Dummy-Logos in jeder Tabelle anlegen und diese jeweils mit dem Original aus meiner Hilfstabelle Grafiken verknüpfen (Wenn ja, wie?!)
2. Eine For-Schleife bauen, die in jede Tabelle springt und je nach ausgewählter Grafik (z.B. per Dropdown-Feld vorher die Logo-Art ausgewählt), das Original-Logo nehmen, dieses kopieren und an eine bestimmte Stelle jeder Tabelle einfügen. Wie mach ich das am dümmsten?!
3. Eine ganz andere Möglichkeit :P
Bin heute leider etwas blöd für die Lösung des Probs. ;)
Schonmal Danke im voraus für eure Vorschläge!
Gruß Dennis
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder/Shapes austauschen bzw. einfügen (Logik)
K.Rola
Hallo,
Grundfrage, sollen die Logos in der Datei gespeichert sein oder zur Laufzeit geladen werden? Um wieviel Blätter gehts?
Gruß K.Rola
AW: Bilder/Shapes austauschen bzw. einfügen (Logik)
10.11.2004 14:03:26
Dennis
Hi K.Rola!
Die Logos sind fest mit der Datei gespeichert, in der letzten Tabelle mit dem Namen "Grafiken".
Es handelt sich insgesamt um etwa 10-15 Arbeitsblätter.
Dennis
Anzeige
Danke, sehr elegante Lösung!
10.11.2004 14:42:28
Dennis
Hi K.Rola!
Danke, Deine Lösung ist natürlich wesentlich eleganter als meine ;)
Werde Deinen Code nehmen und so modifizieren, dass alle Blätter durchlaufen werden und ich nicht den Code in jedes Blatt kopieren muss.
Schönen Tag noch!
Gruß Dennis
Anzeige
AW: Danke, sehr elegante Lösung!
K.Rola
Hallo,
das ist nicht nötig, du kannst den Code auch zentral hinterlegen:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Gruß K.Rola
Aber...
10.11.2004 14:53:29
Dennis
Schon richtig, aber ich hab mir gedacht, wenn man dann mal mehrere Blätter auf einmal ausdrucken möchte(Also z.B. mit Strg markieren), steht auf einigen Blättern noch das alte Logo, da hierbei das Sheet_Activate-Ereignis nicht aufgerufen wird.
Deshalb sollte auf allen Blättern sofort das Logo umgestellt werden...
Anzeige
AW: Aber...
K.Rola
Hallo,
aha, das ist aber auch kein Problem. Falls du das nicht alleine hinbekommst,
nochmal Laut geben.
Gruß K.Rola
Das reicht schon
10.11.2004 15:32:58
Dennis
Hallo K.Rola,
Danke, mehr brauche ich eigentlich nicht zu wissen, mir hat halt "nur" der Denkanstoß gefehlt. Manchmal ist es doch zu einfach ;) Danke für das Angebot, wenn noch was ist, melde ich mich natürlich.
Vielen lieben Dank!
Gruß Dennis
Anzeige
Lösung gefunden!
10.11.2004 14:36:59
Dennis
Ok, habs jetzt selbst rausgefunden.
Hab folgendes sub in Modul grafiken_ändern geschrieben:
Sub swap_grafiken(typ As String) ' Erwartet den Betriebstyp als String
Call globale_tabellen
Dim i As Integer
'Tausche Logos...
If typ = "xxxx" Then 'Wenn Logo xxxx
For i = 1 To UBound(blattliste, 1) 'vom 1. bis zum letzten Bearbeitungsblatt
Worksheets(i).Shapes("logo_xxxx").Visible = True
Worksheets(i).Shapes("logo_yyyy").Visible = False
Next i
Else 'Andernfalls yyyy
For i = 1 To UBound(blattliste, 1)
Worksheets(i).Shapes("logo_xxxx").Visible = False
Worksheets(i).Shapes("logo_yyyy").Visible = True
Next i
End If
End Sub
dazu kommt dann noch das worksheet_change-ereignis:

Private Sub Worksheet_Change(ByVal Target As Range)
'Dynamische Änderung Logo (XXXX/YYYY) bei Auswahl des Betriebstyps
If Target.AddressLocal = Range("betriebstyp").Address Then 'Wenn Dropdown ausgewählt
Call swap_grafiken(Target.Value) 'Tausche Grafiken
End If
End Sub

Anzeige
AW: Lösung gefunden!
K.Rola
Hallo,
das hat nur den Nachteil, dass die Grafiken mehrfach vorhanden sind und somit Speicher beanspruchen.
Gruß K.Rola
;
Anzeige
Anzeige

Infobox / Tutorial

Bilder und Shapes in Excel effizient austauschen


Schritt-für-Schritt-Anleitung

  1. Logos in einer Tabelle speichern: Erstelle eine Tabelle mit dem Namen "Grafiken", in der du die Logos der verschiedenen Firmen als Shapes speicherst. Achte darauf, dass jedes Logo einen eindeutigen Namen hat.

  2. Dummy-Logos in Arbeitsblättern anlegen: Füge Dummy-Logos in jedes Arbeitsblatt ein, die mit den Original-Logos in der Tabelle "Grafiken" verknüpft sind. Das kannst du über die Shape-Eigenschaften machen.

  3. VBA-Code schreiben: Erstelle ein neues Modul und füge den folgenden Code ein, um die Logos basierend auf der Auswahl in einem Dropdown-Feld auszutauschen:

    Sub swap_grafiken(typ As String)
       Dim i As Integer
       If typ = "xxxx" Then
           For i = 1 To UBound(blattliste, 1)
               Worksheets(i).Shapes("logo_xxxx").Visible = True
               Worksheets(i).Shapes("logo_yyyy").Visible = False
           Next i
       Else
           For i = 1 To UBound(blattliste, 1)
               Worksheets(i).Shapes("logo_xxxx").Visible = False
               Worksheets(i).Shapes("logo_yyyy").Visible = True
           Next i
       End If
    End Sub
  4. Worksheet_Change-Ereignis hinzufügen: Um sicherzustellen, dass das Logo bei der Auswahl im Dropdown-Feld automatisch aktualisiert wird, füge den folgenden Code in das Arbeitsblatt ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.AddressLocal = Range("betriebstyp").Address Then
           Call swap_grafiken(Target.Value)
       End If
    End Sub
  5. Testen: Wähle einen Typ im Dropdown-Feld aus und überprüfe, ob das entsprechende Logo auf allen Arbeitsblättern korrekt angezeigt wird.


Häufige Fehler und Lösungen

  • Fehler: Logos werden nicht angezeigt
    Lösung: Überprüfe die Namen der Shapes in der Tabelle "Grafiken" und stelle sicher, dass sie mit den im VBA-Code verwendeten Namen übereinstimmen.

  • Fehler: Dropdown-Feld funktioniert nicht
    Lösung: Stelle sicher, dass das Dropdown-Feld korrekt mit dem VBA-Code verknüpft ist. Überprüfe auch die Zellreferenz im Worksheet_Change-Ereignis.


Alternative Methoden

  • Verwendung von Bildlinks: Anstatt die Logos in die Arbeitsblätter einzufügen, kannst du die Logos auch als Bildlinks speichern und bei Bedarf laden. Dies spart Speicherplatz, da die Grafiken nicht mehrfach vorhanden sind.

  • Excel-Add-Ins: Es gibt verschiedene Excel-Add-Ins, die das Management von Grafiken und deren Austausch erleichtern. Diese Tools bieten oft benutzerfreundliche Oberflächen und zusätzliche Funktionen.


Praktische Beispiele

Ein einfaches Beispiel für die Umsetzung ist die Verwendung eines Dropdown-Feldes, in dem du zwischen "Firma A" und "Firma B" wählst. Je nach Auswahl wird das entsprechende Logo auf allen Arbeitsblättern angezeigt.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.AddressLocal = Range("betriebstyp").Address Then
        Call swap_grafiken(Target.Value)
    End If
End Sub

Hier wird bei Auswahl des Betriebstyps das Logo dynamisch ausgetauscht.


Tipps für Profis

  • Optimierung des Codes: Verwende Arrays, um die Leistung zu verbessern, insbesondere wenn du viele Arbeitsblätter hast. Vermeide häufige Zugriffe auf die Excel-Oberfläche in Schleifen, um die Ausführungsgeschwindigkeit zu erhöhen.

  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen in deinem VBA-Code, um unerwartete Probleme zu identifizieren und zu beheben.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Logos immer aktuell sind?
Du kannst ein Makro erstellen, das alle Logos basierend auf einer zeitgesteuerten Aufgabe aktualisiert.

2. Was passiert, wenn ich ein neues Logo hinzufüge?
Füge das neue Logo in die Tabelle "Grafiken" ein und aktualisiere den VBA-Code entsprechend, um das neue Logo zu integrieren.

3. Kann ich die Logos auch in einer anderen Excel-Version verwenden?
Ja, die beschriebenen Methoden sollten in den meisten modernen Excel-Versionen funktionieren, jedoch ist es ratsam, die VBA-Syntax entsprechend der verwendeten Version zu überprüfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige