Avatar billede prinsib Seniormester
28. april 2021 - 18:45 Der er 27 kommentarer og
2 løsninger

sum formel

Hej herinde.
Jeg er stødt ind i et problem med en udregning af en sum celle.
Jeg har tre celler A1, B1 og C1. A1 skal være en form for sumcelle.
Hvis jeg skriver et tal ind i B1, skal det summeres med det tal som står i A1. Derefter skal tallet jeg satte ind i B1 forsvinde igen.
Næste gang jeg sætter et tal ind i B1 skal det lægges til det tal som stå i A1. og så videre.
Den samme procedure skal ske med det tal jeg sætter ind i C1, undtagen at tallet skal trækkes fra A1. Tallet i C1 må ikke være større end det som står i A1, så skal den komme med en fejlmelding i C1.
Jeg håber at det kan forstås og at det kan løses.
Ib
Avatar billede ebea Ekspert
28. april 2021 - 19:15 #1
Som du skriver det, kan du ikke gøre det med formler. Hvis du vil lave en sum beregning mellem A1 og B1, og så bagefter fjerne B1, så fjerner du også beregnings kriteriet.
Avatar billede Jan K Ekspert
28. april 2021 - 20:04 #2
#1 Har ikke lige adgang til Excel og er stort set enig med dig i, at det bør løses med vba men kan det ikke gøres ved at acceptere cirlulære referencer, sætte anallet af iterationer til 1 og slå manuel beregning til? Bortset fra det med den automatiske sletning.
Avatar billede ebea Ekspert
28. april 2021 - 20:47 #3
#2 - Hvis jeg læser spørgsmålet rigtigt (fjerne B1), så vil beregnings kriteriet forsvinde. Hvis det blev til en cirkulær reference værdi, kunne man nok leve med det, men det gør det ikke i tilfældet her.
Avatar billede Jan K Ekspert
28. april 2021 - 21:03 #4
#3 Hvis du inA1 har denne formel =A1+B1-C1 8g laver de indstillinger jeg nævnte. Står der Fx 7 i A1 og du skriver 3 i B1 vil A1 blive 10, når du trykke F9.,Så,skal du manuelt slette B1. Når du skriver 5 i B1 8g trykker F9 ændresvA1 til 15. Tilsvarende med C1, bare negativt.
Avatar billede jens48 Ekspert
28. april 2021 - 21:44 #5
Prøv med denne makro.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:C1")) Is Nothing Then
If Target.Column = 2 And Cells(1, 2) <> 0 Then
Cells(1, 1) = Cells(1, 1) + Cells(1, 2)
Cells(1, 2) = 0
End If
If Target.Column = 3 And Cells(1, 3) <> 0 Then
If Cells(1, 1) < Cells(1, 3) Then
MsgBox ("C1 er mindre ned A1")
Else
Cells(1, 1) = Cells(1, 1) - Cells(1, 3)
Cells(1, 3) = 0
End If
End If

End If
End Sub
Avatar billede ebea Ekspert
28. april 2021 - 21:48 #6
#4 - jeg kan nu ikke rigtig "se fidusen". Måske OP kan bruge det. Lad os se hvad han svarer!
Avatar billede prinsib Seniormester
28. april 2021 - 21:49 #7
Tak for jeres svar.
Jens hvordan er det nu jeg indsætter din kode. Er ikke god til det med VBA.
Jan jeg vil også lige prøve dit forslag i morgen.
Ib
Avatar billede jens48 Ekspert
28. april 2021 - 21:53 #8
Du højreklikker på fanebladet, vælger Vis koder og indsætter koden der. Makroen kører automatisk når der skrives i B1 eller C1
Avatar billede prinsib Seniormester
28. april 2021 - 21:58 #9
Hej.
Som jeg skrev Jens jeg er dum til VBA. Hvilken faneblad.
Ib
Avatar billede jens48 Ekspert
28. april 2021 - 23:07 #10
Der hvor du har cellerne A1, B1 og C1. Hvis du ikke har omdøbt det, hedder det Ark1 på dansk eller Sheet1 på engelsk
Avatar billede prinsib Seniormester
01. maj 2021 - 15:58 #11
Hej Herinde.
Jens. din kode virker perfekt, bortset fra at jeg ikke kan gemme arket med VBA.
Kan din kode udvides til også at bruge A2-B2-C2 ,og er det meget vanskeligt.
Jan. Ved ikke din formel virker endnu. Skal lige finde ud af det der manuel beregning.
Hvis nogen ved det, må de meget gerne skrive.
Ib
Avatar billede jens48 Ekspert
02. maj 2021 - 22:04 #12
Hvorfor kan du ikke gemme arket med VBA? Har du valgt "Excel Macro-enabled Workbook" inden du har forsøgt at gemme det?

Jeg har rettet makroen til så A2:C2 er inkluderet.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:C2")) Is Nothing Then
If Target.Column = 2 And Target <> 0 Then
Target.Offset(0, -1) = Target.Offset(0, -1) + Target
Target = 0
End If
If Target.Column = 3 And Target <> 0 Then
If Target.Offset(0, -2) < Target Then
MsgBox ("Tal i kolonne C er mindre end det i kolonne A")
Else
Target.Offset(0, -2) = Target.Offset(0, -2) - Target
Target = 0
End If
End If
End If
End Sub
Avatar billede prinsib Seniormester
05. maj 2021 - 18:01 #13
Hej.
Jens48. nu har jeg fundet ud af at gemme med VBA, og at udvide til andre celler, så jeg siger foreløbig tak for hjælpen. jeg håber at jeg må skrive og bede om mere hjælp hvis det blir nødvendig.
Ib
Avatar billede prinsib Seniormester
23. maj 2021 - 16:18 #14
Hej igen herinde.
Jeg har brugt ovenstående kode lavet af Jens48, men er stødt ind i nogle problemer, som jeg håber I kan hjælpe mig med.
Jeg har brug for at det er B7:D7, B9:D9 og B21:D21 som bruges.
Det drejer sig om mange andre celler, men jeg håber på at hvis I kan hjælpe mig med de her celler, vil jeg prøve om jeg selv at finde ud af resten.
Jeg har også problemer med at låse arket, men dem tager jeg i et andet spørgsmål.
Håber nogen kan hjælpe. På forhånd tak.
Ib
Avatar billede jens48 Ekspert
23. maj 2021 - 23:45 #15
Prøv med:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C7:D7, C9:D9, C21:D21")) Is Nothing Then
If Target.Column = 3 And Target <> 0 Then
Target.Offset(0, -1) = Target.Offset(0, -1) + Target
Target = 0
End If
If Target.Column = 4 And Target <> 0 Then
If Target.Offset(0, -2) < Target Then
MsgBox ("Tal i kolonne D er mindre end det i kolonne B")
Else
Target.Offset(0, -2) = Target.Offset(0, -2) - Target
Target = 0
End If
End If
End If
End Sub
Avatar billede prinsib Seniormester
24. maj 2021 - 00:34 #16
Hej Jens. Tak for hurtig svar. Jeg glæder mig til at prøve i morgen.
Ib
Avatar billede prinsib Seniormester
25. maj 2021 - 16:11 #17
Hej Jens. Det virker jo fantastisk, og jeg har selv fundet ud af at udvide koden til alle de celler jeg skal bruge .Tusind tak for hjælpen.
Ved du tilfældigvis hvordan man låser arket så man kun kan skrive i nogle celler?
Hilsen Ib
Avatar billede jens48 Ekspert
25. maj 2021 - 16:28 #18
Lås hele arket, lås op for de celler der må skrives i og beskyt arket. Arket er først låst, når det er beskyttet
Avatar billede prinsib Seniormester
25. maj 2021 - 18:14 #19
Hej igen jens.
Når jeg gør som du siger og skriver i de celler som er åben stopper min VBA og skriver "Runtime error 1004"  Hvad kan der være galt?
Ib
Avatar billede prinsib Seniormester
25. maj 2021 - 18:18 #20
Den skriver også application-defined or object-defined error.
Ib
Avatar billede jens48 Ekspert
25. maj 2021 - 18:39 #21
VBA kan ikke skrive i låste celler, så enten skal du lade være med at låse dem eller også skal der i makroen indsættes et par ekstra linjer i start og slut a la:

Workbooks("Book1").Unrotect Password:="password"
(...)
Workbooks("Book1").Protect Password:="password"
Avatar billede prinsib Seniormester
25. maj 2021 - 18:59 #22
Hej Det kan jeg ikke forstå.
Arket skal for det mest være låst, og nogle celler som jeg kan skrive i.
Vil du ikke sætte det sidste ind i din VBA så jeg kan se hvordan det skal se ud.
Ib
Avatar billede jens48 Ekspert
27. maj 2021 - 17:34 #23
Det er nok bedre kun at åbne selve arket i stedet for hele projektmappen. Hvad hedder arket?
Avatar billede prinsib Seniormester
27. maj 2021 - 18:02 #24
Hej igen Jens. Jeg bruger både Ark1 Til Ark7.
Ib
Avatar billede prinsib Seniormester
27. maj 2021 - 21:08 #25
Arkene hedder iPhone 6 - iPhone7 - iPhone8 - iPhone11 - iPhone12 - iPhone x - iPhone se.
Ib
Avatar billede jens48 Ekspert
28. maj 2021 - 11:25 #26
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C7:D7, C9:D9, C21:D21")) Is Nothing Then
Worksheets("iPhone6").Unprotect Password:="password"
If Target.Column = 3 And Target <> 0 Then
Target.Offset(0, -1) = Target.Offset(0, -1) + Target
Target = 0
End If
If Target.Column = 4 And Target <> 0 Then
If Target.Offset(0, -2) < Target Then
MsgBox ("Tal i kolonne D er mindre end det i kolonne B")
Else
Target.Offset(0, -2) = Target.Offset(0, -2) - Target
Target = 0
End If
End If
Worksheets("iPhone6").Protect Password:="password"
End If
End Sub

Bemærk at jeg har benævnt arket "iPhone6", selv om du skrev "iPhone 6"
Hele makroen skal sættes ind på hvert ark du ønsker behandlet. Husk at rette arknavn
Avatar billede prinsib Seniormester
28. maj 2021 - 11:44 #27
Super Jens jeg tester senere idag.
Ib
Avatar billede prinsib Seniormester
28. maj 2021 - 23:22 #28
Hej Jens. Har ikke nået at få kigget så meget, og desværre går der nok en uge, før jeg får tid igen, men det ser godt ud, og jeg siger foreløbig tak for hjælpen.
Ib
Avatar billede prinsib Seniormester
18. juni 2021 - 15:50 #29
Hej jens.
Nu er jeg endelig vendt hjem fra ferie, og fået afprøvet din sidste VBA.
Den fungerer jo helt perfekt, og jeg takker dig mange gange.
Hilsen Ib
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

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