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

Forumthread: Wenn Zelle gefüllt dann Bild einfügen/ transparent

Wenn Zelle gefüllt dann Bild einfügen/ transparent
01.07.2016 09:16:54
Rene
Hallo zusammen,
ich benötige ein Makro, der ein Bild oder Grafik sichtbar macht nur wenn 2 Kriterien erfüllt sind.
Anbei auch mal ein Screenshot
wenn B7 und J7 gefüllt sind soll er den Pfeil (gelber Kreis) sichtbar machen.
Ich danke schon im Voraus :)
lg
René
Userbild

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Zelle gefüllt...
01.07.2016 09:47:54
Rene
Gute Idee,
leider der falsche Pfeil und ich habe dann später noch bestimmte Bilder die auch per Makro eingeführt werden soll, zb. Anbei das Screenshot( der Pfeil ist ein Bild)
Userbild

Anzeige
AW: Wenn Zelle gefüllt...
01.07.2016 09:58:22
Bernd
Hi,
nun gut, aber mit einem Bild kann ich auch nichts anfangen, besser ist eine Beispieldatei,
lasse deshalb mal auf offen.
lg Bernd

AW: Wenn Zelle gefüllt...
01.07.2016 10:06:48
Rene
Hi,
leider ist die Orginaldatei zu groß, ich hab es versucht nachzubauen, wie in meiner Datei, bloss mit anderen Bildern.
https://www.herber.de/bbs/user/106670.xlsx
Ich hoffe es hilft dir :)
Wenn du noch etwas benötigst, sag Bescheid :)
lg

Anzeige
AW: Wenn Zelle gefüllt...
01.07.2016 10:44:50
Michael
Hi zusammen,
das geht z.B. so (Code unter "Tabelle1" kopieren):
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row  2 Then Exit Sub
If Target.Column = 2 Then
If Target  "" And Target.Offset(, 4)  "" Then
Shapes("Pfeil nach rechts 1").Visible = msoCTrue
Else
Shapes("Pfeil nach rechts 1").Visible = msoFalse
End If
Else
If Target.Column = 6 Then
If Target  "" And Target.Offset(, -4)  "" Then
Shapes("Pfeil nach rechts 1").Visible = msoCTrue
Else
Shapes("Pfeil nach rechts 1").Visible = msoFalse
End If
End If
End If
End Sub
Schöne Grüße,
Michael

Anzeige
AW: Wenn Zelle gefüllt...
01.07.2016 11:12:09
Rene
Hi Michael,
funktioniert perfekt im BSP-Datei bloss nicht so ganz in der richtigen, wie ist das mit verbundenen Spalten muss ich sie mit berücksichtigen.
Saplte B bis F ist verbunden
Spalte J bis N ist verbunden
Ab Zeile 7 bis 8 sind verbunen
Der pfeil liegt in Spalte H
Michael wie muss ich dann dein Code anpassen?
lg
und vielen Dank

Anzeige
dann so
01.07.2016 13:37:34
Michael

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const Z1 = "$B$7", Z2 = "$J$7"
Const PfeilName = "Pfeil nach rechts 4"
If Target(1).Address = Z1 Or Target(1).Address = Z2 Then
If Range(Z1)  "" And Range(Z2)  "" Then
Shapes(PfeilName).Visible = msoTrue
Else
Shapes(PfeilName).Visible = msoFalse
End If
End If
End Sub
Bei Z1 und Z2 gibst Du die Adresse der linken, oberen Zelle des verknüpften Bereichs ein, PfeilName ist der Name Deiner Grafik: wenn Du die anklickst, erscheint der Name links neben der Bearbeitungsleiste im Namensbereich: leider ist er so lange, daß er nicht ganz sichtbar ist, das macht aber nix: und wenn Du da reinklickst, ist der komplette Name markiert und Du kannst ihn mit Strg+c in die Zwischenablage und von da in den VB-Editor kopieren.
Schöne Grüße,
Michael

Anzeige
AW: dann so
01.07.2016 14:01:42
Rene
Michael,
ich danke dir :) der Code ist perfekt aber ein kleines Problem habe ich :D in der Zelle steht eine Formel :( nun ist da so ein Konflikt.
Diese Formel:
=WENN(UND(Plan!$B$32"";Plan!$B$38"");VERKETTEN(Plan!$M$38;" Teile");WENN(UND(Plan!B32""; Plan!B33="");VERKETTEN(Plan!M32;" Teile";"");""))
kann ich das umgehen :D?
lg Rene
Sorry das ich vor den Wochenende, solche Probleme verursache.

Anzeige
AW: dann so
01.07.2016 14:35:58
Michael
Hi,
in welcher Zelle und welcher Konflikt?
Kann sein, daß das Worksheet_Change durch Wertänderungen bei FORMELN nicht ausgelöst wird; dann nimmst Du ersatzweise das _Calculate-Ereignis.
LG,
Michael

AW: dann so
01.07.2016 15:14:45
Rene
Hi Michael,
danke für die schnelle RM.
Genau das Problem Formel funtkioniert nicht wenn die Formel enthalten ist, habe dies jetzt angepasst aber dadurch sagt er mit "Fehler beim Kompilieren"
Anbei der Screenshot.
Userbild

Anzeige
AW: dann so
01.07.2016 16:14:14
Michael
... oder einer Prozedur mit demselben Namen:
das deutet darauf hin, daß bereits ein WS_Calculate existiert.
Nee: Calculate kennt kein Target: dann sieht das so aus:
Private Sub Worksheet_Calculate()
Const Z1 = "$B$7", Z2 = "$J$7"
Const PfeilName = "Pfeil nach rechts 4"
If Range(Z1)  "" And Range(Z2)  "" Then
Shapes(PfeilName).Visible = msoTrue
Else
Shapes(PfeilName).Visible = msoFalse
End If
End Sub

eigentlich sogar einfacher, aber dafür wird es IMMER aufgerufen, wenn Du was änderst, d.h. es bremst das System aus.
Naja, man kann nicht alles haben. Aus Performancegründen würde ich dann doch das Beispiel von Bernd wählen - alles andere ist optischer Schnickschnack um den Preis von vergeudeter Rechenleistung...
Schöne Grüße,
Michael

Anzeige
AW: dann so
01.07.2016 16:17:16
Rene
Hi Michael,
ich danke dir :)
werde dein BSP. nehmen und wünsche dir ein schönes Wochenende.
lg

ok, Dir auch, LG Michael owT
01.07.2016 16:22:03
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bild einfügen, wenn Zelle gefüllt ist


Schritt-für-Schritt-Anleitung

Um ein Bild in Excel anzuzeigen, wenn eine bestimmte Zelle gefüllt ist, kannst du ein VBA-Makro nutzen. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:
    • Rechtsklick auf "VBAProject (dein Dokument)".
    • Wähle Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
       Const Z1 = "$B$7", Z2 = "$J$7"
       Const PfeilName = "Pfeil nach rechts 4"
       If Target(1).Address = Z1 Or Target(1).Address = Z2 Then
           If Range(Z1) <> "" And Range(Z2) <> "" Then
               Shapes(PfeilName).Visible = msoTrue
           Else
               Shapes(PfeilName).Visible = msoFalse
           End If
       End If
    End Sub
  4. Passe die Zelladressen und den PfeilName an deine Bedürfnisse an.
  5. Schließe den VBA-Editor und teste das Makro, indem du die Zellen B7 und J7 füllst.

Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Dies kann passieren, wenn bereits ein Worksheet_Calculate existiert. Stelle sicher, dass keine doppelten Prozeduren vorhanden sind.

  • Bild wird nicht angezeigt: Überprüfe, ob der Name des Bildes (Shape) korrekt ist. Du kannst den Namen sehen, wenn du das Bild auswählst.

  • Formelkonflikte: Wenn in der Zelle eine Formel steht, die den Wert nicht ändert, könnte das Worksheet_Change-Ereignis nicht ausgelöst werden. In diesem Fall verwende das Worksheet_Calculate-Ereignis.


Alternative Methoden

Falls du kein VBA nutzen möchtest, kannst du auch die bedingte Formatierung verwenden, um die Zelle transparent zu füllen, wenn sie nicht gefüllt ist. Das Bild bleibt jedoch immer sichtbar. Eine andere Möglichkeit ist, die Zellen zu verlinken und über einfache Excel-Funktionen zu arbeiten.


Praktische Beispiele

Hier sind einige Beispiele, wie du Bilder in Excel anzeigen kannst:

  1. Bild einfügen, wenn Zelle gefüllt ist:

    • Verwende den oben genannten VBA-Code, um das Bild sichtbar zu machen, wenn beide Zellen (z.B. B7 und J7) gefüllt sind.
  2. Transparentes Bild:

    • Um ein Bild transparent anzuzeigen, kannst du die Transparenz des Bildes im VBA-Code anpassen, indem du die Fill.Transparency-Eigenschaft anwendest.
  3. Beispiel für eine Formel:

    • Wenn du eine Formel in einer Zelle hast und den Pfeil nur anzeigen lassen möchtest, wenn die Formel einen bestimmten Wert ergibt, kannst du die Bedingung im VBA-Code anpassen.

Tipps für Profis

  • Verwende benannte Bereiche: Anstatt Zelladressen direkt zu verwenden, kannst du benannte Bereiche in deinem VBA-Code verwenden, um die Wartung zu erleichtern.

  • Performance optimieren: Verwende das Worksheet_Calculate-Ereignis nur, wenn es notwendig ist, da es jedes Mal ausgelöst wird, wenn eine Berechnung im Arbeitsblatt erfolgt.

  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen in deinen Code ein, um unerwartete Probleme zu umgehen.


FAQ: Häufige Fragen

1. Wie kann ich das Bild transparent machen?
Du kannst die Fill.Transparency-Eigenschaft im VBA verwenden, um das Bild transparent zu machen.

2. Funktioniert das in allen Excel-Versionen?
Ja, der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, einschließlich Excel 2010 und höher.

3. Was ist, wenn ich mehrere Bilder anzeigen möchte?
Du kannst den Code erweitern, indem du zusätzliche Bedingungen für andere Zellen und Bilder hinzufügst.

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