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

Makro ausführen bei Wertänderung in Spalte

Makro ausführen bei Wertänderung in Spalte
18.02.2020 11:07:58
Sabine
Hallo zusammen
Nach langem Suchen ohne Lösung wäre ich echt froh um eure Hilfe.
Ich benötige ein Makro, welches im Worksheet "Aktivitäten" bei der Werteingabe "JA" in der Spalte K (Dropdownliste) bestimmte Zellen der entsprechenden Zeile in das Worksheet "Entscheidungen" kopiert. Ich habe durch Aufzeichnung ein Makro kreiert, das schon ganz gut läuft, jedoch nur auf einer bestimmten Zeile. Das Makro sollte jedoch auf jeder Zeile zur Anwendung kommen, in der der Wert in Spalte K auf "JA" gesetzt wird.
Bei der Gelegenheit möchte ich auch, dass in der neu kreierten Zeile im Worksheet "Entscheidungen" in der Zelle B11 das aktuelle Datum (also das Datum der Makroausführung) eingefügt wird, dafür hab ich auch noch keine Lösung gefunden.
Hier der generierte Code:
Sub Makro1()
' Makro1 Makro
Range("A11:F11").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Range("A12:A16").Select
Range("A16").Activate
Selection.AutoFill Destination:=Range("A11:A16"), Type:=xlFillDefault
Range("A11:A16").Select
Sheets("Aktivit?ten").Select
Range("D7").Select
Selection.Copy
Sheets("Entscheidungen").Select
Range("C11").Select
ActiveSheet.Paste
Sheets("Aktivit?ten").Select
Range("E7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Entscheidungen").Select
Range("D11").Select
ActiveSheet.Paste
Sheets("Aktivit?ten").Select
Range("F7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Entscheidungen").Select
Range("F11").Select
ActiveSheet.Paste
Sheets("Aktivit?ten").Select
Range("J7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Entscheidungen").Select
Range("E11").Select
ActiveSheet.Paste
End Sub

Vielen Dank schon jetzt für euer Hilfe!
Liebe Grüsse, Sabine

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro ausführen bei Wertänderung in Spalte
18.02.2020 11:24:17
Werner
Hallo Sabine,
das Makro gehört ins Codemodul des Tabellenblattes, auf dem sich deine DropDown befinden.
Rechtsklick auf den Tabellenblatreiter - Code anzeigen - Code rechts ins Codefenster kopieren.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = "K" Then
If Target = "Ja" Then
With Worksheets("Entscheidungen")
.Cells(11, "C") = Cells(Target.Row, "D")
.Cells(11, "D") = Cells(Target.Row, "E")
.Cells(11, "F") = Cells(Target.Row, "F")
.Cells(11, "E") = Cells(Target.Row, "J")
.Cells(11, "B") = Date
End With
End If
End If
End Sub
Gruß Werner
Anzeige
Update
18.02.2020 11:32:02
Werner
Hallo,
muss natürlich so
f Target.Column = 11 Then

und nicht so
f Target.Column = "K" Then
sein. Bitte ändern.
Gruß Werner
und jetzt ist ein I verschütt gegangen...
18.02.2020 11:33:38
Werner
Hallo,
...deshalb noch mal komplett:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 11 Then
If Target = "Ja" Then
With Worksheets("Entscheidungen")
.Cells(11, "C") = Cells(Target.Row, "D")
.Cells(11, "D") = Cells(Target.Row, "E")
.Cells(11, "F") = Cells(Target.Row, "F")
.Cells(11, "E") = Cells(Target.Row, "J")
.Cells(11, "B") = Date
End With
End If
End If
End Sub
Gruß Werner
Anzeige
AW: und jetzt ist ein I verschütt gegangen...
18.02.2020 12:47:40
Sabine
Hallo Werner
Leider tut sich jetzt gar nichts mehr, wenn ich den Wert in Spalte K auf JA ändere... Woran kann das liegen?
Vielen Dank für die Hilfe!
Liebe Grüsse, Sabine
AW: und jetzt ist ein I verschütt gegangen...
18.02.2020 13:18:33
Werner
Hallo,
hast du den Code auch im Codemodul des entsprechenden Tabellenblattes?
Gruß Werner
AW: und jetzt ist ein I verschütt gegangen...
18.02.2020 14:59:04
Sabine
Das habe ich nun gemacht (hab den Code in der Tabelle "Aktivitäten" eingefügt, wie auch ein neues Modul zum entsprechenden Worksheet gemacht und den Code da hinein kopiert. Trotzdem tut sich da nix.
Kannst du mir kurz erklären, wann man wo einen Code einfügen muss? (ich begreife den Unterschied zwiwschen Microsoft Excel Ojekte und Module nicht) Und vor allem was ich falsch mache?
Vielen Dank!
Liebe Grüsse, Sabine
Anzeige
AW: und jetzt ist ein I verschütt gegangen...
18.02.2020 15:16:16
Werner
Hallo,
so, jetzt nochmal (und mit einer Änderung im Code, da du ja wohl "JA" in Großbuchstaben hast).
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 11 Then
If UCase$(Target) = "JA" Then
With Worksheets("Entscheidungen")
.Cells(11, "C") = Cells(Target.Row, "D")
.Cells(11, "D") = Cells(Target.Row, "E")
.Cells(11, "F") = Cells(Target.Row, "F")
.Cells(11, "E") = Cells(Target.Row, "J")
.Cells(11, "B") = Date
End With
End If
End If
End Sub
Rechtsklick auf den Tabellenblattreiter von "Aktivitäten" - Code anzeigen - kompletten Code rechts ins Codefenster kopieren.
Und mehr nicht. Es ist kein weiterer Code in einem Modul notwendig.
Gruß Werner
Anzeige
AW: und jetzt ist ein I verschütt gegangen...
18.02.2020 15:25:47
Sabine
Hallo Werner
Jetzt funktioniert es, vielen Dank! Hätte auch selbst auf die Gross-/Kleinschreibung kommen können...
Was ich vergass zu erwähnen ist, dass bei jeder Kopie jeweils in Zeile 11 eine neue Zeile generiert werden müsste, sonst wird diese ja jedes Mal überschrieben. Es sollte jedoch bei jedem Kopier-Vorgang eine neue Zeile mit den kopierten Informationen angelegt werden. Kannst du mir da nochmals helfen?
Vielen Dank!
Liebe Grüsse, Sabine
AW: und jetzt ist ein I verschütt gegangen...
18.02.2020 15:46:19
Werner
Hallo,
so etwas bitte nächstes mal gleich mitteilen wie du was willst. Ich konnte mich nur an deinem aufgezeichnetem Code orientieren und da ging es im Zielblatt um die Zeile 11.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim loLetzte As Long
If Target.Count > 1 Then Exit Sub
If Target.Column = 11 Then
If UCase$(Target) = "JA" Then
With Worksheets("Entscheidungen")
loLetzte = .Cells(.Rows.Count, "C").End(xlUp).Offset(1).Row
If loLetzte 
Gruß Werner
Anzeige
AW: und jetzt ist ein I verschütt gegangen...
18.02.2020 16:01:18
Sabine
Tut mir leid, ich habe den Fehler erst jetzt festgestellt, als es endlich lief...
Mit deiner Änderung schreibt es die kopierten Daten im Zielblatt jetzt jeweils in eine neue Zeile UNTERHALB der bereits ausgefüllten Zeilen. Ich möchte aber, dass die neue Zeile zuoberst erscheint(also jeweils in Zeile 11, die vorherigen Zeilen werden um eine Zeile nach unten verschoben). Wenn du mir das noch anpasst rettest du mir den Tag... :)
Liebe Grüsse, Sabine
AW: und jetzt ist ein I verschütt gegangen...
18.02.2020 17:11:19
Werner
Hallo,
so:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 11 Then
If UCase$(Target) = "JA" Then
With Worksheets("Entscheidungen")
.Rows(11).Insert
.Cells(11, "C") = Cells(Target.Row, "D")
.Cells(11, "D") = Cells(Target.Row, "E")
.Cells(11, "F") = Cells(Target.Row, "F")
.Cells(11, "E") = Cells(Target.Row, "J")
.Cells(11, "B") = Date
End With
End If
End If
End Sub
Gruß Werner
Anzeige
AW: und jetzt ist ein I verschütt gegangen...
18.02.2020 17:21:13
Sabine
Perfekt, ganz herzlichen Dank für die Hilfe und die Nerven! :)
Einen schönen Abend wünsche ich dir.
Liebe Grüsse, Sabine
Gerne u. Danke für die Rückmeldung. o.w.T.
18.02.2020 17:44:48
Werner

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige