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

If then vraag

Status
Niet open voor verdere reacties.

HWV

Terugkerende gebruiker
Lid geworden
19 feb 2009
Berichten
1.183
Beste,

Ik gebruik onderstaande code voor het zoeken van gegevens en die dan te plaatsen in een formulier wat goed werkt.
Wat ik wil is dat hij kijkt in kolom 4 (D) staat daar onwaar en in kolom 6 (F) staat daar 10 dat hij dan pas onderstaande neerzet op L38en anders niks.

Code:
Dim wsFFrom As Variant
Set wsFFrom = Workbooks("Tekst_Artikelen").Sheets("Data1").Range("A2:M30000")

If Target.Address = [E19].Address Then
 Range("L38").Value = Application.VLookup(Target.Value, wsFFrom, 7, 0)
  If Range("L38") = "" Then Range("L38") = ""
End If

Ik heb al zitten puzzelen met if then maar krijg het niet voor elkaar want hij moet eerst zoeken in twee kolommen voordat hij de waarde pas kan neerzetten.

Alvast dank

Henk
 
We vragen altijd om een voorbeeld document omdat meer zaken dan alleen het visuele mee kunnen spelen.
Bijvoorbeeld, is die onwaar in kolom D gewoon tekst of een boolean waarde?
Is die 10 in kolom F een numerieke of een tekst waarde?

Dat maakt nogal verschil in hoe de controle erop in VBA moet gebeuren.
 
nu met de bijlage van de teksten

Beste,

Ik heb de gevoelige info eruit gehaald, ik wist niet dat hier ook verschil in zat.
Weer wat geleerd.

in de bijlage het bestand Tekst_Artikelen

Bekijk bijlage Tekst_Artikelen.xls

Alvast dank

Henk
 
Zoiets dan:
Code:
If Target.Address = [E19].Address Then
    If Range("D3") And Range("F3") = 10 Then
        Range("L38").Value = Application.VLookup(Target.Value, wsFFrom, 7, 0)
        [COLOR="#008000"]'If Range("L38") = "" Then Range("L38") = ""[/COLOR]
    End If
End If

Die groene regel heeft uiteraard geen enkele zin.
 
Laatst bewerkt:
even misschien een duidelijker bestand

Bekijk bijlage Tekst_Artikelen.xls

Beste,

Je moet het zo zien in dit voorbeeld op tabblad Criteria als ik daar in E19 bv. artikel: helpmij01 invoer zou hij enkel de waarde moeten pakken als in tabblad Data1 er in kolom D "onwaar" staat en in kolom F "10" dat hij dan de waarde uit kolom G neerzet in L38 van tabbald Criteria
Maar dit geld ook als ik bv artikel: Hamer020 in E19 tik dat hij dan met de zelfde critiria de juiste waarde erbij gaat zoeken in tabblad1.
ik kan niet een vaste waarde er aan vast hangen zoals D3 of F3

Ik hoop dat ik dit nu iets duidelijker heb vermeld, en nu snap ik des te meer waarom een compleet bestand nodig is

Henk
 
De juiste If Then constructie n.a.v. je vraag in #1 staat er al.
Code:
If Range("D3") And Range("F3") = 10 Then
 
Misschien helpt je dit op weg:

(in het voorbeeldbestand --> zelf omzetten naar je het origineel)

Code:
Range("A10").Value = Evaluate("=INDEX(G1:G5,MATCH(A4&""|""&D4&""|""&E4,A1:A5&""|""&D1:D5&""|""&E1:E5,0))")
 
Bekijk bijlage Tekst_Artikelen.xls

Beste,

Ik kan het niet begrijpen, ik heb dit ingevoerd in het bestand.
Maar dan doet het niks meer.
Want als ik een vaste waarde definieer zoals
Code:
If Range("D3") And Range("F3") = 10 Then
waar ik in verwijs naar de waarde in D3 en F3 terwijl die variabel zijn.

Ik krijg het niet werkend helaas.

Ik snap en zie niet wat ik verkeerd doet en waarom ik het niet snap.

PS.
De oplossing van Mart37 snap ik al helemaal niet

Henk
 
F3 is 20 en niet 10, dus dan wordt de lookup niet uitgevoerd.
 
Als ik in E19 het volgende invoer 123456 dan zou de waarde in L38 het volgende moeten zijn:

Article: 123456 de juiste waarde
Description:
Size:
Material:
Printing: e
Print colors:
Ink coverage:
Packaging:

Dit is de waarde uit G8 en niet de waarde uit G9

Bekijk bijlage Tekst_Artikelen.xls

Dus wat ik niet snap dat dit niet het resultaat is, ik zie denk ik echt iets over het hoofd.
Zou u het voorbeeld in het voorbeeld bestand kunnen zetten zodat ik weet dat het werkt en dat ik het misschien gaat begrijpen.

Alvast dank

Henk
 
Henk, doet dit wat je verwacht?
 

Bijlagen

  • Tekst_Artikelen HS.xls
    46,5 KB · Weergaven: 38
Deze geef nu de waarde
<P style=""BORDER-TOP-COLOR: ; BORDER-BOTTOM-COLOR: ; BORDER-RIGHT-COLOR: ; BORDER-LEFT-COLOR: ""></P>tekst tekst tekst

terwijl de uitkomst zou moeten zijn

Article: 123456 de juiste waarde
Description:
Size:
Material:
Printing: e
Print colors:
Ink coverage:
Packaging:

dus als kolom D = onwaar en kolom F = 10 dan moet die waarde daar komen in L38

Henk
 
Dat is dan deze:
Code:
If Not Range("D3") And Range("F3") = 10 Then
 
Ik begrijp nog steeds niet wat je precies wilt, maar probeer deze eens. Je moet uiteraard wel de juiste bladnamen gebruiken:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wsFFrom As Variant
    Set wsFFrom = Sheets("Data1").Range("A2:M30000")

    If Target.Address = [E19].Address Then
        If Not Sheets("Data1").Range("D3") And Sheets("Data1").Range("F3") = 10 Then
            Range("L38").Value = Application.VLookup(Target.Value, wsFFrom, 7, 0)
        End If
    End If
End Sub
 
Laatst bewerkt:
Helaas.

Misschien kan ik het duidelijker uitleggen

In sheet Criteria wil ik als ik in E19 een artikelnummer vul een waarde vullen in cel L38 vanuit de sheet Data1.
Hij moet gaan zoeken in sheet Data1 in kolom A of daar het artikelnummer gevonden wordt.
Zo ja dan moet er gekeken worden in kolom D of daar de tekst ONWAAR staat en in kolom F het cijfer 10.
Als die drie kloppen:

Artikelnummer is gevonden in kolom A
In kolom staat dan de waarde ONWAAR
en in kolom F staat 10

Dan moet de waarde uit kolom G over genomen worden naar de sheet Criteria naar cel L38

Henk
 
Het kan ook niet met Vlookup als de nummers niet uniek zijn. Deze geeft altijd de eerst gevonden waarde.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, s As String
  With Sheets("Data1").Columns(1)
    Set r = .Find(Target.Value, , xlValues, xlWhole)
    If Not r Is Nothing Then
      s = r.Address
      Do
        If Not r.Offset(, 3) And r.Offset(, 5) = 10 Then
          Range("L38") = r.Offset(, 6)
          Exit Sub
        End If
        Set r = .FindNext(r)
      Loop While Not r Is Nothing And r.Address <> s
    End If
  End With
End Sub
 
Dit werkt idd en krijg de juiste waarde wat ik nodig heb.
Enkel in het originele bestand (offertebon) moeten de velden onder de E19 en ernaast ook ingevuld worden.
Is het mogelijk om alleen als E19 wijzigt naar een artikelnummer dat hij daar op gaat zoeken.

Henk
 
Met de hulp van twee extra cellen.
Waar die twee cellen staan maakt niet uit.
Zonder de twee cellen krijg ik de matrixformule namelijk niet aan de praat.
Misschien dat iemand anders een nettere oplossing weet.
 

Bijlagen

  • Tekst_Artikelen MA (1).xls
    59 KB · Weergaven: 39
Wat bedoel je met de cellen eronder. Voor jouw zal het allemaal duidelijk zijn maar de uitleg is bijzonder summier.

@mart37 mooie oplossing:thumb:

Zonder hulpcellen werkt het volgens mij ook.
Code:
Range("L38") = Evaluate("=INDEX(Data1!G1:G13,MATCH(E19&""|""&FALSE&""|""&10,Data1!A1:A13&""|""&Data1!D1:D13&""|""&Data1!F1:F13,0))")
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan