• 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 13 tijdens uitvoering

Status
Niet open voor verdere reacties.

Vendeburk

Gebruiker
Lid geworden
21 jan 2014
Berichten
41
Ik krijg een foutmelding als ik deze macro wil uitvoeren.
Waar heb ik een fout gemaakt?

Fout 13 tijdens uitvoering:
Typen komen niet met elkaar overeen.

Code:
Sub Verzending()
With Sheets("Verzending")
    Sheets("Artikelen").Select
    Range("A:A,B:B,C:C,D:D,R:R").Select
    Selection.Copy
    Sheets("Verzending").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

'Groepsomschrijving 2
    Range("F2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(VLOOKUP(RC[-4],Producten!C2:C14,12,FALSE)=""Verzendkosten"",(VLOOKUP(RC[-4],Producten!C2:C14,13,FALSE)),"""")"
    '  Waarden Groepsomschrijving 2
  .Range("F2").AutoFill .Range("F2:F" & .Cells(Rows.Count, 1).End(xlUp).Row)
  .Columns(6) = .Columns(6).Value
' Verzending selecteren
    Range("G2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(VLOOKUP(RC[-5],Producten!C2:C14,12,FALSE)=""Verzendkosten"",1,0)"
 '  Waarden verzending selecteren
  .Range("G2").AutoFill .Range("G2:G" & .Cells(Rows.Count, 1).End(xlUp).Row)
  .Columns(7) = .Columns(7).Value
    
totalrows = ActiveSheet.UsedRange.Rows.Count
For Row = totalrows To 1 Step -1
    If Cells(Row, 7).Value = "0" Then
    Rows(Row).Delete
    End If
Next Row
End With
End Sub

Bij deze zin staat de gele pijl:
Code:
If Cells(Row, 7).Value = "0" Then

Ik wil de rijen verwijderen die in Kolom G een 0 hebben staan
 
Laatst bewerkt:
probeer eens
Code:
If Cells(Row, 7).Value = 0 Then
 
Als de cel in kwestie een foutwaarde bevat zoals #Deel/0! of #NB! dan krijg je deze foutmelding. Dit komt omdat VBA niet snapt hoe deze celwaarde vergeleken moet worden met een tekst. Dit kan je voorkomen door:

Code:
If CStr(Cells(Row, 7).Value) = "0" Then
 
Er stond inderdaad een cel met een foutmelding.
Deze heb ik verwijderd, maar dan stopt de macro bij End if

De code heb ik als volgt:
Code:
Sub Verzending()
With Sheets("Verzending")
    Sheets("Artikelen").Select
    Range("A:A,B:B,C:C,D:D,R:R").Select
    Selection.Copy
    Sheets("Verzending").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

'Groepsomschrijving 2
    Range("F2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(VLOOKUP(RC[-4],Producten!C2:C14,12,FALSE)=""Verzendkosten"",(VLOOKUP(RC[-4],Producten!C2:C14,13,FALSE)),"""")"
    '  Waarden Groepsomschrijving 2
  .Range("F2").AutoFill .Range("F2:F" & .Cells(Rows.Count, 1).End(xlUp).Row)
  .Columns(6) = .Columns(6).Value
' Verzending selecteren
    Range("G2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(VLOOKUP(RC[-5],Producten!C2:C14,12,FALSE)=""Verzendkosten"",1,0)"
 '  Waarden verzending selecteren
  .Range("G2").AutoFill .Range("G2:G" & .Cells(Rows.Count, 1).End(xlUp).Row)
 Columns(7) = .Columns(7).Value
  Range("a2").Select
  
totalrows = ActiveSheet.UsedRange.Rows.Count
For Row = totalrows To 1 Step -1
  If Cells(Row, 7).Value = 0 Then
  Rows(Row).Delete
End If
Next Row
End With
End Sub
 
Zonder het geheel te doorgronden Row is gereserveerd en lijkt mij niet geschikt om als variabele te gebruiken.
 
Wat is de waarde van totalRows? Inderdaad is het niet verstandig om een variabele naam te gebruiken die overeenkomt met een eigenschap. En is het declareren van variabelen altijd aan te raden, evenals de verplichting daartoe, het voorkomt systematische fouten.
 
Toch even geprobeerd om de code te doorgronden.
Breng een beetje structuur aan in de code dat maakt het geheel een stuk leesbaarder en sneller. Select en selection heb je nagenoeg nooit nodig. Het via een lus verwijderen van rijen is een trage methode.

Probeer het zo eens
Code:
Sub VenA()
  Dim lr As Long
  Sheets("Artikelen").Range("A:A,B:B,C:C,D:D,R:R").Copy
  With Sheets("Verzending")
    .Range("A1").PasteSpecial xlPasteValues
    lr = .Cells(Rows.Count, 1).End(xlUp).Row
    .Range("F2:F" & lr).FormulaR1C1 = "=IF(VLOOKUP(RC[-4],Producten!C2:C14,12,FALSE)=""Verzendkosten"",(VLOOKUP(RC[-4],Producten!C2:C14,13,FALSE)),"""")"
    .Range("G2:G" & lr).FormulaR1C1 = "=IF(VLOOKUP(RC[-5],Producten!C2:C14,12,FALSE)=""Verzendkosten"",1,0)"
    .Columns(6).Resize(, 2) = .Columns(6).Resize(, 2).Value
    With .Cells(1).CurrentRegion
      .AutoFilter 7, 0
      .Offset(1).EntireRow.Delete
      .AutoFilter
    End With
  End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan