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

Worksheet_Change
Joachim
Hallo
Komme nicht weiter
Folgender Code funktioniert nur wenn die Spalten F, G oder H einzeln bearbeitet werden.
Wenn ich aber mehrere Zellen kopiere (z.B. F2:G2 nach F3) werden auch mehrere Zellen mit "aus SAP" beschrieben.
Es soll aber immer nur die Spalte E verändert werden.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F2:F20000")) Is Nothing Then
Target.Offset(0, -1).Formula = "aus SAP"
Else
If Not Intersect(Target, Range("G2:G20000")) Is Nothing Then
Target.Offset(0, -2).Formula = "aus SAP"
Else
If Not Intersect(Target, Range("H2:H20000")) Is Nothing Then
Target.Offset(0, -3).Formula = "aus SAP"
Else
End If
End If
End If
End Sub
Kann mir jemand helfen.
Dank im voraus
Gruß Joachim

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Worksheet_Change
07.05.2012 10:09:27
Reinhard
Hallo Joachim,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim T As Range
Set T = Intersect(Target, Range("F2:F20000"))
If Not T Is Nothing Then
T.Offset(0, -1).Formula = "aus SAP"
Else
Set T = Intersect(Target, Range("G2:G20000"))
If Not T Is Nothing Then
T.Offset(0, -2).Formula = "aus SAP"
Else
Set T = Intersect(Target, Range("H2:H20000"))
If Not T Is Nothing Then
T.Offset(0, -3).Formula = "aus SAP"
End If
End If
End If
End Sub

Gruß
Reinhard
AW: Worksheet_Change
07.05.2012 10:10:30
ohne
Hallo Joachim,
Versuch mal:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC As Range
If Intersect(Target, Range("F2:H20000")) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rC In Intersect(Target, Range("F2:H20000")).Rows
Cells(rC.Row, 5) = "aus SAP"
Next rC
Application.EnableEvents = True
End Sub

Gruess Hansueli
Anzeige
Oder so ...
07.05.2012 10:11:37
xr8k2
Hallo Joachim,
so geht´s auch:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Range
If Not Intersect(Target, Range("F2:H20000")) Is Nothing Then
For Each Zeile In Intersect(Target, Range("F2:H20000"))
Cells(Zeile.Row, 5).Formula = "aus SAP"
Next Zeile
End If
End Sub
Gruß,
xr8k2
AW: Oder so ...
07.05.2012 10:22:47
Joachim
Hallo an alle drei
funktionieren alle drei super
Dank euch
Super Forum
Gruß Joachim
AW: Oder so (mit 2mal mehr Aufwand!)
07.05.2012 10:31:28
EtoPHG
Hallo xr8k2,
Ja so geht es auch, nur macht dein Ding 3 Einträge (zwar immer an die gleiche Stelle), auch wenn nur einer nötig wäre pro Zeile!
Gruess Hansueli
Anzeige
AW: Jupp ...
07.05.2012 10:40:04
xr8k2
Hallo Hansueli,
.... halt wie so oft nicht bis zum Schluss gedacht ;-)
Gruß,
xr8k2
AW: Jupp ...
07.05.2012 10:54:44
Reinhard
Hallo ihr beiden,
Schleifen sind langsam :-)

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("F2:H20000")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Range(Replace(Replace(Replace(Intersect(Target, Range("F2:H20000")).Address _
, "F", "E"), "G", "E"), "H", "E")).Value = "aus SAP"
Application.EnableEvents = True
End Sub

AW: Frage @ all
07.05.2012 11:15:57
hary
Moin ihr Drei
Geht doch so auch, oder mach ich eine Gedankenfehler? Wenn auch mehrere Zeilen kopiert werden.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F2:H20000")) Is Nothing Then
Cells(Target.Row, "E").Resize(Target.Rows.Count, 1) = "aus SAP"
End If
End Sub

gruss hary
Anzeige
AW: Frage @ all
07.05.2012 11:27:29
Reinhard
Hallo Hary,
sieht Klasse aus, konnte keinen Fehler finden.
Gruß
Reinhard
AW: Frage @ all
07.05.2012 11:28:43
xr8k2
Hallo zurück Reinhard und Harry,
beides funktioniert ... jedoch nur bei einzelnen bzw. zusammenhängenden Zeilen. Bei nicht zusammenhängenden Bereichen gibt´s entweder einen Fehler (Reinhard) oder es wird lediglich die 1. Zeile des Bereichs gekennzeichnet (Harry).
Gruß,
xr8k2
AW: Frage @ zr8k2
07.05.2012 11:38:53
hary
Hallo
Wie meinst Du das? Wenn ich wie hier die gelben auswaehle/kopiere und einfuege kommt das untere raus.
gruss hary
Tabelle1
 EFGH
2  aaa
3  aaa
4  aaa
5  aaa
6       
7       
8aus SAPaa 
9aus SAPaa 
10aus SAPaa 

Tabellendarstellung in Foren Version 5.30


Anzeige
AW: Frage @ zr8k2
07.05.2012 11:49:21
xr8k2
Hallo Harry,
korrekt ... so funktionierts. Nicht jedoch beim Löschen von Daten, in deinem Beispiel F2:G2, F4:G5 markiert und ENTF gedrückt. Hier würde nur die Zeile 2 markiert werden.
Ich glaub aber, das dieser Fall für den urspr. Fragestelle nicht von Bedeutung ist, da dort so denke ich Daten gekennzeichnet werden sollen wenn sie eingetragen werden. Interessant wär´s dann nur, wenn die Kennzeichnung wieder automatisch gelöscht werden söllte ;-)
Gruß,
xr8k2
hary hat gewonnen !!! owT
07.05.2012 11:29:29
EtoPHG

Langsam, na ja dann halt
07.05.2012 11:27:19
EtoPHG
Hallo Reinhard,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rC As Range
If Intersect(Target, Range("F2:H20000")) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Intersect(Target, Range("F2:H20000"))
.Offset(0, -(.Column Mod 5)).Columns(1) = "aus SAP"
End With
Application.EnableEvents = True
End Sub
würde dein Replace-Gefummel etwas vereinfachen ;-)
Gruess Hansueli
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige