• 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.

Macro code doet niet wat ik vraag.

Status
Niet open voor verdere reacties.

remco1987

Gebruiker
Lid geworden
22 jan 2014
Berichten
92
Goedenavond,

ik heb een sheet: Recepten waar ik op nieuw Recept druk hij regel A1 tm I33 overneemt

nu wil ik in de cel na prodcode gebruiken om de waardes in te vullen van sheet PRODUCT.
dus als ik SDW01 in tik krijg ik een recept. en als ik op een nieuw recept (regel B35) in Sheet Recepten SDW02 in tik moet ik de ingrediënten en waardes + eenheid zien.

mijn code die ik gebruik staat hier onder, alleen springt hij om hoog ipv naar beneden.
wat doe ik fout?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
    If Target.Count = 1 Then
        With Sheets("PRODUCT")
            Set prod = .Range("B2:B1000").Find(Target.Value)
        End With
    With Target
    .Offset(-1, 2) = prod.Row
    .Offset(-1, 0) = prod.Offset(-1).Value
    .Offset(-1, -1) = prod.Offset(-1, -1).Value
    .Offset(1, -1).Resize(30, 3) = prod.Offset(1, -1).Resize(30, 3).Value
    End With
End If
End If
End Sub
 

Bijlagen

Laatst bewerkt:
Begin eens met Application.EnableEvents = false bovenaan de code te plaatsen en Application.EnableEvents = true onderaan de code
 
Logisch als je het minteken in...
Code:
.Offset([COLOR=#FF0000][SIZE=4]-[/SIZE][/COLOR]1, 2) = prod.Row
..gebruikt.
 
Plus....het bericht van @Jec.

En een foutafhandling indien set prod niet gevonden wordt.
 
Begin eens met Application.EnableEvents = false bovenaan de code te plaatsen en Application.EnableEvents = true onderaan de code

heb het volgende gedaan, alleen krijg ik nog steeds een fout code bij
Code:
    .Offset(1, 2) = prod.Row
staat in het geel aangegeven

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
    If Target.Count = 1 Then
        With Sheets("PRODUCT")
            Set prod = .Range("B2:B1000").Find(Target.Value)
        End With
    With Target
    .Offset(1, 2) = prod.Row
    .Offset(1, 0) = prod.Offset(-1).Value
    .Offset(1, -1) = prod.Offset(-1, -1).Value
    .Offset(1, -1).Resize(30, 3) = prod.Offset(1, -1).Resize(30, 3).Value
    End With
End If
End If
Application.EnableEvents = True
End Sub
 
Nu werkt hij wel!
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
    If Target.Count = 1 Then
        With Sheets("PRODUCT")
            Set prod = .Range("B2:B1000").Find(Target.Value)
        End With
    With Target
    .Offset(-1, 2) = prod.Row
    .Offset(-1, 0) = prod.Offset(-1).Value
    .Offset(-1, -1) = prod.Offset(-1, -1).Value
    .Offset(1, -1).Resize(30, 3) = prod.Offset(1, -1).Resize(30, 3).Value
    End With
End If
End If
Application.EnableEvents = True
End Sub



nu krijg ik een storing als ik een nieuw recept maak, maar daar ga ik zelf even mee puzzelen voor ik weer om hulp schreeuw

dank jullie wel allen!
 
Begin eens met Application.EnableEvents = false bovenaan de code te plaatsen en Application.EnableEvents = true onderaan de code

nog bedankt voor het mee denken! hierdoor is het gelukt.

Vriendelijke groet
Remco
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan