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
23.10.2022 15:54:49 Mase
*****
NotSolved
Rot Wie kann man dem Programm vermitteln, dass es sich auf mehrere Sheets überträgt?
23.10.2022 16:55:53 Hanibal545
NotSolved
23.10.2022 17:10:59 Mase
****
Solved

Ansicht des Beitrags:
Von:
Hanibal545
Datum:
23.10.2022 16:55:53
Views:
234
Rating: Antwort:
  Ja
Thema:
Wie kann man dem Programm vermitteln, dass es sich auf mehrere Sheets überträgt?

Erstmal vielen Dank für deine Antwort. 

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

Ich habe auch mal probiert und die if-Abfrage wird nur 1. ausgeführt.

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.

Ich möchte eigendlich, dass das Programm auf alle Zeilen reagiert. Das Problem ist halt, dass wenn ich Zellen gleichzeitig ändere, welche über ein paar Monaten verteilt waren, werden alle Zellen in den ersten Monat verschoben, wo die If-Abfrage ist.

Ich habe eher an sowas wie eine for-schleife (python) gedacht, wo ich jede Zelle einzeln abfragen kann, um jede Zelle in den richtigen Monat zu verschieben.

(etwa sowas

for item in Target.Cells:
    Select Case item.Column
    Case 7 To 37
        '***
        Sheets("Januar 23").Range(Target.Address).Value = Range(Target.Address).Value
    Case 38 To 65
    Case usw usf

)

 Mal abgesehen davon, dass Du diesen Code jedes Jahr aufs Neue umschreiben musst (Blattnamen)

Ich habe es nur aus Verständniszwecken  als Namen benannt. In meinem Script verwende ich Sheets(1), um keine Namen hardcoden zu müssen. Ich muss nur ein weiteres Exemplar (oder voll automatisch) machen, um die Schaltjahre mit einzubeziehen.

würde Ich Dir empfehlen auf eine If-Abfrage zu reduzieren und Deine vielen ELSEIF-Abfragen durch ein Select-Case-Statment zu ersetzen.

Da ich bei VBA recht neu bin und mich zuvor eher mit Python beschäftigt habe, ist mir nicht eingefallen, dass es in anderen Sprachen auch noch die Case-Funktion gibt.

Das hier:

Range(Target.Address).Value

Wird vereinfacht so formuliert:

Target.Value

Es war mir nicht bewusst, dass man das abkürzen kann.

 

Ich würde mich freuen, wenn es eine gute Lösung gibt. 

LG


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
23.10.2022 15:54:49 Mase
*****
NotSolved
Rot Wie kann man dem Programm vermitteln, dass es sich auf mehrere Sheets überträgt?
23.10.2022 16:55:53 Hanibal545
NotSolved
23.10.2022 17:10:59 Mase
****
Solved