2017-12-20 4 views
-1

Ich habe den folgenden Code unten, der in irgendeiner Weise funktioniert. Der Punkt ist, dass, wenn ein Wert in Spalte F5 dh 10 eingefügt wird, der Wert kopiert und in Spalte W5 eingefügt wird, also W5 ist 10.Kopieren-Einfügen Bereichswerte in eine andere Spalte

Mein Problem ist, dass, wenn ich den Wert in W5 von 10 auf 8 ändern, Der Code gibt 10 nicht mehr zurück, obwohl ich in meinem Code festlege, dass W5 nur den Wert von F5 annehmen muss.

Der Hauptpunkt ist, dass ich verhindern möchte, dass die Benutzer die Werte in Spalte W5: W100 ändern, da diese Werte nur die Werte aus Spalte F5 sein müssen: F100.

Jede Hilfe würde wirklich geschätzt werden!

Dim cellbc As Range 
     Application.EnableEvents = False 
      For Each cellbc In Target 
      If Application.Intersect(cellbc, Range("f5:f100")).Copy Then 
       Application.Intersect(cellbc, Range("W5:W100")).Paste 
      End If 
     Next cellbc 
     Application.EnableEvents = True 

Antwort

0

Ich bin nicht sicher genau, was Sie fragen.

Wenn Sie möchten, dass F5 mit W5 identisch ist, können Sie einfach die Formel F5 = W5 in Excel verwenden - keine Notwendigkeit für VBA.

Wenn Sie es geschützt benötigen, können Sie Arbeitsblattschutz verwenden.

Wenn Sie die gesamte Spalte über

Thisworkbook.Sheets("SheetNameHere").Range("F5:F100").Value2 = Thisworkbook.Sheets("SheetNameHere").Range("W5:W100").Value2 
+0

ja, das war was ich vorher gemacht habe. Ich habe nur in Excel F5 = W5 verwendet. Das Problem war, dass die Leute verschiedene Werte in Spalte W5 eingefügt haben, fortan hat sie den Wert von F5 nicht mehr aufgenommen. Deshalb habe ich versucht, einen VBA-Code zu erstellen. Obwohl sie einen Wert in Zelle W5 einfügen, wird der Code zurückgewiesen, und es würde immer noch den Wert von F5 übernehmen. – alexc

+0

Wenn Sie Leute brauchen, um Dinge nicht zu ändern, würde ich empfehlen, das Arbeitsblatt zu schützen. Sie können auch festlegen, dass nur ein Teil des Arbeitsblatts vor Änderungen geschützt wird, während die Benutzer bei Bedarf den Rest des Arbeitsblatts bearbeiten können. – Selkie

0

Ihren Code kopieren und prüfen, ob die geänderte Zelle im Bereich F5 war zu sehen: F100.

Wenn Sie die Zelle W5 ändern, gibt die Application.Intersect-Funktion false zurück, und der Kopier-/Einfügevorgang wird nicht abgeschlossen.

Wenn Sie sicherstellen müssen, dass jede Änderung in den Zellen W5: W100 sofort durch den Wert in F5: F100 überschrieben wird, müssen Sie prüfen, ob Quell- oder Zielbereich geändert wurde; und dann würde ich vorschlagen, einfach den gesamten Bereich (F5: F100) zu kopieren.

Verwandte Themen