Thema Datum  Von Nutzer Rating
Antwort
23.10.2022 13:29:18 Hanibal545
*****
Solved
23.10.2022 13:58:27 Mase
NotSolved
24.10.2022 03:16:10 Gast60278
NotSolved
23.10.2022 14:00:11 Mase
NotSolved
23.10.2022 15:01:44 Hanibal545
NotSolved
Blau Wie kann man dem Programm vermitteln, dass es sich auf mehrere Sheets überträgt?
23.10.2022 15:54:49 Mase
*****
NotSolved
23.10.2022 16:55:53 Hanibal545
NotSolved
23.10.2022 17:10:59 Mase
****
Solved

Ansicht des Beitrags:
Von:
Mase
Datum:
23.10.2022 15:54:49
Views:
232
Rating: Antwort:
  Ja
Thema:
Wie kann man dem Programm vermitteln, dass es sich auf mehrere Sheets überträgt?

Aber ich denke halt, dass es nur für die erste Zelledie if-abfrage ausführt und dass die anderen Zellen einfach ohne if-Abfrage abruft.

Finde es raus, indem Du einen Haltepunkt setzt und via F8 dann zeilenweise das Makro manuell laufen lassen kannst. 

Einen Haltepunkt setzt man, wenn man auf höhe der gewünschten Codezeile in den grauen Bereich klickt:

 

Wenn Du jetzt eine Änderung im Kalender machst, wird der Code bis zu dieser Zeile/diesem Haltepunkt ausgeführt und wartet, ob es entweder zeilenweise mit F8 (manuell) oder F5 (automatisch) weitergehen soll


.

Jetzt wollte ich fragen, ob es einen Weg gibt, dass man auf jede Zelle einzeln das vba-script über Worksheet_Change(ByVal Target As Range) laufen lassen kann.

Der Code in diesem Bereich wird immer dann ausgeführt, wenn es in einer Zelle, egal welche, in diesem Arbeitsblatt, eine Änderung gibt.

Wenn Du nun nur bei bestimten Zellen reagieren möchtest, musst Du das innerhalb dieser Prozedur abfragen. Das kannst Du über die Objektvariable Target. Target hält eine Referenz zu einer Zelle oder zu vielen Zellen. Auch das kannst Du dann abfragen.

 

Mal abgesehen davon, dass Du diesen Code jedes Jahr aufs Neue umschreiben musst (Blattnamen), würde Ich Dir empfehlen auf eine If-Abfrage zu reduzieren und Deine vielen ELSEIF-Abfragen durch ein Select-Case-Statment zu ersetzen.

Skizziert:

    If Target.Cells.Count = 1 Then '*** prüfen, ob Target nur eine Zelle referenziert
        Select Case Target.Column
            Case 7 To 37
                '***
                Sheets("Januar 23").Range(Target.Address).Value = Range(Target.Address).Value
            Case 38 To 65
            
            Case usw usf
            
        End Select
    End If

Übrigens:

Das hier:

Range(Target.Address).Value

Wird vereinfacht so formuliert:

Target.Value

 


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
23.10.2022 13:29:18 Hanibal545
*****
Solved
23.10.2022 13:58:27 Mase
NotSolved
24.10.2022 03:16:10 Gast60278
NotSolved
23.10.2022 14:00:11 Mase
NotSolved
23.10.2022 15:01:44 Hanibal545
NotSolved
Blau Wie kann man dem Programm vermitteln, dass es sich auf mehrere Sheets überträgt?
23.10.2022 15:54:49 Mase
*****
NotSolved
23.10.2022 16:55:53 Hanibal545
NotSolved
23.10.2022 17:10:59 Mase
****
Solved