Excel Makro ausführen bei Änderung in einer Zelle in anderem Tabellenblatt?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Es funktioniert, ja, auch wenn etwas umständlich. Generell würde ich es vermeiden Übergabeparameter wie target zu verändern, selbst wenn sie by value übergeben werden. Aber gut.

Zelle A6 vom Tabellenblatt "Deckblatt" referenzierst du mit "Worksheets("Deckblatt").Range("A6")".

Das macht aber in deinem Fall keinen Sinn, da du dich in einem Worksheet-Ereignis befindest. Das bedeutet, das Ereignis wird nur bei Änderungen im selben Sheet, in das der Code gelegt wurde, ausgelöst.

Was bedeutet das für dich?
Du musst dein Ereignis am Tabellenblatt "Deckblatt" auslösen. FooterLeft müsstest du allen Tabellenblättern zugänglich machen können, indem du die Prozedur in ein Modul der Arbeitsmappe packst.

Danke für die Antwort.

Das Makro selbst liegt in einem Modul, ist also für alle Tabellenblätter zugänglich. Allerdings soll die Ausführung zwar durch eine Zelle auf dem "Deckblatt" ausgelöst werden, allerdings soll das Makro auf "Deckblatt" nicht ausgeführt werden sondern nur auf allen anderen Tabellenblättern.

Wenn nicht über das Worksheet-Ereignis, wie würde ich das dann anstellen?

0
@Frankie87

Die Prozedur heißt doch "WorkSheet_Change". Das heißt, man kann es nur pro Worksheet definieren und nicht worksheetübergreifend.

Ich habe gerade kein VBA zur Hand, aber ich bin mir sicher, dass es kein entsprechendes Arbeitsmappenereignis (Workbook_Change) gibt.

In einem Tabellenblatt ändert sich etwas, dann wird genau in diesem Tabellenblatt das Ereignis ausgelöst.

0

PS: Es geht im Endeffekt darum, dass auf "Deckblatt" in einer Zelle ein bestimmter Text, in einer anderen ein Datum eingetragen wird. Diese sollen dann auf allen weiteren Tabellenblättern in der Fußzeile erscheinen und sich automatisch ändern wenn der Eintrag in "Deckblatt" geändert wird.

Vielleicht gibt es hierfür ja auch eine viel einfachere Herangehensweise. Auch dafür bin ich gerne offen.

0
@Frankie87

Meines Erachtens reicht es, wenn du das Change-Ereignis nur auf dem Deckblatt abfängst. Weil wenn dort etwas geändert wird, soll etwas passieren.

Wenn beim Ändern auf anderen Tabellenblättern auch etwas passieren soll in Abhängigkeit vom Deckblatt, kannst du probieren, auf den anderen Tabellenblättern in einer Hilfszelle =Deckblatt!A6 zu schreiben.
Ich bin mir gerade nicht sicher, ob eine indirekte Änderung auch das Change-Event auslöst.

2
@Suboptimierer

Danke für die erneute Antwort und sorry, dass ich mich erst jetzt wieder melde, war die letzten Tage unterwegs. Leider funktioniert das mit der indirekten Änderung in der Zelle mit Verweis nicht. Die Idee hatte ich auch zuerst und habe es so probiert, allerdings ändert sich ja der Wert der Zelle nicht, deshalb wird es auch nicht als Change erkannt. Trotzdem danke, ich probiere die Tage mal weiter wenn ich Zeit finde.

0

Formalantwort, der Frager sollte Dir nach dem qualifizierten Eingehen auf die Rückfrage ruhig eine "Hilfreichste" zukommen lassen können und zukommen lassen!


Makro automatisch ausführen bei Zellenänderung VBA

Hi,

ich habe ein Makro, dass mir automatisch die Zeilenhöhe mit Zeilenumbruch anpasst, wenn der Text zu lang ist (es wirkt auf das ganze Tabellenblatt aber mir geht es hauptsächlich um die verbundenen Zellen "D31:M31"). Dies passt auch soweit wenn ich das Makro nach Eingabe des geänderten Textes ausführe.

Nun benötige ich noch, dass das Makro automatisch ausgeführt wird, sobald sich der Text in der Zelle ändert. "Nehmen wir an da steht "hallo" und ich schreibe nun "hallo hans" hinein (natürlich viel länger, damit der Umbruch stattfindet).

Leider funktioniert es nicht mittels VBA, wenn ich den Text ändere.. Weiß jemand rat was ich falsch mache?

Danke für jeden Hinweis !!!

VBA in Tabelle1:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("$D$31:$M$31")) Is Nothing Then Zellenanpassen End Sub

Und hier das Makro:

Sub Zellenanpassen() Dim CurrentRowHeight As Single, MergedCellRgWidth As Single Dim CurrCell As Range Dim ActiveCellWidth As Single, PossNewRowHeight As Single If ActiveCell.MergeCells Then With ActiveCell.MergeArea If .Rows.Count = 1 And .WrapText = True Then Application.ScreenUpdating = False CurrentRowHeight = .RowHeight ActiveCellWidth = ActiveCell.ColumnWidth For Each CurrCell In Selection MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth Next .MergeCells = False .Cells(1).ColumnWidth = MergedCellRgWidth .EntireRow.AutoFit PossNewRowHeight = .RowHeight .Cells(1).ColumnWidth = ActiveCellWidth .MergeCells = True .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _ CurrentRowHeight, PossNewRowHeight) End If End With End If End Sub

VG fireless91

P.S.: Meine VBA Kenntnisse sind eher mau.. von daher nicht böse sein face-wink

...zur Frage

Suche in VBA anpassen?

Hallo zusammen,

ich soll auf der Arbeit eine vorhandene Suchmaske in EXCEL (VBA) anpassen.

Zurzeit sucht die Suchfunktion anhand eines Stichwortes (Eingabe in ein Suchfeld - Tabellenblatt: Suchmaske) auf einem anderen Tabellenblatt (Datenbank) alle Einträge nach dem Suchwort durch und gibt mir nach erfolgreicher Suche ein Feedback/Ergebnis aus.

Das Ergebnis besteht derzeit aus den Informationen auf welchem Tabelleblatt und in welcher Zelle das Suchwort gefunden wurde.

Meine Aufgabe (an der ich verzweifele, da ich kaum Kenntnisse in VBA bzw. Makros habe) ist die, das Suchergebnis um die Ausgabe von Titel und Örtlichkeit zu erweitern.

Vielen Dank für Eure Hilfe...

...zur Frage

Excel 2010 VBA - MsgBox, wenn schon beschriebene Zellen bearbeitet werden sollen

Hallo Zusammen,

folgendes Makro führt zu einer kleinen „Sicherheitsabfrage“:

Option Explicit

Public OldValue As Variant

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("A:W")) Is Nothing Then

MsgBox "Sind Sie sich sicher, dass Sie die Zelle bearbeiten wollen?", vbQuestion, "Achtung"

End If

End Sub

Das Makro funktioniert schon ganz gut, allerdings möchte ich es ein wenig anpassen. Es soll nur eine Textbox erscheinen, wenn eine bereits beschriebene Zelle bearbeitet wird. Bei Bearbeitung leerer Felder soll also keine Textbox erscheinen.

Vielen Dank schon einmal! :)

...zur Frage

Wie kann man mit einen Makro Ordner öffnen und dann die CSV-Dateil auswählen die im Zelle A1 geöffnet wird?

Hallo,

Ich brauche ein Makro mit dem ich einen Ordner öffnen, dort eine beliebige CSV-Datei auswählen kann und diese sich dann in der Zelle A1 öffnet.

bisher habe ich das im Netz gefunden:

Sub Weekly_Flash()

ChDir "C:\Users\Manuel\Downloads"

Call Application.Dialogs(xlDialogOpen).Show

End Sub

Dieses Makro öffnet meinen Ordner, alerdings öffnet es die CSV datei in einer neuen Excel-Datei und nicht in der Zelle A1.

Ich kenne mich leider gar nicht mit VBA aus. :/ Habe nur im Internet immer wieder Makros eingefügt und geguckt was passiert und meinen Pfad angegeben :D

...zur Frage

Was möchtest Du wissen?