Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Formen ein- und ausblenden
28.08.2019 10:32:44
Rifel
Hallo,
für einen Kunden erstellen wir mit Excel Labels (Exceldatei kommt vom Kunden). Diese werden auf Kartons geklebt.
Jetzt möchte der Kunde zusätzlich zu diesen Labels noch weitere "Sticker" als Indikator für den Anliefermonat. Diese hat er sich selber mit Excel gebastelt (runde Form mit Farbhintergrund und Monat als Zahl).
Besteht nun die Möglichkeit, diese Formen automatisch entsprechend des aktuellen Monats (oder einfach per Auswahl) ein- und auszublenden?
Anbei ist die Excel Datei.
In jeder der 48 Labels im Tabellenblatt Labels wird eines der "Sticker" (Tabellenblatt Sticker) benötigt. Welcher Sticker benötigt wird, sollte entweder automatisch (Monat aus Shipment date - Tabellenblatt Master data) oder manuell entschieden werden.
Ich bin da wirklich gespannt. Das geht schon in Richtung Programmierung.
Danke sehr
https://www.herber.de/bbs/user/131675.xlsx

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nur ein Ansatz, weiter offen!
28.08.2019 12:38:36
Pierre
Hallo,
mal als Ansatz:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("M3") = "8" Then
CommandButton1.Visible = True
Else: CommandButton1.Visible = False
If Range("M3") = "9" Then
CommandButton2.Visible = True
Else: CommandButton2.Visible = False
End If
End If
End Sub
Ich habe einfach in Zelle "M3" (Blatt 4)die Monatszahl geschrieben.
So könntest du steuern, dass im August der eine Sticker sichtbar ist, im September ein anderer Sticker.
Ich habe das mal mit CommandButtons getestet, da ich nicht so recht weiß (zumindest auf die Schnelle), wie ich die vorhandenen Sticker ansprechen kann.
Aber wie gesagt, ist nur ein erster Ansatz meinerseits.
Anzeige
AW: nur ein Ansatz, weiter offen!
29.08.2019 05:51:39
Hajo_Zi
lasse den Fragesteller entscheiden ob offen.
Es ist heute nicht mehr üblich eine Rückmeldung zu geben und so ist der Beitrag über 6 Tage offen.
Das ist nur meine Meinung zu dem Thema.

