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

Code auf ganze Spalte erweitern

Code auf ganze Spalte erweitern
16.04.2016 18:33:08
Oisse
Hallo Zusammen,
in meiner Artikelliste habe ich eine spalte E in der die Stückzahlen zum Verk. stehen.
In der Spalte V wird eingegeben wieviele Stück tatsächlich verkauft werden.
Wenn nun die Stückzahl voneinander abweichen soll eine neue Zeile darunter mit den gleichen Inhalten gemacht werden jedoch in der Spalte E mit den aktuellen Stückzahlen.
Nun habe ich dazu folgenden (wahrscheinlich sehr umständlichen) Code geschrieben, zusammengeschnipselt oder wie auch immer, der aber funktioniert.
Ich hätte nun aber gerne, dass dieser Code bei allen Zellen ab Zeile 3 in Spalte V funktioniert.
Wie bitte mache ich das?
Hier der Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim Dif As Long
Dim Ur As Long
Dim Ver As Long
Ur = ThisWorkbook.Worksheets("Artikel").Cells(ActiveCell.Row, 5)
Ver = ThisWorkbook.Worksheets("Artikel").Cells(ActiveCell.Row, 22)
If Target.Address = "$V$15" Then
If ThisWorkbook.Worksheets("Artikel").Cells(ActiveCell.Row, 22)  ThisWorkbook. _
Worksheets("Artikel").Cells(ActiveCell.Row, 5) Then
Dif = Ur - Ver
ActiveCell.Offset(0, -1).EntireRow.Copy
Cells(ActiveCell.Row + 1, 1).Insert Shift:=xlDown
Cells(ActiveCell.Row + 1, 1).Select
ThisWorkbook.Worksheets("Artikel").Cells(ActiveCell.Row, 5) = Dif
ThisWorkbook.Worksheets("Artikel").Cells(ActiveCell.Row, 22) = ""
End If
End If
End Sub

Danke schon mal

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code auf ganze Spalte erweitern
16.04.2016 20:11:13
Michael
Hi Oisse,
die ganzen "this" und "active" sind geschenkt, weil sich diese Art von Ereignissen IMMER auf das jeweilige Blatt beziehen.
Dann könnte es etwa so aussehen:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 3 And Target.Column = 22 Then
If Target  "" Then
If IsNumeric(Target.Value) Then
If Target.Value  Target.Offset(, -17).Value And _
Target.Value  0 Then
If Target.Offset(1, -21).Value  Target.Offset(, -21).Value Then
Application.EnableEvents = False
Target.EntireRow.Copy
Target.Offset(1, -21).Insert
Target.Offset(1, -17).Value = Target.Offset(, -17).Value - Target.Value
Target.Offset(1).Value = ""
Application.EnableEvents = True
Application.CutCopyMode = False
Else
MsgBox "bitte weiter unten ändern"
End If
End If
End If
End If
End If
End Sub

Im Beispiel bin ich davon ausgegangen, daß die Artikel in Spalte A stehen, die ergibt sich in der Abfrage nach:
Target.Offset(1, -17).Value = Target.Offset(, -17).Value - Target.Value

Wenn die Zeile unter der Eingabe bereits der gleiche Artikel ist, wird die Aktion NICHT ausgeführt, weil sie ja logischerweise immer in der UNTERSTEN, vorhandenen Zeile zu diesem Artikel passieren sollte, sonst müßte man alle Werte unten neu durchkalkulieren...
Das hat allerdings den Pferdefuß, daß der falsche Wert in der Zelle stehenbleibt.
Das wiederum läßt sich durch diese 3 Zeilen direkt nach der MsgBox beheben:
              Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Schöne Grüße,
Michael

Anzeige
AW: Code auf ganze Spalte erweitern
16.04.2016 20:20:22
Werner
Hallo,
hier meine Version. Bin von deinem Code ausgegangen und habe ihn ledigliche entsprechend abgeändert. Jetzt hast du ja schon eine Version von Michael (hoffe mal Michael ist nicht sauer, weil ich jetzt meine auch noch einstelle).
Aber da ich mir jetzt schon einmal die Mühe gemacht habe....
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Dif As Long
Dim Ur As Long
Dim Ver As Long
Ur = Cells(Target.Row, 5)
Ver = Cells(Target.Row, 22)
If Target.Row > 2 And Target.Column = 22 Then
If Cells(Target.Row, 22)  Cells(Target.Row, 5) Then
Dif = Ur - Ver
Application.EnableEvents = False
Target.EntireRow.Copy
Target.Offset(1, 0).EntireRow.Insert shift:=xlDown
Target.Offset(1, -17) = Dif
Target.Offset(1, 0) = ""
Application.EnableEvents = True
Application.CutCopyMode = False
End If
End If
End Sub
Gruß Werner

Anzeige
@Werner: ach was! Gruß, owT
16.04.2016 20:25:06
Michael

AW: Code auf ganze Spalte erweitern
16.04.2016 22:58:32
Oisse
Hallo Michael, Hallo Werner.
Wieso bin ich von euren Codes bloß so begeistert?
Weil sie hervorragend funktionieren!
Habt vielen herzlichen Dank!!!

AW: Danke für die Rückmeldung. owT
17.04.2016 09:46:09
Werner

von mir auch, Gruß, M. owT
17.04.2016 16:02:55
mir

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige