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

data opzoeken en bewerken.

Status
Niet open voor verdere reacties.

mitch2k

Gebruiker
Lid geworden
3 aug 2007
Berichten
11
Ik heb een excelbestand waarin data staan van leveranciers. In kolom 1 staat de Leveranciersnaam (Supplier), kolom2 de firmanaam (SupplierCompany), Vervoersmethode, etc.

Ik heb een userform gemaakt waarmee ik ze kan weergeven. Ik geef de naam in in de textbox SupplierSelection, en klik op de display knop, die vervolgens mooi alle vakjes vult. De waarde van SupplierSelection wordt vertikaal gezocht in de range dia alle data bevat, en vervolgens in de juiste vakjes gegoten.

Code:
Private Sub DisplaySupplierInfoButton_Click()

SupplierCompanyDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 2, 0)
SupplierCarrierMethodDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 18, 0)
SupplierCarrierDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 19, 0)
SupplierCarrierRemarksDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 20, 0)
SupplierRemarksDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 21, 0)
SupplierRequestDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 22, 0)
SupplierBulkRequestDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 23, 0)
SupplierRequestLinkDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 24, 0)
SupplierRequestInfoDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 25, 0)
End Sub

Dit werkt perfect, maar nu wil ik ook vanuit de userform data gaan bewerken. Ik heb dit als volgt geprobeerd:

Code:
Private Sub SupplierSave_Click()

Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 2, 0) = SupplierCompanyDisplay.Value
Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 18, 0) = SupplierCarrierMethodDisplay.Value
Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 19, 0) = SupplierCarrierDisplay.Value
Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 20, 0) = SupplierCarrierRemarksDisplay.Value
Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 21, 0) = SupplierRemarksDisplay.Value
Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 22, 0) = SupplierRequestDisplay.Value
Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 23, 0) = SupplierBulkRequestDisplay.Value
Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 24, 0) = SupplierRequestLinkDisplay.Value
Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 25, 0) = SupplierRequestInfoDisplay.Value

MsgBox "Data voor " & SupplierSelection & " opgeslagen."
End Sub

Dit geeft een error (1004 - door toepassing of object gedefinieerde fout).
Ik vermoed dat mijn fout al start bij het "opzoeken":

SupplierCompanyDisplay.Value = Application.VLookup(Me.SupplierSelection.Value, Sheets("Suppliers").Range("A2:BB300"), 2, 0)

Kan ik dit op een betere manier doen? Ik ben al een paar uur bezig met voorbeelden etc, maar ik vindt niet direct een goede methode.

thanks!
 
Code:
Private Sub DisplaySupplierInfoButton_Click()
    With Sheets("Suppliers").Columns(1)
        SupplierCompanyDisplay.Value = .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 1).Value
        SupplierCarrierMethodDisplay.Value = .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 17).Value
        SupplierCarrierDisplay.Value = .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 18).Value
        SupplierCarrierRemarksDisplay.Value = .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 19).Value
        SupplierRemarksDisplay.Value = .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 20).Value
        SupplierRequestDisplay.Value = .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 21).Value
        SupplierBulkRequestDisplay.Value = .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 22).Value
        SupplierRequestLinkDisplay.Value = .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 23).Value
        SupplierRequestInfoDisplay.Value = .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 24).Value
    End With
End Sub

Private Sub SupplierSave_Click()
    With Sheets("Suppliers").Columns(1)
        .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 1).Value = SupplierCompanyDisplay.Value
        .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 17).Value = SupplierCarrierMethodDisplay.Value
        .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 18).Value = SupplierCarrierDisplay.Value
        .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 19).Value = SupplierCarrierRemarksDisplay.Value
        .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 20).Value = SupplierRemarksDisplay.Value
        .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 21).Value = SupplierRequestDisplay.Value
        .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 22).Value = SupplierBulkRequestDisplay.Value
        .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 23).Value = SupplierRequestLinkDisplay.Value
        .Find(SupplierSelection.Value, , xlValues, xlWhole).Offset(, 24).Value = SupplierRequestInfoDisplay.Value
    End With
    MsgBox "Data voor " & SupplierSelection & " opgeslagen."
End Sub
 
Rudi

Code:
 .Find(SupplierSelection.Value, , xlValues, xlWhole)

kan in deel 2 van de code ook opgenomen worden in het With statement.
 
Daar moet ge dan juist Giga Senior voor geworden zijn :o
Code:
Private Sub SupplierSave_Click()
    With Sheets("Suppliers").Columns(1).Find(SupplierSelection.Value, , xlValues, xlWhole)
        .Offset(, 1).Value = SupplierCompanyDisplay.Value
        .Offset(, 17).Value = SupplierCarrierMethodDisplay.Value
        .Offset(, 18).Value = SupplierCarrierDisplay.Value
        .Offset(, 19).Value = SupplierCarrierRemarksDisplay.Value
        .Offset(, 20).Value = SupplierRemarksDisplay.Value
        .Offset(, 21).Value = SupplierRequestDisplay.Value
        .Offset(, 22).Value = SupplierBulkRequestDisplay.Value
        .Offset(, 23).Value = SupplierRequestLinkDisplay.Value
        .Offset(, 24).Value = SupplierRequestInfoDisplay.Value
    End With
    MsgBox "Data voor " & SupplierSelection & " opgeslagen."
End Sub
 
Geweldig!

Heb dit geprobeerd, en werkt perfect!
Thanks mannen!

Enige waar ik nu nog tegenaanloop; als je een foute supplier ingeeft (dus 1 die niet te vinden is in de lijst, dan krijg je volgende melding:

Fout 91 tijdens uitvoering: objectvariabele of blokvariabele with is niet ingesteld

Kan ik deze error nog afvangen, dat hier een gebruiksvriendelijkere Error kan weergegeven worden met een msgbox?

Thanks!
 
Code:
Private Sub SupplierSave_Click()
    If Sheets("Suppliers").Columns(1).Find(SupplierSelection.Value, , xlValues, xlWhole) Is Nothing Then
        MsgBox "De gezochte leverancier is niet aanwezig in de database": Exit Sub
    Else
    With Sheets("Suppliers").Columns(1).Find(SupplierSelection.Value, , xlValues, xlWhole)
        .Offset(, 1).Value = SupplierCompanyDisplay.Value
        .Offset(, 17).Value = SupplierCarrierMethodDisplay.Value
        .Offset(, 18).Value = SupplierCarrierDisplay.Value
        .Offset(, 19).Value = SupplierCarrierRemarksDisplay.Value
        .Offset(, 20).Value = SupplierRemarksDisplay.Value
        .Offset(, 21).Value = SupplierRequestDisplay.Value
        .Offset(, 22).Value = SupplierBulkRequestDisplay.Value
        .Offset(, 23).Value = SupplierRequestLinkDisplay.Value
        .Offset(, 24).Value = SupplierRequestInfoDisplay.Value
    End With
    MsgBox "Data voor " & SupplierSelection & " opgeslagen."
    End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan