Fout met klasse range

Status
Niet open voor verdere reacties.

PJurriaans Sr

Gebruiker
Lid geworden
17 sep 2007
Berichten
134
Hallo helpers mag ik nog eens een vraag stellen?Met onderstaande regels haal ik
de laatste regel uit blad1 van Excel en plaats deze in een van de 17 andere bladen
maar het loopt steeds vast op deze regel.Dan krijg ik steeds dit bericht:
Methode delete van klasse Range is mislukt.Wat ik ook doe ik krijg het niet goed:shocked:Kan ieman mij de fout vertellen:rolleyes: Mvg Peter.

HTML:
 Sheets(1).Rows(Sheets(1).UsedRange.Rows.Count).EntireRow.Delete


HTML:
Sub Kiezen()
    ActiveSheet.Unprotect
    Application.ScreenUpdating = False
    Dim i As Integer
For i = 1 To 17
    Sheets(1).Select
    Range("C" & Rows.Count).End(xlUp).Offset(, 0).Select
 If (ActiveCell.Value = i) Then
    Sheets(1).Rows(Sheets(1).UsedRange.Rows.Count).EntireRow.Copy
    Sheets(i).Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlValues
    Sheets(i).Range("A" & Rows.Count).End(xlUp).Offset(2).EntireRow.Insert
    Sheets(1).Rows(Sheets(1).UsedRange.Rows.Count).EntireRow.Delete
    Application.ScreenUpdating = True
    ActiveSheet.Protect
 End If
Next i
End Sub
 
1. kijk je VBA-handboek nog eens goed na
Sheets(1).Rows(Sheets(1).UsedRange.Rows.Count).EntireRow.Delete

of

Rows(5).delete
of
cells(5,1).entirerow.delete

2. weet je het verschil tussen een index
sheets(1)
en een naam
sheets("1")

3 test:
Msgbox sheets(1).name

4 vermijd select en activate in VBA-code (dat is userinterface-code)
Sheets(1).Select is overbodig en verwarrend
ActiveSheet is ook verwarrend want relatief
zet in de code in welk blad je wil werken:
With sheets("overzicht")
End With
bovendien is dan screenupdating =false overbodig en loopt de macro veel sneller.

5. Kopiëren kost meer geheugenruimte dan je lief is.

6. Zet svp de code tussen de juiste 'code-tags' (#)

7. Waarom 1 t/m 17 'hard coderen'

alternatief
Code:
Sub Kiezen()
  With Sheets("overzicht")
    .Unprotect
    For i = 1 To .usedrange.rows.count
        sheets(.cells(i,3)).cells(rows.count,1).end(xlup).offset(1).entirerow= .rows(i).value
    Next
    .usedrange.clearcontents
    .Protect
  End With
End Sub
 
Laatst bewerkt:
snb.Het is geweldig het zal U niet verwonderen dat deze les bestudeerd moet worden
maar ben er van overtuigd dat het mij een stuk wijzer zal maken.Ik weet inderdaad
nog niet veel van VBA maar als ik een procedure lopend krijg is er geen ander gevoel
dat meer bevrediging geeft dat dat.dank voor deze reactie Mvg Peter:thumb:

ps ga het alternatief uit proberen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan