Zoeken in hetzelfde werkblad en gegeven kopiëren (vba)

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
901
Beste forumleden,

Ik heb een excelbestand waar ik, in de actieve regel, automatisch wil zoeken op omschrijving (kolom D) en de gevonden uitkomst (kolom L), vanuit hetzelfde werkblad, wil kopiëren in de actieve regel in kolom AD. Vervolgens is het de bedoeling wanneer het systeem niets gevonden heeft dit gegeven handmatig gevuld kan worden.

In het voorbeeld bestand heb ik een opzetje gemaakt maar deze geeft direct een fout omdat deze kolom 4 (D) niet herkent.

Uitleg:
In kolom D in regel 13 is een auto (Auto A) aangekocht voor €500. Dezelfde auto (met exact dezelfde omschrijving) is verkocht voor € 1.000, deze mutatie staat in regel 14.
Nu wil ik het inkoopbedrag van €500 vanuit regel 13 kopiëren naar kolom AD van regel 14 (de actieve regel) waar de verkoop van de auto staat. Het is de bedoeling dat dit automatisch gaat op moment dat ik in kolom K het verkoopbedrag heb ingebracht en dat de omschrijving identiek is.

Alvast heel hartelijk dank.

Robert
 

Bijlagen

  • Zoeken op inkoopprijs.xlsm
    383,8 KB · Weergaven: 21
Maar eens rustig kijken welke waarde target krijgt en waar je op wil zoeken? De . voor columns(4) hoort er ook niet.
 
Inderdaad de punt hoort er niet en heb ik (Target.Offset(, 4).Resize(, 1).Value gewijzigd in: Range("AD" & Target.Row).Value). Alleen vindt het systeem nu niet de omschrijving. Het probleem zit in het feit dat ik de code aanroep wanneer ik in kolom 11 (K) sta en de code ervan uit gaat dat ik deze aanroep vanuit kolom 4 (D). Nu heb ik geprobeerd om dit te wijzigen zodat deze vanuit kolom 11 (K) de code aanroept, echter gaat hier iets niet goed waardoor het systeem kolom 4 niet zoekt. Wat doe ik fout...
 
je roept de code aan ongeacht in welke cel je staat. Waarom zet je de gegevens per auto niet op 1 rij. Gaat je straks alleen maar voordelen opleveren.

Maak gebruik van de debugmogelijkheden in de VB-Editor
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim r As Range
  If Target.Column = 11 Then
    Set r = Columns(4).Find(Target.Offset(, -7).Value, , xlValues, xlWhole)
  End If
End Sub
 
Bedankt voor jouw antwoord, ik kom nu in de buurt.

Ik heb de code aangepast naar:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
ActiveSheet.Unprotect
If Target.Column = 11 Then
    Dim r As Range
    Set r = Columns(4).Find(Target.Offset(, -7).Value, , xlValues, xlWhole)
    If Not r Is Nothing Then
        Range("AD" & Target.Row).Value = r.Offset(, 8).Resize(, 1).Value
    Else
        Range("AD" & Target.Row) = InputBox("Het inkoopbedrag van dit artikel is niet gevonden, vul hier het inkoopbedrag in van het verkochte artikel!")
    End If
End If
Application.EnableEvents = True
End Sub

Het gaat nu goed wanneer het systeem het identieke voertuig in kolom D vindt, alleen wanneer hij het voertuig niet vindt, werkt het nu niet. Want dan moet het systeem vragen naar de inkoopprijs oftewel de "else" functie.
 
De debugmogelijkheden in de VB-Editor ken ik helaas niet en zou hier graag meer over willen weten.

Wat bedoel je overigens met de gegevens per auto op één rij zetten?
 
Probeer Google eens.

1 rij lijkt mij 1 rij daar is toch niet zoveel moeilijks aan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan