Avatar billede skrewkrew Nybegynder
01. april 2009 - 09:51 Der er 8 kommentarer og
1 løsning

Fejl i Makro

Kære alle

Jeg er igang med en Makro, som skal kigge i en celle og se om celleværdien findes iblandt 3000 andre celler. Jeg har lavet nedenstående makro i Excel 2007, men den driller ganske meget. Den giver en fejl i ActiveSheet.Cells(i, b).Value = "Sand" og fejlen er:
Application-defined or object-defined error.

Er der nogle som kan lure min fejl?

---------------------
Sub navne()
Worksheets("Alle").Select
Range("A1").Select
col = ActiveCell.Column
RowCount = Cells(65536, col).End(xlUp).Row
Dim cellValue As String

For i = 1 To RowCount
cellValue = ActiveCell.Value
    If ThisWorkbook.Tjekdubplet(cellValue) = True Then
        ActiveSheet.Cells(i, b).Value = "Sand"
            Else: ActiveSheet.Cells(i, b).Value = "falsk"
    End If
Next

End Sub

--------------------

Function Tjekdubplet(kontrol As String) As Boolean
Worksheets("Kampagne").Select
Range("D1").Select

col = ActiveCell.Column
RowCount = Cells(65536, col).End(xlUp).Row

For i = 1 To RowCount
    If Cells(i, RowCount).Value = kontrol Then
    Tjekduplet = True
          Else
            Tjekduplet = False
    End If
Next

End Function
Avatar billede supertekst Ekspert
01. april 2009 - 10:12 #1
ActiveSheet.Cells(i, b).Value = "Sand"
        Else
            ActiveSheet.Cells(i, b).Value = "falsk"

Heri har "b" ikke fået tilskrevet en værdi
Avatar billede skrewkrew Nybegynder
01. april 2009 - 10:19 #2
Men "b" skal blot være kolonne "B", så den skal ikke have en værdi. :)
Avatar billede supertekst Ekspert
01. april 2009 - 10:26 #3
Prøv at skrive 2 i stedet for B
Avatar billede skrewkrew Nybegynder
01. april 2009 - 10:30 #4
Det giver mig samme fejl :(
Avatar billede supertekst Ekspert
01. april 2009 - 10:41 #5
I Excel 2003 opstår der ikke fejl i begge nedenstående:   

        For i = 1 To RowCount
        cellValue = ActiveCell.Value
        If ThisWorkbook.Tjekdubplet(cellValue) = True Then
            ActiveSheet.Cells(i, 2).Value = "Sand"
        Else
            ActiveSheet.Cells(i, 2).Value = "Falsk"
       
        End If

'Alternativt:       
'            ActiveSheet.Range("B" & CStr(i)).Value = "Sand"
'        Else
'            ActiveSheet.Range("B" & CStr(i)).Value = "falsk"
'        End If
    Next
Avatar billede skrewkrew Nybegynder
01. april 2009 - 11:20 #6
Så er jeg først forvirret for har netop forsøgt mig både i Excel 2003 og 07 og får begge steder samme fejl som tidligere. Også når jeg forsøger den alternative løsning.

Spørgsmålet er derfor om fejlen kan være et andet sted, selvom debuggeren giver fejl i ovennævnte linje?
Avatar billede supertekst Ekspert
01. april 2009 - 11:30 #7
Prøv at sende filen til mig i 2003-udgaven, hvis du er interesseret. (mail under profil)
Avatar billede supertekst Ekspert
01. april 2009 - 14:00 #8
Efter et par småjusteringer - så ok.
Avatar billede skrewkrew Nybegynder
01. april 2009 - 14:06 #9
Og den endelige gode, hvis andre skulle kunne bruge den.

Worksheets("Alle").Select
    Range("A1").Select
    col = ActiveCell.Column
    RowCount = Cells(65536, col).End(xlUp).Row
   
    For i = 1 To RowCount
        cellValue = ActiveCell.Value
        If ThisWorkbook.Tjekdubplet(cellValue) = True Then
            Worksheets("Alle").Range("B" & CStr(i)).Value = "Deltager"
        Else
            Worksheets("Alle").Range("B" & CStr(i)).Value = "falsk"
        End If
    Next i

    Application.ScreenUpdating = True
    MsgBox ("Check afsluttet")
End Sub

Function Tjekdubplet(kontrol As String) As Boolean
    Worksheets("Kampagne").Select
    Range("D1").Select
    col = ActiveCell.Column
    RowCount = Cells(65536, col).End(xlUp).Row

    For i = 1 To RowCount
        If ActiveSheet.Range("D" & CStr(i)).Value = kontrol Then
            Tjekduplet = True
        Else
            Tjekduplet = False
        End If
    Next i
End Function
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