AW: nur ein Ansatz, weiter offen!
29.08.2019 06:02:12
Rifel
Hallo,
ich bin erstaunt, wie schnell ich hier eine Antwort bekomme. So schnell kann ich nicht mal testen.
Pierre, danke für deine Hilfe. Ich schaue mir das an.
Hajo, was soll das mit den 6 Tagen. Bis auf den unterschwelligen Ton verstehe ich nicht, was du damit meinst.
Gruß Rifel
@Haji:Doch,@Rifel:s. u.
29.08.2019 10:38:13
Pierre
Hajo, wenn ich genau weiß, dass ich nicht zur Lösungsfindung (final) beitrage, lasse ich natürlich den Beitrag offen.
@ Rifel: Ich gehe stark davon aus, dass das ein Profi hier in eine Schleife packen wird, sodass du nicht für jeden einzelnen Monat eine neue If Abfrage basteln musst.
Mir ging es primär um den Teil mit Visible=True bzw. Visible=False.
Gruß Pierre
Anzeige
AW: @Haji:Doch,@Rifel:s. u.
29.08.2019 10:41:19
Rifel
Danke sehr. Ich bin kein Profi und habe keine Probleme mit mehreren If-Abfragen.
Können die Abfragen hintereinander sein oder müssen sie wie in Excel verschachtelt werden?
Gruß Rifel
Ich versuche mal weiter...
29.08.2019 11:45:52
Pierre
Wenn du wirklich 12x die If Abfrage haben willst, dann im Prinzip nach o. g. Muster weiter verfahren.
Heißt Immer "If Then, Else, If Then, Else ..." und erst wenn die ganzen Ifs fertig sind, kommt in dem Falle 12x hintereinander "End If". Ist halt wirklich umständlich.
Hier nochmal deine Mappe zurück, habe den Code durchgehend für alle 12 Monate mal eingefügt.
Spalte AA habe ich eine Hilfstabelle eingefügt, in M3 (rotes Feld) kannst du über Dropdown den Monat auswählen.
Ich kann nur nicht immer hier gucken, werde auch erst morgen wieder am PC sein.
Ich stelle den Beitrag wieder auf offen, da gerne in der Zwischenzeit auch sinnvollere (bzw. kürzere) Lösungen kommen dürfen.
Ich selbst bin schließlich auch noch seeehr unerfahren im Umgang mit VBA.
Aber ich versuche trotzdem so ein bisschen zu helfen ;-)
Hier die Datei mit vorausgefülltem Code für 12 Monate: https://www.herber.de/bbs/user/131708.xlsm
Gruß Pierre
Anzeige
AW: Überarbeitete Version
29.08.2019 12:43:06
Pierre
Sooooo...
Ich habe jetzt mal rausgefunden, wie man solche Formen überhaupt anspricht.
Das geht mit "ActiveSheet.Shapes("ShapeName").Visible"
Anbei nochmal die Mappe, das funktioniert FAST.
Aktuell ist die Vorgabe, dass man in M3 die Zahl 13 stehen hat (so sind alle Sticker ausgeblendet) und danach, egal welche Zahl man auswählt, erscheint nur noch der passende Sticker zum Monat.
Entweder das stellt man noch um (grob irgendwas mit If M3 1 Then Visible = False) oder aber man könnte auch das Ganze so einstellen, dass immer die 13 im Feld steht (beim Öffnen der Mappe) und dies auch nicht aus Versehen verändert werden kann. Mal sehen, wie ich das einbauen kann.
Ich komme aber erst morgen wieder dazu, da weiter zu machen und möglicherweise auch erst wieder gegen Mittag.
Was noch fehlt ist, dass die Sticker vollständig ausgeblendet werden, heißt, manche Zeichen und die Linien werden nicht ausgeblendet, das werde ich morgen noch in Angriff nehmen. Bzw. du selbst ;-)
In der Zwischenzeit kannst du ja schon mal gucken, ob das grundsätzlich alles so passt, wie du es gerne hättest.
Ich hoffe, du hast erstmal halbwegs alles verstanden? Hier jedenfalls der aktuelle Stand der Mappe (Code ist übrigens unter Tabelle4): https://www.herber.de/bbs/user/131710.xlsm
Gruß Pierre
Anzeige
AW: Überarbeitete Version
29.08.2019 13:54:49
Torsten
Hallo Pierre,
vergiss das. Diese Dinger bestehen aus 3 Shapes, von denen 2 eine Bezeichnung mit chinesischen Schriftzeichen haben und die kannst du nicht kopieren und an VBA uebergeben. Da bekommst du fuer die Schriftzeichen nur Fragezeichen. Ich weiss nicht, wie du die dann ansprechen und ausblenden willst.
Gruss Torsten
AW: Überarbeitete Version
29.08.2019 13:58:12
Torsten
Kommando zurueck. Funktioniert doch. Musst halt Google Translate benutzen ;-)
Viel Spass
AW: Überarbeitete Version
29.08.2019 14:28:54
Pierre
Hallo Torsten,
Ich war bisher nur dazu gekommen, die Shapes an sich überhaupt ansprechen zu können.
Ich habe halt die Namen der Shapes (stimmt, die waren auf chinesisch) geändert vorher...
Hatte jetzt gehofft, die Dinger gruppieren zu können. Ist das nicht möglich?
Was derzeit stehen bleibt, sind die waagerechten Trennlinie und in der unteren Hälfte das Zeichen & Zahl.
Bzw waren das nicht einfach Textfelder, die man theoretisch genauso wie die Shapes mit Namen versehen und dann darüber ansprechen könnte?
Wie gesagt, hab erst morgen wieder Zugriff auf die Datei.
Gruß Pierre
Anzeige
AW: Überarbeitete Version
29.08.2019 14:44:59
Torsten
Ich hab halt mit Google Translate die Bezeichnung uebersetzt und so in VBA als Name eingtragen. Funktioniert auch mit dem kleineren Shape, aber leider nicht mit der Trennlinie. Die wuerde uebersetzt heissen "Direct connector 95". Aber damit bekomme ich ne Fehlermeldung.
Aber die Gruppierung ist eigentlich ne gute Idee. Dann muesste man die Gruppe ausblenden.
AW: Überarbeitete Version
29.08.2019 15:05:31
Pierre
Nur schon Mal vorab die Frage, ob sich dann die Bezeichnung ändert? Momentan spreche ich die ja über .Shapes. an, wäre das nach der Gruppierung auch noch so oder evtl anders?
@Rifel, das bitte beachten! Derzeit müsstest du immer den Umweg gehen, bei einem Monatswechsel (weil verklickt oder so) einen Zwischenschritt zu machen und die 13 auswählen und erst danach einen neuen Monat.
Anzeige
AW: Überarbeitete Version
29.08.2019 15:19:03
Torsten
Nein muss er nicht. Die 13 ist nicht noetig. Ich habe die Shapes gruppiert und die Gruppen nach den Monaten benannt. Z.B. Group Jan
Dann habe ich dein Dropdown benutzt fuer die Auswahl. Und mit Select Case den richtigen Sticker ein- und die anderen ausgeblendet.
Siehe Datei
Gruss Torsten
https://www.herber.de/bbs/user/131717.xlsm
AW: Überarbeitete Version
29.08.2019 15:28:21
Pierre
Bei meiner Version schon :D
Select Case...da kam ich eben überhaupt noch nicht drauf. Zwar auch schon verwendet, aber irgendwie war ich selbst erstmal davon begeistert, dass ich das mit If überhaupt hinbekommen hatte. Und wie das als Anfänger so ist, wenn es einmal geht, bleibt man auch dabei.
Danke dir!
Gruß Pierre
Anzeige
AW: Überarbeitete Version
30.08.2019 06:23:26
Rifel
Jungs, ihr seid Spitze.
jetzt wird es noch etwas komplizierter. Wir sind aber kurz vor dem Ziel:
Die Auswahl soll im Tabellenblatt 3 erfolgen. => Kein Problem, VBA in anderes Tabellenblatt kopieren.
Bei Auswahl 1 soll nicht nur ein Sticker angezeigt werden. Es sollen insgesamt 48 Sticker angezeigt werden, da es 48 Labels im Tabellenblatt Labels gibt. => kein Problem. Sticker kopieren, alle an die richtige Position packen und neu Gruppieren und umbenennen. Ist nur Fleißarbeit.
Die Originale Datei hat aber mehrere Tabellenblätter "Labels". das heißt, die Cases müssten mit dem Ein- und Ausblenden erweitert werden, da ich nicht über mehrere Tabellenblätter gruppieren kann.
Wie muss der Befehl

ActiveSheet.Shapes("Group Jan").Visible = False 
geändert werden, um bestimmte Tabellenblätter anzusteuern?
Danke!
Anzeige
AW: Überarbeitete Version
30.08.2019 08:37:20
Torsten
Hallo Rifel,
einfach anstatt ActiveSheet das Tabellenblatt angeben.
z.B.

Sheets("Tabelle1").Shapes("Group Jan").Visible = False

Gruss Torsten
AW: Überarbeitete Version
30.08.2019 09:22:19
Rifel
Eine Frage ist mir bei der Umsetzung aufgefallen:
da ich ja mehrere Tabellen habe, bei denen die Sticker ein- und ausgeblendet werden sollen. Ist es besser, den Befehl in jedes Tabellenblatt einzufügen und auf das Mastertabellenblatt zu verweisen oder ist es besser, alles im Mastertabellenblatt zu haben und dann extrem lange Cases zu haben.
Ich tendiere eher zur ersten Lösung, da bei neuen Tabellenblättern einfach alles samt Code kopiert werden kann.
Wie seht ihr das?
Gruß Rifel
Anzeige
AW: Überarbeitete Version
30.08.2019 10:06:30
Torsten
Hallo,
ja ich denke auch, dass das einfacher ist, die Tabelle und code zu kopieren. Der Case Code in der Mastertabelle wuerde sonst zu lang und unuebersichtlich.
AW: Überarbeitete Version
30.08.2019 10:43:30
Rifel
Wie muss dann die erste Zeile lauten?
Select Case Sheets("Tabelle3").Range("B2")
funktioniert nicht.
AW: Überarbeitete Version
30.08.2019 10:54:07
Rifel
Häkchen für nicht Beantwortet vergessen...
AW: Überarbeitete Version
30.08.2019 10:57:07
Torsten
Da must du die Tabelle und Zelle eintragen, wo du deine Auswahl triffst. Also die 1 bis 12 eintraegst, oder mit Dropdown auswaehlst.
AW: Überarbeitete Version
30.08.2019 11:13:16
Rifel
Von der Form her ist dieser Code korrekt?
Tabelle 3 und Zelle B2 sind eigentlich korrekt.
Select Case Sheets("Tabelle3").Range("B2")

AW: Überarbeitete Version
30.08.2019 11:19:58
Rifel
Haken!!!
AW: Überarbeitete Version
30.08.2019 11:24:54
Torsten
Hallo,
Eigentlich ja, wenn die Tabelle auch so benannt ist. Wenn sie so benannt sind wie in deiner Beispieldatei, dann so:
Select Case Sheets("Labels").Range("B2")

oder, wenn du den VBA Namen verwenden willst, dann ohne Anfuehrungszeichen:
Select Case Sheets(Tabelle3).Range("B2")

ganz andere Herangehensweise...
30.08.2019 18:09:52
Werner
Hallo,
...ich habe die Sticker auf dem Blatt so angeordnet, dass die jeweilige TopLeftCell des Stickers in aufsteigender Reihenfolge in Spalte A (1) - L (12) liegen.
Damit liegen auch die weiteren Shapes, die zum jeweiligen Sticker gehören, ebenfalls in der entsprechenden Spalte.
Dann kann man ganz easy das Ein-/Ausblenden über den Monat des Datums in Zelle B2 des Blattes Master Data steuern.
Wird ein gültiges Datum eingetragen, werden alle Sticker, bis auf den für den aktuellen Monat ausgeblendet.
Wird das Feld B2 geleert, werden alle Sticker wieder eingeblendet.
https://www.herber.de/bbs/user/131746.xlsm
Gruß Werner

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige