Avatar billede olehen Nybegynder
22. november 2009 - 00:42 Der er 8 kommentarer og
1 løsning

Option Button - summere ark efter valg

Jeg har fem ark der er helt ens. Dataene står i samme områder som de range der er opgivet herunder.

Så vil jeg har et ark hvor jeg summere dataene sammen i alt efter hvilke radio knapper der bliver valgt.

10 radio knapper så der er to radio knapper for hvert ark med valg muligheden Ja eller Nej.

Ja og Nej repræsentere muligheden for at tilføje/fravælge data.

Kan en Ja knap kodes nemmere samt hvordan med beregner den det der er i forvejen i cellerne?

Private Sub ObSWEEYes_Click()
    If Me.OBSWEEYes.Value = True Then
        ConsolidatedCFF.Protect Password:=sPWord, userinterfaceonly:=True
     
           
            Me.Range("H18:AE19").Value = SWEE.Range("H18:AE19").Value
            Me.Range("H21:AE30").Value = SWEE.Range("H21:AE30").Value
            Me.Range("H33:AE34").Value = SWEE.Range("H33:AE34").Value
            Me.Range("H38:AE41").Value = SWEE.Range("H38:AE41").Value
            Me.Range("H44:AE45").Value = SWEE.Range("H44:AE45").Value
            Me.Range("H48:AE49").Value = SWEE.Range("H48:AE49").Value
            Me.Range("H52:AE53").Value = SWEE.Range("H52:AE53").Value
            Me.Range("H57:AE60").Value = SWEE.Range("H57:AE60").Value
            Me.Range("H63:AE66").Value = SWEE.Range("H63:AE66").Value
            Me.Range("H69:AE69").Value = SWEE.Range("H69:AE69").Value

    End If
   
End Sub

Ved nej hvad har jeg forsøget med:

Me.Range("H63:AE66").Value = Me.Range("H63:AE66").Value - SWEE.Range("H63:AE66").Value

Men her opstår et lille problem - tror det er fordi der godt kan være nul i nogle celler og derfor kan den ikke lave beregningen.

Nogen der har en løsning?
Avatar billede tjacob Juniormester
22. november 2009 - 13:38 #1
At er står nul i en celle burde ikke påvirke dine udregninger.

Jeg tror det er Me. der skaber dine problemer. -Fjern alle Me.

Desuden skal dit eksempel med Yes vel være:
Range("H18:AE19").Value = Range("H18:AE19").Value + SWEE.Range("H18:AE19").Value
Avatar billede olehen Nybegynder
22. november 2009 - 14:59 #2
Har forsøgt men virker ikke.. Samt kan ikke køre dit forslag når jeg gør det med range.. Hvis jeg gør det på en enkelt celle virker det fint.

Det må være Range der er problemet.
Avatar billede tjacob Juniormester
22. november 2009 - 15:24 #3
Så bliver du nok nødt til at gøre det for hver enkelt celle i de berørte ranges. Noget i stil med:

    Dim pCell As Range

    For Each pCell In SWEE.Range("H18:AE19").Cells
        Cells(pCell.Row, pCell.Column).Value = Cells(pCell.Row, pCell.Column).Value + pCell.Value
    Next

    For Each pCell In SWEE.Range("H21:AE30").Cells
        Cells(pCell.Row, pCell.Column).Value = Cells(pCell.Row, pCell.Column).Value + pCell.Value
    Next

osv
Avatar billede olehen Nybegynder
22. november 2009 - 16:42 #4
Kan man ikke lægge koden ned i en funktion da det ens for 5 ud af 9 ark jeg køre igennem.

Tænker på om man ikke kan lave SWEE om til X hvor X tilhører ark1 til ark9

I de sidste 4 ark skal tallene først dividere's før de lægges til i oversigten.

Til ark1 skal tallene dividere's med cells(3, "W") som står i oversigten

ark2 dividere's med Cell(4,"W")
Ark3 dividere's med cell(5,"W")
Ark4 dividere's med cell(6,"W")


For Each rng In SWEE.Range("H18:AE19").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
                       
            For Each rng In SWEE.Range("H21:AE30").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
                       
            For Each rng In SWEE.Range("H33:AE34").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
           
            For Each rng In SWEE.Range("H38:AE41").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
                       
            For Each rng In SWEE.Range("H44:AE45").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
           
            For Each rng In SWEE.Range("H48:AE49").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
           
            For Each rng In SWEE.Range("H52:AE53").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
           
            For Each rng In SWEE.Range("H57:AE60").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
           
            For Each rng In SWEE.Range("H63:AE66").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
           
            For Each rng In SWEE.Range("H69:AE69").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
            Next
Avatar billede olehen Nybegynder
22. november 2009 - 17:30 #5
Har fundet ud af hvordan jeg dividere celleværdien inden der adderes med celleværdien i oversigten.

dog synes jeg koden er lidt sløv.. Hvis den kan speed's op vil det være helt perfekt.
Avatar billede tjacob Juniormester
23. november 2009 - 14:06 #6
Jo, det er oplagt at lave en sub der styrer dem alle. Noget i denne retning (Er ikke testet, da jeg ikke har alle dine ark og kontroller. Mht at speede op: Prøv at indsætte Application.ScreenUpdate som her:

Sub OpdaterOversigt(ByVal sArk As String, ByVal bAdd As Boolean)

    Application.ScreenUpdate = False
    Dim rng As Range, divisor As Double
    If bAdd = True Then
        For Each rng In Sheets(sArk).Range("H18:AE19").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
        Next
        For Each rng In Sheets(sArk).Range("H33:AE34").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value + rng.Value
        Next
        OSV OSV
    Else
        For Each rng In Sheets(sArk).Range("H18:AE19").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value - rng.Value
        Next
        For Each rng In Sheets(sArk).Range("H33:AE34").Cells
            Cells(rng.Row, rng.Column).Value = Cells(rng.Row, rng.Column).Value - rng.Value
        Next
        OSV OSV
    End If
    If sArk = "Ark1" Or sArk = "Ark2" Or sArk = "Ark3" Or sArk = "Ark4" Then
        If sArk = "Ark1" Then divisor = Range("W3").Value
        If sArk = "Ark2" Then divisor = Range("W4").Value
        If sArk = "Ark3" Then divisor = Range("W5").Value
        If sArk = "Ark4" Then divisor = Range("W6").Value
        For Each rng In Range("H18:AE19").Cells
            rng.Value = rng.Value / divisor
        Next
        For Each rng In Range("H33:AE34").Cells
            rng.Value = rng.Value / divisor
        Next
        OSV OSV
    End If
    Application.ScreenUpdate = True

End Sub


Nu skal du kalde sub'en med navnet på arket i alle Click-subs:

Private Sub ObSWEEYes_Click()

    Call OpdaterOversigt("SWEE", True)

End Sub

Private Sub ObSWEENo_Click()

    Call OpdaterOversigt("SWEE", False)

End Sub

OSV OSV
Avatar billede olehen Nybegynder
18. august 2010 - 14:01 #7
Ligger du et svar så får du pointene.. Fik løsningen til at virke..
Avatar billede tjacob Juniormester
18. august 2010 - 14:11 #8
OK, godt du fik det til at virke.
Avatar billede olehen Nybegynder
20. august 2010 - 09:02 #9
Ja det virkede helt fint.. Takker mange gange.. :-)
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