ich hab das auch ein bisschen im Code der angehängten Datei reingeschrieben - also hier die Zusammenfassung:
Ich ziehe in einer Tabelle über Matrixformeln die WErte aus einem andere Tabellenblatt - funzt wunderbar. (Das sind Infos zu einem Versuch die ich zu faul bin zum abtippen) Wenn ich aber mit der Bearbeitung von einem Versuch beginne (also etwas in die Checkliste eintrage, in dem Fall in Spalte S-AG) sollen die Werte übernommen werden, die Formeln aber verwschwinden (WErte einfügen), ich will verhindern dass die eingetragenen Werte verschwinden wenn ich in der Datentabelle aus der ich die Info hatte den entsprechenden Versuch lösche (ja, das kann passieren....)
Also das vorgehen soll so sein:
Erkennen dass in Spalte S, T, U, V oder W ein Wert verändert wurde --> Feststellen in welcher Zeile das passiert ist und den Wert an einen Parameter ('Zeile') übergeben
Dann Spalten C bis Q von der Zeile auswählen und die Werte die dort stehen direkt als Werte einfügen
Ich hoff mal es ist verständlich, ich danke schon jetzt für eure Hilfe
(19.11.2015, 15:43)Daniel.Haering schrieb: Hat dazu wirklich niemand eine brauchbare Idee??? Ich verzweifel an dem Thema langsam aber sicher....
versuche es mal so (ungetestet):
OptionExplicit
PrivateSub Worksheet_SelectionChange(ByVal Target As Range) ThisWorkbook.Names.Add "AktiveZelle", Target(1) EndSub
PrivateSub Worksheet_Change(ByVal Target As Range)
Dim Zeile AsLong
If Target.Column = "S"Or Target.Column = "T"Or Target.Column = "U"Or Target.Column = "V"Or Target.Column = "W"Then'die Spalten mag ich überwachen Zeile = Target.Row 'da versuche ich die Zeile zu bestimmen in der die Zelle (in Spalte S, T, U, V oder W) geändert wurde
'Sinn der Sache wäre die Formeln rauszubringen, sobald eine Wert in S-W geändert wurde. 'Dazu war der Plan, den Bereich C bis Q von der entsprechenden Zeile auszuwählen und direkt in dem Bereich die Werte einzufügen Range("C" & Zeile & ":Q" & Zeile).Copy Range("C" & Zeile).PasteSpecial Paste:=xlPasteValues EndIf
(19.11.2015, 16:38)Rabe schrieb: versuche es mal so (ungetestet):
oder so:
OptionExplicitPrivateSub Worksheet_SelectionChange(ByVal Target As Range)
ThisWorkbook.Names.Add "AktiveZelle", Target(1)
EndSubPrivateSub Worksheet_Change(ByVal Target As Range)
Dim Zeile AsLongDim rngUnion As Range
Set rngUnion = Application.Union(Range("S:S", "T:T", "U:U", "V:V", "W:W"))
IfNot Intersect(rngUnion, Target) IsNothingThen
Zeile = Target.Row 'da versuche ich die Zeile zu bestimmen in der die Zelle (in Spalte S, T, U, V oder W) geändert wurde 'Sinn der Sache wäre die Formeln rauszubringen, sobald eine Wert in S-W geändert wurde. 'Dazu war der Plan, den Bereich C bis Q von der entsprechenden Zeile auszuwählen und direkt in dem Bereich die Werte einzufügen
Range("C" & Zeile & ":Q" & Zeile).Copy
Range("C" & Zeile).PasteSpecial Paste:=xlPasteValues
EndIfEndSub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ThisWorkbook.Names.Add "AktiveZelle", Target(1) End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long
If Target.Column = 19 Or Target.Column = 20 Or Target.Column = 21 Or Target.Column = 22 Or Target.Column = 21 Then 'die Spalten mag ich überwachen Zeile = Target.Row 'da versuche ich die Zeile zu bestimmen in der die Zelle (in Spalte S, T, U, V oder W) geändert wurde
'Sinn der Sache wäre die Formeln rauszubringen, sobald eine Wert in S-W geändert wurde. 'Dazu war der Plan, den Bereich C bis Q von der entsprechenden Zeile auszuwählen und direkt in dem Bereich die Werte einzufügen Range("C" & Zeile & ":Q" & Zeile).Select Selection.Copy Range("C" & Zeile).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If
(19.11.2015, 21:16)Daniel.Haering schrieb: Hat beides nicht funktioniert - so geht es:
so müßte es auch gehen:
Code:
'Sinn der Sache wäre die Formeln rauszubringen, sobald eine Wert in S-W geändert wurde. 'Dazu war der Plan, den Bereich C bis Q von der entsprechenden Zeile auszuwählen und direkt in dem Bereich die Werte einzufügen Range("C" & Zeile & ":Q" & Zeile).Copy Range("C" & Zeile).PasteSpecial Paste:=xlPasteValues End If End Sub
Falls Du Deinen zuletzt eingestellten Code nutzt und auch das SelectionChange Ereignis so verwendest, wie Du zeigst, dann solltest Du auf Stefan Rat eingehen und am besten den gesamten genutzten Code zeigen.