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

Per VBA ausfüllen, bei Zellenänderung

Per VBA ausfüllen, bei Zellenänderung
29.08.2016 17:57:24
Dominik
Hallo zusammen,
ich würde gerne eine automatische Vervollständigung in eine Liste einbauen.
Und zwar enthalten die Spalten M und N Zeiträume.
War die Spalte M leer und wird ausgewählt, sollen die Spalten P bis S mit den jeweiligen Werten aus dem Stammdatenblatt befüllt werden.
Wird die Spalte N mit dem selben Wert befüllt, soll nichts weiter passieren. Wird jedoch ein abweichender Wert genommen, sollen nur die Spalten P, Q und R aktualisiert werden.
Weiterhin soll in Spalte S angezeigt werden, wann irgendeine Zelle (Spalte A bis R) in einer Zeile geändert wurde.
Ist so etwas recht einfach und zuverlässig möglich?
Ich hätte an "Private Sub Worksheet_Change(ByVal Target As Range)" gedacht, bin aber in VBA noch nicht fit genug. Aber man wächst ja bekanntlich mit seinen Aufgaben...
Vielen Dank und Gruß
Beispielsdatei hier:
https://www.herber.de/bbs/user/107880.xlsm

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA ausfüllen, bei Zellenänderung
29.08.2016 20:34:55
Bastian
Kannst es ja mal so testen hab es nur ganz schnell gemacht =D
in das WS Kunden.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range
If Target.Column = 13 Then
With Worksheets("Stammdaten")
Set c = .Range(.Range("A2"), .Range("A2").End(xlDown)).Find(Target.Value, LookIn:=xlValues)
Worksheets("Kunden").Range(Worksheets("Kunden").Cells(Target.Row, "O"), Worksheets("Kunden"). _
Cells(Target.Row, "R")) = .Range(.Cells(c.Row, "C"), .Cells(c.Row, "F")).Value
End With
End If
If Target.Column = 14 Then
If Not Target.Value = Target.Offset(0, -1).Value Then
With Worksheets("Stammdaten")
Set c = .Range(.Range("A2"), .Range("A2").End(xlDown)).Find(Target.Value, LookIn:=xlValues)
Worksheets("Kunden").Range(Worksheets("Kunden").Cells(Target.Row, "P"), Worksheets("Kunden"). _
Cells(Target.Row, "R")) = .Range(.Cells(c.Row, "D"), .Cells(c.Row, "F")).Value
End With
End If
End If
End Sub

Anzeige
AW: Per VBA ausfüllen, bei Zellenänderung
29.08.2016 21:45:46
Dominik
Hallo Bastian,
das sieht super aus... und dann nur mal ganz schnell gemacht :-) ich bin begeistert! Dafür hätte ich Wochen gebraucht.
Eine Kleinigkeit bleibt noch:
In deine Prozedur habe ich die Änderungsdokumentation eingebaut und die Möglichkeit, dass es eine Zelle auch mal wieder Leer gemacht werden darf.
Jetzt habe ich das Problem, wenn ich bspw. M2:N6 ausgefüllt habe und nun den Wert in M2 lösche, kommt der LZ-Fehler 91.
Das hängt an SET oder? Wie kann ich das umgehen?
Viele Grüße und Danke
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
Dim c As Range
Dim T As Date 'Variable für Zeit
T = Now 'Belegung mit aktuellem Zeitpunkt
If Target.Column = 13 And ActiveCell.Value = "" Then Exit Sub Else
If Target.Column = 13 Then
With Worksheets("Stammdaten")
Set c = .Range(.Range("A2"), .Range("A2").End(xlDown)).Find(Target.Value, LookIn:=xlValues)
Worksheets("Kunden").Range(Worksheets("Kunden").Cells(Target.Row, "O"), Worksheets("Kunden").  _
_
Cells(Target.Row, "R")) = .Range(.Cells(c.Row, "C"), .Cells(c.Row, "F")).Value
End With
End If
If Target.Column = 14 And ActiveCell.Value = "" Then Exit Sub Else
If Target.Column = 14 Then
If Not Target.Value = Target.Offset(0, -1).Value Then
With Worksheets("Stammdaten")
Set c = .Range(.Range("A2"), .Range("A2").End(xlDown)).Find(Target.Value, LookIn:=xlValues)
Worksheets("Kunden").Range(Worksheets("Kunden").Cells(Target.Row, "P"), Worksheets("Kunden").  _
_
Cells(Target.Row, "R")) = .Range(.Cells(c.Row, "D"), .Cells(c.Row, "F")).Value
End With
End If
End If
Application.ScreenUpdating = True
Select Case Target.Column
Case 1 To 18:
Cells(Target.Row, 19) = "geändert " & T
Case Else:
End Select
End Sub

Anzeige
AW: Per VBA ausfüllen, bei Zellenänderung
30.08.2016 07:08:02
baschti007
Bei mir kommt kein Fehler.
Gruß Basti
AW: Per VBA ausfüllen, bei Zellenänderung
30.08.2016 16:55:19
Dominik
In der Tat. Läuft. Weiß nicht was ich da gemacht habe:-)
Danke nochmals
AW: Per VBA ausfüllen, bei Zellenänderung
31.08.2016 09:14:02
baschti007
Kein Problem ;)

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige