Excel Zellinhalt (form) ausblenden

Fritz50

Stammgast
Hallo zusammen
Mich plagt noch ein anderes Problem. Abhängig vom Zellinhalt (leer/nichtleer) soll der Inhalt einer anderen Zelle unsichtbar/sichtbar sein. Dieser Inhalt ist eine Form (ausgefüllter Kreis, erscheint als grosser Punkt).
Ich habe verschiedene Versuche mit Makros und direkten Manipulationen der Zelle gemacht.

Als Anwendung/Methode auf die Zelle finde ich keine hide/visible Option.
Ich könnte mir auch löschen/kopieren vorstellen. Zum Löschen muss ich aber den Punkt selektieren (nicht die Zelle). Ein Makro aber findet diesen Punkt nicht. Wenn ich eine leere Zelle hineinkopiere bleibt der Punkt erhalten.
Umgekehrt geht es.
Das Ganze bezieht sich auf ein Tabellenblatt, keine Formulare, keine Buttons.
Wie würdet ihr das lösen. Danke

Freundliche Grüsse
Fritz
 

weer

Stammgast
Hallo Fritz

Ich könnte mir auch löschen/kopieren vorstellen.

Ohne Deine konkrete Datei zu haben, ist es etwas schwierig. Vielleicht hilft Dir folgendes weiter. In der aktiven Zelle wird das eingefügte Objekt (Form, Grafik usw.) gelöscht.

Code:
Sub ObjLoeschen()
Dim shp As Shape
Dim sname$, rs$, sadr$
rs = Selection.Address
For Each shp In ActiveSheet.Shapes
    shp.Select
    sname = shp.Name
    sadr = shp.TopLeftCell.Address
        If sadr = rs Then
            ActiveSheet.Shapes.Range(Array(sname)).Delete
        End If
Next
Range(rs).Select
End Sub

In diesem Makro ist es umständlich, den Namen des Objektes in einer bestimmten Zelle zu finden. Wahrscheinlich geht es viel einfacher.
Grüsse Niclaus
 

Pagnol

Stammgast
Ich hatte vor einiger Zeit ein ganz ähnliches Problem.
Meine Lösung: die Farbe des Zellinhalts mittels bedingter Formatierung auf die Farbe des Hintergrundes setzen.
Mit dem selben Trick kann man den Inhalt dann auch wieder sichtbar machen.
 

nochEinAndreas

Stammgast
anderer Ansatz

Hallo Fritz,

ich hab hier mal noch eine andere Idee:
Du könntest den Punkt auch als echten Text in einer Zelle darstellen, z.B. mit dem Zeichensatz Wingdings.
Angenommen der Punkt soll in Zelle A1 stehen, wenn Zelle B1 nicht leer ist. Wenn Zelle B1 leer ist, soll der Punkt in Zelle A1 auch nicht zu sehen sein. Dann könntest du folgendes machen:
Formatiere Zelle A1 so, dass der Font Wingdings eingestellt ist. Dann schreibe in A1 die Formel
Code:
=WENN(ISTLEER(B1);"";"l")
Der Buchstabe zwischen den letzten Anführungszeichen ist ein kleines L.
Fertig.
Den Punkt in A1 kannst du natürlich noch färben, in dem du die Textfarbe änderst.

Gruß, Andreas
 
Zuletzt bearbeitet:

Fritz50

Stammgast
Antworten

Hallo zusammen
Ich möchte gleich zu jeder Antwort etwas schreiben.
Das erste Makro von Niclaus scheint auch mir aufwendig (und fordert meine Programmierkenntnisse heraus). Es müsste doch einfach sein ein Objekt in einer Zelle zu selektieren.
Pagnol, was meinst du mit Zellinhalt? Eine Form(Punkt) ist nicht einfach der Zellinhalt. Um die Farbe der Form zu ändern, muss ich diese selektieren können. Da kann ich sie dann gleich löschen.

Der Vorschlag von Andreas bringt mich ein Stück weiter. Mit Windings "l", Grösse 24 komme ich zu einer praktikablen Lösung. Es fällt mir aber auf, dass die Zellen ziemlich hoch werden. Der Abstand zu Zellenunterkante könnte etwas kleiner sein.
Der Vorschlag mit der WENN-Lösung geht nicht, denn ich weiss rückwärts nicht welche Zelle ich untersuchen müsste.
Mein Projekt (Weininventar) kurz erklärt:
In ein paar Spalten sind Informationen zu jeder Flasche (Name, Jahrgang und Position(Zelladresse) im Gestell).
Daneben ist das Gestell abgebildet. In jeder Zelle kann ein Flasche sein.
Nun soll es möglich sein die Spalten links der Zellen, die das Gestell darstellen, zu sortieren. Die Zelladresse zur Weinflasche geht ja mit. Da sehe ich keine Probleme.
Wenn ich nun einen Wein anklicke, wird die Zelle mit dieser Flasche markiert.
Es versteht sich, dass wenn ich zur nächsten Flasche wechsle, sollte diese Markierung gelöscht werden.(Das ist das Thema meines andern Beitrags).
Und es ware natürlich schön, wenn die leeren Positionen auch entsprechend leer erscheinen würden. Und weil ja kein Name in der Spalte steht, sollte die Löschung der Form/Punkt von dort aus gehen.

Freundliche Grüsse
Fritz
 

nochEinAndreas

Stammgast
Nachfrage

Hallo Fritz,

wie ist das: Markierst du immer nur einen Wein? Wenn ja, könnte man doch mit einem einzigen Punkt auskommen. Die Adresse der Zelle, in der der Punkt stehen soll, hast du ja in deiner Liste. Man könnte dann den Punkt per Makro auf diese Zelle schieben. Wenn du in eine Zelle klickst, die keinen Wein enthält, könnte man den Punkt per Makro unsichtbar machen.
Wäre das eine Lösung? Dann könnte ich dir etwas in der Richtung schreiben.

Gruß, Andreas
 

Fritz50

Stammgast
Hallo Andreas
Markiert ist immer nur ein Wein/Zelle. Das möchte ich so realisieren, dass die Zelle farbig hervorgehoben wird.
Wenn ich einen andern Wein wähle, muss die Markierung natürlich auch wechseln.
Aber gleichzeitig möchte ich auch sehen welche Plätze belegt/frei sind. Und das eben nicht nur in der Liste.
Darum soll in den belegten Stellen (Zellen) ein grosser Punkt erscheinen. Z.Zt. ist alles auf einem Tabellenblatt.
Ich könnte dir das File auch zu Verfügung stellen.

Gruss
Fritz
 

nochEinAndreas

Stammgast
Hallo Fritz,

das heißt also, wenn eine Zeile in der Liste leer ist, soll der entsprechende Punkt im "Weinregal" verschwinden?
Wieviele Plätze im Regal sind es denn? Wenn das halbwegs überschaubar ist (so bis ca. 100), könnte man für jeden Platz im Regal einen Punkt spendieren. Die Punkte würde man dann entsprechend der Zellenposition benennen. Dann müsste man nicht suchen, wo welcher Punkt ist. Beim Löschen eines Eintrags in der Liste könnte ein Makro den Punkt unsichtbar machen und beim erneuten Belegen des Listenplatzes wieder sichtbar.
Lade doch mal deine Datei hoch, damit wir alle hier das genauer sehen können.

Danke und Gruß, Andreas
 

Fritz50

Stammgast
Grundproblem gelöst

Hallo zusammen,
In der Zwischenzeit habe ich viel versucht. Als Lösung für die Punkte wählte ich den Vorschlag von Charlito.
Dann kann ich mit der Zeichenfarbe spielen. Das Zeichen selbst bleibt immer in der Zelle (weiss oder sichtbar).

Etwas finde ich nicht so elegant. Wenn ich einen neuen Eintrag wähle, muss ich ja die frühere Markierung (Hintergrundfarbe) löschen, sonst bleibt sie erhalten. Es fehlt aber die Position der alten Zelle, (diese Zelle ist ja beim vorangegangen Aufruf der DblKlickprozedur markiert worden). Ich habe das so gelöst, dass ich erst einfach den Hintergrund des ganzen Feldes transparent mache, und dann die neue Zelle markiere.

Bei der Anwendung gibt es ein unangenehmes Verhalten. Die Tabelle hat ja vielleicht 180 Zeilen. Die Zellen mit den Punkten bilden eine Bereich rechts anschliessend, weniger als 20 Zeilen.
Wenn ich nun weit unten in der Tabelle ein Zelle anklicke, springt die Markierung in den Punktbereich. Dann muss ich wieder mühsam zurück. Wie könnte man einen Zellbereich im Fenster fixieren?

Dann war ja noch die Frage, ob nur ein Wein selektiert wird. Im Prinzip ja, aber wenn mehrere Flaschen der gleichen Sorte vorliegen, wäre natürlich die Markierung des ganzen Bereich noch aussagekräftiger.

Beim Weiterentwickeln kommen immer neue Ideen und Wünsche. Wenn ich z. B. an ein Formular denke, wie könnte man die Regalpunkte ansprechend anzeigen (es sind 16 x 8 Punkte)? Oder gibt es einen ganz andern Lösungsansatz? Vielleicht ohne Excel.

Gruss Fritz
 

nochEinAndreas

Stammgast
Hallo Fritz,

du hast Recht: Es kommen immer neue Erweiterungen und Ideen. Um deine Gedanken nachvollziehen zu können, wäre es wirklich hilfreich, wenn du die Mappe mal zeigen könntest.

Danke und Gruß,
Andreas
 
Oben