Thema Datum  Von Nutzer Rating
Antwort
07.06.2021 15:24:31 Meik
*****
Solved
07.06.2021 16:04:03 Mase
*****
Solved
08.06.2021 14:05:57 Meik
NotSolved
Blau Für jede Zelle eines Bereichs... empfiehlt sich For-Each
08.06.2021 18:33:45 Mase
NotSolved
09.06.2021 09:06:46 Meik
NotSolved
09.06.2021 09:16:59 Mase
NotSolved

Ansicht des Beitrags:
Von:
Mase
Datum:
08.06.2021 18:33:45
Views:
608
Rating: Antwort:
  Ja
Thema:
Für jede Zelle eines Bereichs... empfiehlt sich For-Each

Wenn das _Change-Ereignis geworfen wird, wird jene Prozedur durchlaufen.

In dieser Prozedur rufst Du nun Dein Makro auf. Da Dein Makro nun in einem allgemeinen Modul steht, kann es ja nicht wissen, auf welches Blatt der Code auszuführen ist.

Diese Informationen empfängt ein Makro über den Prozedurkopf.

'*** natürlich gesprochen, sieht der Prozedurkopf so aus
Sub MeinMakroImAllgemeineModulStehend(SollAufDiesemWorksheetAusgeführtWerden)


'*** in VBA würde es besser so ausschauen
Sub MeinMakroname(ByRef wks As Excel.Worksheet)

Der Aufruf geschieht dann folgendemassen:

Private Sub Worksheet_Change(ByVal Target As Range)
    Call MeinMakroname(Target.Parent) '*** Hier wird eine Referenz zum Tabellenblatt übergeben / also ein Verweis
End Sub

 

Im allgemeinen Makro stünde dies:

Option Explicit

Sub MeinMakroname(ByRef wks As Excel.Worksheet)
    With wks
        '*** TODO
        ' hier die zu erledigenden Arbeiten für das Worksheet aufführen
    End With
End Sub

 

Jetzt hast Du den Code in ein Modul ausgelagert. Hat den Vorteil, dass Du Ihn nicht in jedem Arbeitsblatt wiederholen musst.

Das müsstest DU nämlich, weil Dein _Change-Event() zur Klasse Worksheet gehört.

 

Da bist auch schon beim nächsten Problem. Wenn nun weitere Arbeitsbläter dazukommen (sollen), welche ebenfalls auf das _Change_Event() reagieren sollen bzw Dein ausgelagertes Makro auf dem neuen Worksheet auch wirken soll, kommst Du nun nicht drumrum, den Code(Aufruf) auch da  wieder reinzuschreiben.

Drei, vier Mal geht das. Aber bei 50+ schreibst X-Mal dasselbe. Wenn dann eine Änderung gemacht werden muss, dann prost Mahlzeit

Ist denk ich klar soweit.

 

Frage:

Wird das so der Fall sein?

 

Wenn ja, emfpiehlt sich hier die Klassenprogrammierung.

Hier wird der Code wiederum ausgelagert mit dem Ziel alle Change_Events() einfach abzugreifen. Egal wie viele Blätter es sind, waren oder werden.

Du schreibst den Code jeweils einmal und must dDich nicht wiederholen.

 

Genug geschrieben.  Sag bescheid wenn Ich sonst noch helfen kann. 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.06.2021 15:24:31 Meik
*****
Solved
07.06.2021 16:04:03 Mase
*****
Solved
08.06.2021 14:05:57 Meik
NotSolved
Blau Für jede Zelle eines Bereichs... empfiehlt sich For-Each
08.06.2021 18:33:45 Mase
NotSolved
09.06.2021 09:06:46 Meik
NotSolved
09.06.2021 09:16:59 Mase
NotSolved