Avatar billede allanknudsen Nybegynder
04. februar 2009 - 22:24 Der er 4 kommentarer og
1 løsning

VBA i excel. Hjælp med at finde fejl.

Jeg har
indtastsninsark, hvor jeg indtaster data, som lagrer sig i forskellige ark og kolonner.

Jeg har tidligere fået hjælp her i eksperten til at makro i VBA og det fungerer fint.
Nu har jeg udbygget mit indtastningsark, hvor jeg i
celle g4 indtaster data relateret til værdien i celle c1.
Indtastningen i celle g4 skal lagres i "Antal solgt pladser" kolonne 16.
Men dette sker ikke.
Ud over ovennævnte indeholder makroen også andre indtastninger, som skal overføres og disse virker ok.

Er der nogen som kan hjælpe mig, og finde fejlen i makroen, så bliver jeg glad. Jeg er helt nybegynder med makroer.
vh.
Allan

Her er min makro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c7:c19")) Is Nothing Then
    Fstnr = ActiveSheet.Range("c1").Value
    For Each c In Sheets("Prisgrupper").Range("a3:a47").Cells
        If c.Value = Fstnr Then
            Select Case Target.Address
                Case Is = "$C$7"
                    c.Offset(0, 2).Value = Target.Value
                Case Is = "$C$8"
                    c.Offset(0, 3).Value = Target.Value
                Case Is = "$C$9"
                    c.Offset(0, 4).Value = Target.Value
                Case Is = "$C$10"
                    c.Offset(0, 5).Value = Target.Value
                Case Is = "$C$11"
                    c.Offset(0, 6).Value = Target.Value
                Case Is = "$C$12"
                    c.Offset(0, 7).Value = Target.Value
                Case Is = "$C$13"
                    c.Offset(0, 8).Value = Target.Value
                Case Is = "$C$14"
                    c.Offset(0, 9).Value = Target.Value
                Case Is = "$C$15"
                    c.Offset(0, 10).Value = Target.Value
                Case Is = "$C$16"
                    c.Offset(0, 11).Value = Target.Value
                Case Is = "$C$17"
                    c.Offset(0, 12).Value = Target.Value
                Case Is = "$C$18"
                    c.Offset(0, 13).Value = Target.Value
                Case Is = "$C$19"
                    c.Offset(0, 14).Value = Target.Value
        End Select
        End If
    Next
End If
If Not Intersect(Target, Range("d7:d19")) Is Nothing Then
    Fstnr = ActiveSheet.Range("c1").Value
    For Each c In Sheets("Antal solgte pladser").Range("a3:a47").Cells
        If c.Value = Fstnr Then
            Select Case Target.Address
                Case Is = "$D$7"
                    c.Offset(0, 2).Value = Target.Value
                Case Is = "$D$8"
                    c.Offset(0, 3).Value = Target.Value
                Case Is = "$D$9"
                    c.Offset(0, 4).Value = Target.Value
                Case Is = "$D$10"
                    c.Offset(0, 5).Value = Target.Value
                Case Is = "$D$11"
                    c.Offset(0, 6).Value = Target.Value
                Case Is = "$D$12"
                    c.Offset(0, 7).Value = Target.Value
                Case Is = "$D$13"
                    c.Offset(0, 8).Value = Target.Value
                Case Is = "$D$14"
                    c.Offset(0, 9).Value = Target.Value
                Case Is = "$D$15"
                    c.Offset(0, 10).Value = Target.Value
                Case Is = "$D$16"
                    c.Offset(0, 11).Value = Target.Value
                Case Is = "$D$17"
                    c.Offset(0, 12).Value = Target.Value
                Case Is = "$D$18"
                    c.Offset(0, 13).Value = Target.Value
                Case Is = "$D$19"
                    c.Offset(0, 14).Value = Target.Value
            End Select
        End If
    Next
End If
If Not Intersect(Target, Range("g4")) Is Nothing Then
    Fstnr = ActiveSheet.Range("c1").Value
    For Each c In Sheets("Antal solgte pladser").Range("a3:a47").Cells
        If c.Value = Fstnr Then
            Select Case Target.Address
                Case Is = "$g$4"
                    c.Offset(0, 16).Value = Target.Value
            End Select
        End If
    Next
End If
If Not Intersect(Target, Range("c20:c22")) Is Nothing Then
    Fstnr = ActiveSheet.Range("c1").Value
    For Each c In Sheets("Regnskab").Range("a2:a46").Cells
        If c.Value = Fstnr Then
            Select Case Target.Address
                Case Is = "$C$20"
                    c.Offset(0, 3).Value = Target.Value
                Case Is = "$C$21"
                    c.Offset(0, 4).Value = Target.Value
                Case Is = "$C$22"
                    c.Offset(0, 5).Value = Target.Value
            End Select
        End If
    Next
End If
End Sub
Avatar billede kabbak Professor
04. februar 2009 - 23:09 #1
jeg har kortet din kode lidt ned, den med G4, virker fint


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim RW As Integer, Fstnr As Long, C As Range
   
    Fstnr = ActiveSheet.Range("c1").Value    ' denne behøves kun en gang
    RW = Target.Row - 5    ' finder kolonnen der skal skrives i

    If Not Intersect(Target, Range("c7:c19")) Is Nothing Then
        For Each C In Sheets("Prisgrupper").Range("a3:a47").Cells
            If C.Value = Fstnr Then
                C.Offset(0, RW).Value = Target.Value
            End If
        Next
    End If

    If Not Intersect(Target, Range("d7:d19")) Is Nothing Then
        For Each C In Sheets("Antal solgte pladser").Range("a3:a47").Cells
            If C.Value = Fstnr Then
                C.Offset(0, RW).Value = Target.Value
            End If
        Next
    End If

    If Not Intersect(Target, Range("g4")) Is Nothing Then
        For Each C In Sheets("Antal solgte pladser").Range("a3:a47").Cells
            If C.Value = Fstnr Then
                    C.Offset(0, 15).Value = Target.Value ' da du siger kolonne 16 og C er i kolonne 1 så er offset15 = kolonne 16
            End If
        Next
    End If

    If Not Intersect(Target, Range("c20:c22")) Is Nothing Then
        For Each C In Sheets("Regnskab").Range("a2:a46").Cells
            If C.Value = Fstnr Then
                Select Case Target.Address
                Case Is = "$C$20"
                    C.Offset(0, 3).Value = Target.Value
                Case Is = "$C$21"
                    C.Offset(0, 4).Value = Target.Value
                Case Is = "$C$22"
                    C.Offset(0, 5).Value = Target.Value
                End Select
            End If
        Next
    End If
End Sub
Avatar billede allanknudsen Nybegynder
05. februar 2009 - 18:59 #2
Tak for et godt og hurtigt svar.
Systemet virker.
Jeg overfører point (hvis jeg kan finde ud af, hvordan man gør).
vh.
Allan
Avatar billede allanknudsen Nybegynder
05. februar 2009 - 19:13 #3
tildeling af point. Jeg forsøger igen.
Der mangler en vejledning på ekspertens side.
Avatar billede allanknudsen Nybegynder
05. februar 2009 - 19:18 #4
Tildeling af point - hvor er det svært??
Jeg prøver med et svar og samtidig markeret "kabbak".
Avatar billede kabbak Professor
05. februar 2009 - 21:22 #5
Jeg skal lige svare først ;-))
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