01. april 2009 - 09:51Der 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
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
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?
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
Synes godt om
Ny brugerNybegynder
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.