Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1796to1800
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

An: YAL -- klappt leider nicht

An: YAL -- klappt leider nicht
03.12.2020 14:59:07
Gaby
Hallo Yal,
erst einmal wollte ich mich bedanken, für Deinen Code und auch die explizite Erläuterung dazu, aber wenn ich die Schritte so befolge, wie beschrieben, dann passiert leider nichts.
Aber vielleicht liegt es auch an mir, bin ja, was das betrifft, absoluter Laie, kann keine Codes selbst erstellen, leider nur abgucken und kopieren/einfügen, und hoffen, dass es klappt.
Viele Wege haben sich dadurch für mich schon vereinfacht.
Um einmal zu erläutern, worum es mir geht:
Ich habe eine Art Kalendervorlage die auf 6 Wochen ausgerichtet ist, also mindestens 42 Arbeitsblätter enthält, diese muss ich dann alle 6 Wochen kopieren und die Daten neu eingeben. Innerhalb der Tabellen habe ich die Tagesdaten mit Formeln so dargestellt, dass diese sich automatisch aktualisieren, anhand einer Formel. Das jeweilige Blatt hat dann auch den Namen des Tagesdatums, aber ich bekomme es nicht so hin, dass sich das Datum auf dem Arbeitsblatt mit dem Datum einer bestimmten Zelle automatisch aktualisiert.
Den Code den ich im Internet gefunden habe, der mir geholfen hat, den muss ich bei einer Änderung mit "F5" immer bestätigen, aber das würde ich mir auch gerne ersparen...
GLG
Gaby
Hallo Gabi,
wenn ich richtig vertehe: Du möchtest, dass wenn der Inhalt von B4 sich ändert, dass das Blatt-Name sich anpasst.
Dein Code ist für das einmalig richten korrekt, aber umständlich. Hajo hat es passend gekürzt.
(@Hajo: da es W gibt, hätte ich auf With verzichtet. Aber Geschmacksache).
Jetzt Ereignisgesteuert:
in der Code-Seite von "Diese Arbeitsmappe" (Doppelklick auf "Diese Arbeitsmappe") folgende Code _ copy-pasten:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$B$4" Then Sh.Name = Target.Value
End Sub

Dieses Code sagt: wenn irgendwas in einer Zelle "Target" auf einem Blatt "Sh" sich ändert (=Ereignis)
wird geprüft, ob es sich um die Zelle mit Adresse B4 handelt. Wenn ja, der Name von Sh soll den Wert von B4 (in den Fall Target) annehmen.
Viel Erfolg
Yal

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: An: YAL -- klappt leider nicht
03.12.2020 16:36:17
Yal
Halo Gabi,
Du hättest weiterhin im originale Thread antworten können. Ich behalte immer die Threads im Auge, die ich beantwortet habe.
Du hast wahrscheinlich entdeckt, dass im Visual Basic Editor mehrere Codepane zur Verfügung stehen:
_ die "Diese Arbeitsmappe": der hier abgelegte Coding gilt für die Datei, u.a. wenn sich in der Datei "etwas tut" Ereignis.
_ Tabelle1, 2, 3: Coding die nur auf Ereignis in der jeweilige Blatt reagiert.
Ereignis kannst errichten, wenn Du oben links, da wo "(Allgemein)" steht "Worksheet", in einer Tabellencode oder "Workbook" (Mappe) selektiert. Dann fügt sich einen Rumpf von Ereignis, den man beliebig befüllen kann. Oben rechts kann man dann die Liste der verfügbare Ereignis sehen.
Nun. Wenn eine Wert in einer Tabelle geändert wird, wird das -falls implementiert- das Ereignis Workbook_SheetChange auf Mappe-Ebene (=Datei, =Workbook) angestossen ("getriggert").
Darin wird geprüft, dass die Eingabe die Zelle B4 trifft. Was gleichzeitig bedeutet, die Aktualisiserung einer Formel in B4 ist keine Eingabe. Also kein Ereignis.
Da brauchst du einen anderen Ereignis, oder, weil irgendwo machst Du wohl eine Eingabe, die dazu führt, dass die Formel neurechnen müssen, genau auf der Zelle zielt, wo diese eine Eingabe gemacht wird.
Dann muss Du wahrscheinlich zusätzlich die Tabellename prüfen (sonst reagiert das Ding zu oft).
Die Aktion ist dann eine andere: über alle Blätter gehen und jeweilige B4-Wert als Blattnaem legen.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim W As Worksheet
If Sh.Name = "MasterTab" Then
For Each W In Worksheets
If W.Name  "MasterTab" Then 'In MasterTab nicht!
W.Name = W.Range("B4").Value
End If
Next
End If
End Sub
Viel Erfolg
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige