Avatar billede skwizie Nybegynder
09. december 2003 - 19:45 Der er 10 kommentarer og
1 løsning

Lægge til værdi i celle

Jeg har et budget delt op i emner. Jeg skriver så ind hver gang jeg har brugt et beløb der svarer til emnet. I cellen står der allerede en værdi fra tidligere, da jeg kører det pr. mnd. Jeg vil så gerne have excel til at gøre sådan at den tager den værdi jeg indtaster i cellen og lægger den til den gamle værdi der stod der i forvejen, og så skrive resultatet i samme celle. Hvordan gør man det?
09. december 2003 - 19:47 #1
en makro er svaret........ jeg har lavet det før..... kigger lige i arkivet
Avatar billede skwizie Nybegynder
09. december 2003 - 19:48 #2
ok
Avatar billede skwizie Nybegynder
09. december 2003 - 19:48 #3
venter spændt, men en makro skal man selv køre ikke..? Det skal jo være sådan at jeg bare skal plotte tallet ind i cellen uden at skulle lave andet først.
09. december 2003 - 19:50 #4
Højreklik på arkets faneblad og vælg vis kode....
Indsæt følgende kode:

Private mdValue As Double
Private mdValueTemp As Double

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCalcCells As Range
    Set rCalcCells = Range("A2:A50")

    If Not Intersect(Target, rCalcCells) Is Nothing Then
        mdValueTemp = mdValue
        mdValue = 0
        Target.Value = Target.Value + mdValueTemp
    End If

    Set rCalcCells = Nothing
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rCalcCells As Range
    Set rCalcCells = Range("A2:A50")

    If Not Intersect(Target, rCalcCells) Is Nothing Then
        mdValue = Target.Value
    End If

    Set rCalcCells = Nothing
End Sub


Ret de to steder hvor der står "A2:A50" til det område, hvor du gerne vil have at funktionen skal virke.
09. december 2003 - 19:51 #5
Makro'en kører af sig selv........ den reagerer på at du skriver noget i det område, som er repræsenteret af "A2:A50"
Avatar billede skwizie Nybegynder
09. december 2003 - 19:54 #6
Det virker godt nok, men når jeg markere dete hele laver den en error 13! ved du hvad det er eller?
09. december 2003 - 19:59 #7
Ja, den laver fejl, hvis du markerer flere celler i området på en gang....

Du kan tilføje, så koden ser således ud.....



Private mdValue As Double
Private mdValueTemp As Double

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCalcCells As Range
    Set rCalcCells = Range("A2:A50")

    On Error Resume Next
    If Not Intersect(Target, rCalcCells) Is Nothing Then
        mdValueTemp = mdValue
        mdValue = 0
        Target.Value = Target.Value + mdValueTemp
    End If
    On Error GoTo 0

    Set rCalcCells = Nothing
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rCalcCells As Range
    Set rCalcCells = Range("A2:A50")

    On Error Resume Next
    If Not Intersect(Target, rCalcCells) Is Nothing Then
        mdValue = Target.Value
    End If
    On Error GoTo 0

    Set rCalcCells = Nothing
End Sub


MEN MEN MEN........ hvis du så markerer flere celler og skriver den af dem der er aktiv........ så overskriver du det eksisterende tal med det nye......

Det har jeg endnu ikke en løsnning på..... men måske kommer den...!
Avatar billede skwizie Nybegynder
09. december 2003 - 20:00 #8
jeg bruger bare den "gamle" kode tror jeg
09. december 2003 - 20:14 #9
Her er den nye kode, og den spiller :-)


Private mdValue As Double
Private mdValueTemp As Double
Private msCellAdr As String

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCalcCells As Range
    Set rCalcCells = Range("A2:A50")
    Application.EnableEvents = False
   
    If Not Intersect(Target, rCalcCells) Is Nothing Then
        mdValueTemp = mdValue
        mdValue = 0
        If Selection.Rows.Count = 1 Then
            Target.Value = Target.Value + mdValueTemp
        Else
            Range(msCellAdr).Value = Range(msCellAdr).Value + mdValueTemp
            mdValue = ActiveCell.Value
            msCellAdr = ActiveCell.Address
        End If
    End If
   
    Application.EnableEvents = True
    Set rCalcCells = Nothing
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rCalcCells As Range
    Set rCalcCells = Range("A2:A50")

    If Not Intersect(Target, rCalcCells) Is Nothing Then
        If Selection.Rows.Count = 1 Then
            mdValue = Target.Value
        Else
            mdValue = ActiveCell.Value
            msCellAdr = ActiveCell.Address
        End If
    End If

    Set rCalcCells = Nothing
End Sub
Avatar billede skwizie Nybegynder
09. december 2003 - 20:24 #10
Ja nu virker det! :D tak for det
09. december 2003 - 20:29 #11
;-) nogle gange betaler lidt stædighed sig ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester