Avatar billede spliit Nybegynder
10. marts 2010 - 20:53 Der er 6 kommentarer

Hvorfor virker følgende vbakode ikke

Hej
Er der nogen der kan gennemskue hvorfor følgende kode ikke virker.


Public Sub Create_graf()

Dim R As Long, Data As Variant, I As Long, X As Integer, Data2 As Variant
   
   
    Sheet17.Columns("A:B").ClearContents    ' tømmer kolonne A og B i det ark du står på
    Data = Sheet2.Range("B13").CurrentRegion 'læses ind i variablen Ddata
   
    R = 1
    For I = 1 To UBound(Data)

        If Data(I, 2) >= [D9] And Data(I, 2) <= [F9] Then 'Data(I, 1)
            For X = 1 To UBound(Data, 2) ' skriver i det aktive ark
                Cells(I, 1) = Data(I, 2)
                Cells(I, 2) = Ark1.Cells(I, 5)
               
            Next
           
            R = R + 1
     
           
        End If
    Next
End Sub



Jeg har et ark hvor der er en lang liste nedaf med datoer. Starter i celle B13. I et andet ark har jeg celle "D9" hvor man skriver start dat og celle "F9" hvor man skriver slutdato. I kolonne A og B vil jeg så have samme ark til at skrive den periode man vælger. Min makro stopper ved følgende linje når jeg kører den "If Data(I, 2) >= [D9] And Data(I, 2) <= [F9]"

Håber virkelig nogen har en ide om hvad fejlen kan være, for har virkelig brugt mange timer på at forsøge at løse det...

På forhånd tak
Avatar billede kabbak Professor
10. marts 2010 - 21:23 #1
hvis [D9] og [F9]  ikke er i det ark du står på, så skal du have arknavnet med

[ark1].[D9]
[ark1].[F9]
Avatar billede kabbak Professor
10. marts 2010 - 21:28 #2
Public Sub Create_graf()

Dim R As Long, Data As Variant, I As Long, X As Integer, Data2 As Variant
 
 
    Sheet17.Columns("A:B").ClearContents    ' tømmer kolonne A og B i det ark du står på
    Data = Sheet2.Range("B13").CurrentRegion 'læses ind i variablen Ddata
 
    R = 1
    For I = 1 To UBound(Data)

        If Data(I, 2) >= [Ark1].[D9] And Data(I, 2) <= [Ark1].[F9] Then 'Data(I, 1)
            For X = 1 To UBound(Data, 2) ' skriver i det aktive ark
                  Sheet17.Cells(I, 1) = Data(I, 2)
                  Sheet17.Cells(I, 2) = Ark1.Cells(I, 5)
             
            Next
         
            R = R + 1
   
         
        End If
    Next
End Sub
Avatar billede kabbak Professor
10. marts 2010 - 21:31 #3
Sheet17.Cells(I, 1) = Data(I, 2)
Sheet17.Cells(I, 2) = Ark1.Cells(I, 5)

skal være

                  Sheet17.Cells(R, 1) = Data(I, 2)
                  Sheet17.Cells(R, 2) = Ark1.Cells(I, 5)
Avatar billede kabbak Professor
10. marts 2010 - 21:43 #4
denne er nu gennemtestet:


Public Sub Create_graf()

    Dim R As Long, Data As Variant, I As Long, X As Integer, Data2 As Variant


    Sheets("Sheet17").[A:B].ClearContents    ' tømmer kolonne A og B i det ark du står på
    Data = Sheets("Sheet2").Range("B13").CurrentRegion    'læses ind i variablen Data

    R = 1
    For I = 1 To UBound(Data)

        If Data(I, 2) >= [Ark1].[D9] And Data(I, 2) <= [Ark1].[F9] Then    'Data(I, 1)
            For X = 1 To UBound(Data, 2)    ' skriver i det aktive ark
                Sheets("Sheet17").Cells(R, 1) = Data(I, 2)
                Sheets("Sheet17").Cells(R, 2) = Data(I, 5)

            Next
            R = R + 1
        End If
    Next
End Sub
Avatar billede spliit Nybegynder
10. marts 2010 - 22:25 #5
Nej det var desværre ikke kun det.
Den siger stadig efter linje
If Data(I, 2) >= [Sheet2].[D9] And Data(I, 2) <= [Sheet2].[F9]

"Run time error"
Substript out of range

er der andre mugligheder hvorfor det sker...?
Du har ret i at det fungerer når man laver det i et helt nyt excel dokument.. Men hvis jeg benytter makro i det excel ark hvor alt dataen ligger kan jeg ikke få det til at fungere...
Avatar billede kabbak Professor
11. marts 2010 - 09:31 #6
Du skal huske på, at hvis du vil starte i række 13, så skal du ikke have data i række 12, hvis du har det, kommer de også med i variablen.
CurrentRegion er et samlet område, der er adskilt af tomme celler.
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