• 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 code 91

Status
Niet open voor verdere reacties.

maikeldeckers

Gebruiker
Lid geworden
21 feb 2020
Berichten
6
hallo,

de macro die ik heb geschreven werkt naar behoren. maar zodra ik in de werkomgeving iets bij of afboek geeft hij bij de afboeklijst een foutmelding 91. hij werkt dan wel maar geeft toch deze foutmelding helaas heb ik geen flauw idee hoe dit op te lossen. zie bijlage met het juiste bestand.
 

Bijlagen

  • PB- Voorraadbeheer perfect.xls
    261,5 KB · Weergaven: 20
Dat probleem zie ik hier niet.
Maar doe het eens zo, ook voor de snelheid:
Code:
Sub Afboeken()
    sCalc = Application.Calculation
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    
    For Each cl In Range("C9:C160")
        If cl <> "" Then
            sq2 = cl.Offset(, -1).Value
            With Sheets("Voorraad")
                Set foundcell = .Range("A:A").Find(cl)
                If Not foundcell Is Nothing Then
                    sq1 = .Range(foundcell.Address).Offset(, 3).Value
                    .Range(foundcell.Address).Offset(, 3).Value = sq1 - sq2
                End If
            End With
        End If
    Next cl

    Application.Calculation = sCalc
    Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
super bedankt,

nu loop ik helaas tegen een nieuw probleem aan. dit moet ook gemuteerd worden nou ben ik zo ver dat hij dit doet bij mutaties helaas schrijft hij elke regel op maar dit moet eigenlijk maar 1 keer zijn. dit zodat ik kan zien hoe vaak hij de hele lijst afboekt

zie bijlage
 

Bijlagen

  • PB- Voorraadbeheer perfect 2.0 test.xls
    334,5 KB · Weergaven: 19
Geen idee wat er moet gebeuren, maar het stukje tussen With en End With kan je ook zo schrijven.
Code:
With Sheets("Voorraad")
                Set foundcell = .Columns(1).Find(cl, , , xlWhole)
                If Not foundcell Is Nothing Then
                    sq1 = foundcell.Offset(, 3).Value
                    foundcell.Offset(, 3).Value = sq1 - sq2
                End If
            End With

Of korter:
Code:
Set foundcell = Sheets("Voorraad").Columns(1).Find(cl, , , xlWhole)
                If Not foundcell Is Nothing Then foundcell.Offset(, 3).Value = foundcell.Offset(, 3).Value - sq2
 
Als het maar 1 keer weggeschreven moet worden dan moet je dit gedeelte buiten de lus zetten.
Code:
     Dim data(1 To 5)
    data(1) = Now                                            'tijdstip boeking
    data(2) = [R4].Value                                 'artikelnr
    data(3) = [S4].Value
    data(4) = CDbl([T4].Value) * -1
    Sheets("Mutaties").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, UBound(data)).Value = data

Wat je net zo goed zo kan schrijven.
Code:
Sheets("Mutaties").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 4) = Array(Now, [R4].Value, [S4].Value, -[T4].Value)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan