Clever-Excel-Forum

Normale Version: Formel entfernen aber Werte behalten wenn Zelle verändert
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Servus zusammen,

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

 Daniel
Hat dazu wirklich niemand eine brauchbare Idee???
Ich verzweifel an dem Thema langsam aber sicher....

:22:
Grüße
 Daniel
Hi Daniel,

(19.11.2015, 14:43)Daniel.Haering schrieb: [ -> ]Hat dazu wirklich niemand eine brauchbare Idee???
Ich verzweifel an dem Thema langsam aber sicher....

versuche es mal so (ungetestet):
Option Explicit

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 = "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
  End If
 
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

(19.11.2015, 15:38)Rabe schrieb: [ -> ]versuche es mal so (ungetestet):

oder so:
Option Explicit

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
   Dim rngUnion As Range
 
 Set rngUnion = Application.Union(Range("S:S", "T:T", "U:U", "V:V", "W:W"))
 If Not Intersect(rngUnion, Target) Is Nothing Then
      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
   End If
   
End Sub



VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Hat beides nicht funktioniert - so geht es:


Code:
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

End Sub


Vielen Dank für die Hilfe!

Grüße
 Daniel
(19.11.2015, 20: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
Servus,

ich hab jetzt damit noch eine kleines Problem
Wenn ich den Wert verändert habe und das kopieren gelaufen ist springt der Cursor immer in Spalte "C"...

Ich würde aber gerne in der Zelle bleiben die ich gerade verändert habe

Ich glaube dass es so gehen müsste:

Feststellen welche Zelle ich verändert habe
kopieren
die gleiche Zelle auswählen

ich bekomme das aber nicht hin - kann mir da jmd. helfen?

Danke
 Daniel
Hallo Daniel,

wie sieht dein Code aktuell aus?
Hallo Daniel,

im Grunde reicht dann als Letzte Zeile:

Target.Select


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.