Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1540to1544
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

Worksheet_Change beisst sich

Worksheet_Change beisst sich
17.02.2017 21:45:18
Reto
Hallo zusammen
Habe einen Jahresplan und will Zellen kopieren. Stehe grad auf dem Schlauch:
Einmal habe ich den Jahresplan vom 01.01 bis 31.12 von links nach rechts, der Übersicht lieb (zum ausdrucken) noch von oben nach unten.
Grund: wenn ich etwas im Juni anfange, was im Juli endet muss ich springen, was ich nicht will. Oder zu bequem bin. Will es also hin und her kopieren...
Beispiel:
(Dim Bereiche As Range)
Private Sub Worksheet_Change(ByVal Target As Range)
Set Bereich01 = Range("BI2:DQ15")    'März & April
Set Bereich02 = Range("B17:BJ30")
Set Bereich03 = Range("DR2:FZ15")    'Mai & Juni
Set Bereich04 = Range("B32:BJ45")
etc.
'Jan    Feb  |  Mrz     Apr  |  Mai     Jun  |  Jul     Aug  |  Sep     Okt  |  Nov     Dez
'            |       01      |       03      |       05      |       07      |       09
'    02      |
'    04      |
'    06      |
'    08      |
'    10      |
If Not Intersect(Target, Bereich01) Is Nothing Then
Bereich01.Select
Selection.Copy
Bereich02.Select
ActiveSheet.Paste
ElseIf Not Intersect(Target, Bereich02) Is Nothing Then
Bereich02.Select
Selection.Copy
Bereich01.Select
ActiveSheet.Paste
etc...
End If
Target.Select
End Sub

Nun beissen sich aber die zwei Bereiche, da ich ja beide kopiere. Exid Sub bringt auch nichts. Jemand eine Idee oder generell falscher Ansatz?
Lieber Gruss

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nebenbaustelle Select (gibts immer noch)
17.02.2017 22:23:01
lupo1
If Not Intersect(Target, Bereich01) Is Nothing Then
Bereich01.Select
Selection.Copy
Bereich02.Select
ActiveSheet.Paste
geht auch kürzer:
If Not Intersect(Target, Bereich01) Is Nothing Then Bereich02 = Bereich01
Beim Rest habe ich gegrübelt, aber nicht herausgefunden, was Du wohl möchtest. Vermutlich bist Du gedanklich gerade ganz weit weg, und man könnte das, was Du willst, so lösen, wie bei allen anderen auch.
AW: Worksheet_Change beisst sich
18.02.2017 01:51:18
ChrisL
Hi Reto
Wenn ich richtig verstanden habe würde Exit Sub helfen, dafür keine ElseIf's. Bei Regelmässigkeiten z.B. jede 15. Zeile, könnte man sich die Bereiche vermutlich auch errechnen, aber dazu müsste man mal die konkrete Tabelle sehen. Noch besser wäre, Daten Eingabe und Ausgabe/Übersicht voneinander zu trennen.
Private Sub Worksheet_Change(ByVal Target As Range)
Set Bereich01 = Range("BI2:DQ15")    'März & April
Set Bereich02 = Range("B17:BJ30")
Set Bereich03 = Range("DR2:FZ15")    'Mai & Juni
Set Bereich04 = Range("B32:BJ45")
If Not Intersect(Target, Bereich01) Is Nothing Then
Bereich02.Value = Bereich01.Value
Exit Sub
End If
If Not Intersect(Target, Bereich02) Is Nothing Then
Bereich01.Value = Bereich02.Value
Exit Sub
End If
Target.Select
End Sub
cu
Chris
Anzeige
AW: Worksheet_Change beisst sich
18.02.2017 08:57:46
Hajo_Zi
man sollte die Reaktion auf die Eingabe Ab- und Einschalten.
Application.EnableEvents

AW: Worksheet_Change beisst sich
18.02.2017 10:37:22
ChrisL
Hi Reto
Hajo hat recht und meine Aussage war total falsch. Es geht auch mit ElseIf's und ohne Exit Sub.
In Zusammenhang mit EnableEvents empfielt sich ein kleines Error-Handling um sicher zu gehen, dass die Events am Schluss wieder eingeschaltet sind.

On Error Resume Next
Application.EnableEvents = False
' Makro
Application.EnableEvents = True
cu
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige