• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

fout in vba code fout 1004

Status
Niet open voor verdere reacties.

Marky76

Gebruiker
Lid geworden
26 okt 2002
Berichten
424
Beste,
Ik krijg steeds volgende foutmelding
"fout 1004 tijdens uitvoering"
"door toepassing of object gedefinieerde fout"

Code:
Sub dubbels()

Dim r As Range
Dim n As Integer
Dim myRange As Range

myRange = Range("A:A")
Set r = Range("myRange")

For n = 1 To r.Rows.Count
    If r.Cells(n, 1) = r.Cells(n + 1, 1) Then
        MsgBox "Duplicate data in " & r.Cells(n + 1, 1).Address
    End If
Next n

End Sub

Begrijp niet wat hier niet juist aan is.

Groeten,
Mark
 
Deze schijnt het wel te doen:

Code:
Sub dubbels()
r = Range("a65000").End(xlUp).Row
For n = 1 To r
    If Cells(n, 1) = Cells(n + 1, 1) Then
        MsgBox "Duplicate data in " & Cells(n + 1, 1).Address
    End If
Next n
End Sub.

Cobbe
 
Dit is wat jij bedoelde:

Code:
Sub dubbels()

Dim r As Range
Dim n As Long 'integer
Dim myRange As String 'Range

myRange = "A:A"
Set r = Range(myRange) '"myRange"

For n = 1 To r.Rows.Count
    If r.Cells(n, 1) = r.Cells(n + 1, 1) Then
        MsgBox "Duplicate data in " & r.Cells(n + 1, 1).Address
    End If
Next n

End Sub

Bekijk maar eens de verschillen.

Alleen is de hele kolom A natuurlijk veel te lang. Je krijgt veel te veel MsgBoxes, aangezien 2 lege cellen aan elkaar gelijk zijn. Zoals Cobbe dus al aangaf, beperk de lus. Je zou eigenlijk de lege cellen nog moeten uitsluiten indien die er zijn bij jou, anders krijg je daar ook telkens een Msgbox voor.

Wigi
 
De reden dat je die foutmelding krijgt ligt volgens mij aan het volgende.

In je range zet je de hele kolom A, dus alle rijen van kolom A.

Vervolgens doe je een rows.count in die range. Maw je krijgt het maxium aantal rijen van Excel (verschillend bij Excel 2007 en alle Excel versies vanaf 2003)

Dan doorloop je al deze rijen en check je of die waarde gelijk is aan die van de volgende cel (=rij+1). Maar bij de laatste cel (=max rijen) kan Excel niet 1 rij verder kijken (deze bestaat immers niet) en dat geeft de foutmelding.
 
Dan doorloop je al deze rijen en check je of die waarde gelijk is aan die van de volgende cel (=rij+1). Maar bij de laatste cel (=max rijen) kan Excel niet 1 rij verder kijken (deze bestaat immers niet) en dat geeft de foutmelding.

Klopt, maar dat is niet het enige.

Code:
Dim n As Integer

Integers hebben een maximale waarden van 32767. En het aantal rijen in Excel is duidelijk groter dan dat.

Daarom heb ik er in mijn code ook een Long van gemaakt.

Wigi
 
Code:
Dim n As Integer

Integers hebben een maximale waarden van 32767. En het aantal rijen in Excel is duidelijk groter dan dat.

Daarom heb ik er in mijn code ook een Long van gemaakt.

Wigi

Die fout had ik ook opgemerkt, maar ben het om een of andere reden vergeten te vermelden? Zou het vroegtijdige dementie zijn, een vlaag van zinsverbijstering of houden we het gewoon op iets te snel willen antwoorden en dan essentiêle zaken vergeten?
 
Zou het vroegtijdige dementie zijn, een vlaag van zinsverbijstering of houden we het gewoon op iets te snel willen antwoorden en dan essentiêle zaken vergeten?

Doe het laatste maar ;)
 
Bedankt voor de antwoorden deze waren duidelijk, nu begrijp ik de oorzaak van het probleem. :thumb:

Groeten, Mark
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan