Avatar billede pernillemb Nybegynder
15. maj 2002 - 12:08 Der er 14 kommentarer og
1 løsning

Summering af celler i VBA

Jeg sidder her med en opgave, hvor jeg skal summe nogle celler i VBA. Det er nemt nok i Excel, da der her er SUM-funktionen, problemet opstår når man skal have VBA til at gøre det. Jeg kan godt få den til at summe nogle celler, men jeg skal præcisere og skrive alle celler den skal summe. Findes der ikke en smartere måde, så man ikke behøver at skrive f.eks. 100 celler?

På forhånd tak.
Pernille
Avatar billede tjacob Juniormester
15. maj 2002 - 12:40 #1
Nu skriver du VBA. Vil det sige at det er en makro i Excel? Eller et regulært VB-program?
Avatar billede tipsen Nybegynder
15. maj 2002 - 12:40 #2
Vil du en gang for alle angive en cellereference og bare summe over den fra vba eller skal brugeren have mulighed for at angive området?
Avatar billede tjacob Juniormester
15. maj 2002 - 12:43 #3
Hvis det er en makro i Excel kan du jo bare optage en makro, mens du laver SUM'en. Så har du koden i makro-editoren.
Avatar billede tipsen Nybegynder
15. maj 2002 - 12:51 #4
Den kode du får med makro-optageren er ikke særlig pæn - hvis det er til et engangs-problem er det sikkert fint, men hvis det er for at lære vba er det ikke anbefalelsesværdigt!
Avatar billede tjacob Juniormester
15. maj 2002 - 12:58 #5
tipsen>> Du har helt ret, men man skal jo starte et sted. Jeg lærte VB ved at starte med Excels Makroeditor ;-)
Avatar billede martin_moth Mester
15. maj 2002 - 12:59 #6
tjacob: Når hun skriver VBA så mener hun nok Visual Basic for Applications - dvs. en macro og ikke VB...

Nå, Pernille, du kan sagtens indsætte en formel i Excel vha VBA.

F.eks.

  Range("A4").Select 
  ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)"

Der summerer A1,A2 og A3 i A4, og når macroen bliver kørt, vil der i celle A4 stå "=SUM(A1:A3)"

Formlen skal forståes på denne måde: R[-3] henviser til rækken 3 rækker over den aktuelle række, C betyder at kolonnen er den samme som den aktuelle celle's kolonne.

Ville du f.eks. i en celle i kolonne A summere tal fra kolonne B, skulle der stå C[+1], hvor [+1] henviser til, at det er kolonnen en gang til højre for den aktuelle kolonne du vil have fat i...

Altså henciser R[x] of C[x] til rækker/kolonner relative til den aktuelle celle. Udelades [x] er rækken/kolonnen den samme...

/Martin
Avatar billede pernillemb Nybegynder
15. maj 2002 - 13:19 #7
Tak for svaret...!!!
Avatar billede tipsen Nybegynder
15. maj 2002 - 13:46 #8
Hvis du har vil lære lidt VBA, kan du se på www.tommyipsen.dk - under Indl. Edb 2001 ligger der forskellige øvelsesopgaver med tilhørende vejledende besvarelser til vba-opgaver på niveau med det du spurgte om.
Avatar billede tjacob Juniormester
15. maj 2002 - 13:46 #9
Jeg synes du er en smule uretfærdig Pernille. Martin gjorde blot det jeg foreslog: optog en makro!

Men OK -han forklarede da også hvordan den fungerer. Han burde måske også have forklaret at du ikke behøver at bruge det R1C1 pjat. Det komplicerer bare tingene når du regner relativt (som regel).
Du kan i stedet bruge: ActiveCell.Formula = "=SUM(A1:A3)"
Så er referencerne absolutte.
Avatar billede tipsen Nybegynder
15. maj 2002 - 13:51 #10
eller bare

Range("A4").Formula = "=SUM(A1:A3)"

...det er bare ikke så fleksibelt... - men det var åbenbart en brugbar løsning alligevel...
Avatar billede pernillemb Nybegynder
15. maj 2002 - 14:14 #11
tjacob: Jeg kunne ikke give dig pointene da du havde oprettet dit indlæg som en kommentar, derfor gik de til Martin. Ked af det, men da jeg højst sandsynligt skal bruge mere hjælp til denne opgave i VBA, så skulle der da være en chance for at du kan "score" nogle flere point...  ;-)
Pernille
Avatar billede tjacob Juniormester
15. maj 2002 - 14:17 #12
Helt OK med mig -Det var heller ikke for pointene
-havde glemt jeg kun havde kommentarer ;-)
Avatar billede martin_moth Mester
15. maj 2002 - 16:19 #13
Til tjacob - læg et svar på http://www.eksperten.dk/spm/211741 ;o) /Martin
Avatar billede vbadummi Nybegynder
02. marts 2003 - 16:45 #14
Hejsa, har lige et spørgsmål. hvordan tæller man et helt range i vba.. f.eks. fra A1:k71, hvis den indeholder tal, tekst og dato???
Avatar billede pernillemb Nybegynder
02. marts 2003 - 22:16 #15
Jeg synes du skal oprette et nyt spørgsmål istedet for at skrive det her...så vil du nok få noget større respons... ;-)
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
Kurser inden for grundlæggende programmering

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