# Excelfråga
Author: Tom

Varje gång jag skriver en ny siffra i cell 1 ska den adderas till summan i cell 2. Summan i cell 2 får inte försvinna bara för att jag raderar cell 1.

Hur ska jag göra?

  Tom

## Comment 1
Author: johan

Det blir nog svårt att göra utan kod. Och lite konstigt i mina ögon.

Förstår jag dig rätt om det är så här:

A1 = 0  
B1 = 0

A1 = 10  
B1 = 10

A1 = 20  
B1 = 30

A1 = 10  
B1 = 40

?

## Comment 2
Author: cgwe

VBA känns som den bästa lösningen. Själva koden är mycket enkel. Lite svårare att koppla koden till lämplig funktion, så det inte blir en massa oönskade uppdateringar av målcellen.

## Comment 3
Author: Kaj

Tom se bifogad Excel fil (döp om till xls - ingen uppackning bara döp om till xls)

Använder ett macro som håller reda på tidigare summa i Blad2.  
Värdet du anger i A1 i Blad1 summeras till A2 i Blad1 baserat på informationen som sparats i Blad2.  
Jag har reserverat 1000 celler för summering i blad2 men du kan enkelt ändra detta om du vill genom att ändra formlen i cell a2 i blad1.  
Om du vill börja om från början kan du bara gå in i blad 2 och rensa alla värden i cellerna a b och c

Jag har skyddat Blad 1 så man inte av misstag skriver över formlen i A2 i Blad1 men det är inget lösenord så det kan du ändr själv om du vill.  
Ifall du vill ha egna namn på Bladen så måste du även ändra i macrot så att blad2 får rätt namn där

## Comment 4
Author: Tom

#1, Precis så Johan.

#3, Tack Kaj! Jättebra! Nu ska jag bara få ihop resten :-) Var hittar jag macrot så att jag kan ändra och göra fler?

  Tom

## Comment 5
Author: johan

#4: verktyg, makro, visual basic editor

## Comment 6
Author: Kaj

Som sagt gå in i verktyg, macro och visual basic editor.

Här är koden som du kan klistra in i nya excelblad via visual basic editorn. Namnet på Blad2 är viktigt att det heter samma som i macrot. Vill du ändra på det ändrar du således till ditt eget namn i macrot (fet stil markerat i koden nedan)

Option Explicit  
Dim StrtValue As String  
Private Sub Worksheet\_Change(ByVal Target As Range)  
With Sheets("**Blad2**")  
    .Range("A65536").End(xlUp).Offset(1).Value = Target.Address  
    .Range("B65536").End(xlUp).Offset(1).Value = StrtValue  
    .Range("C65536").End(xlUp).Offset(1).Value = Target.Value  
End With

End Sub

Private Sub Worksheet\_SelectionChange(ByVal Target As Range)  
If Target.Count > 1 Then Exit Sub  
StrtValue = Target.Value  
End Sub

## Comment 7
Author: Tom

Tack grabbar, perfekt!

  Tom
