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

Bestaat er iets als DBINVULLEN?

Status
Niet open voor verdere reacties.

PaulusWM

Gebruiker
Lid geworden
20 feb 2007
Berichten
7
Hoi allemaal,

Ik hoop dat iemand mij kan helpen met deze vraag;

Kan je, zoals je met de functie DBLEZEN een waarde kan ophalen uit een database,

ook met een functie een waarde invullen in een database?

Uiteindelijk wil ik een database kunnen bijwerken middels een macro.
Op deze manier wil ik de gebruiker van het document niet lastig vallen met een enorme matrix aan getallen waarin hij/zij zelf moet uitzoeken waar hij/zij het getal moet vervangen als hij een instelling wil wijzigen.

Thanks!

-Paul.
 
Paul

Neen, dat gaat niet.

Je zal met VBA moeten werken, en daar de Find functie moeten programmeren (dus wet je manueel met Ctrl-F zou doen). En daarmee zoek je de exacte locatie op en schrijf je weg.

Wigi
 
Paul

Neen, dat gaat niet.

Je zal met VBA moeten werken, en daar de Find functie moeten programmeren (dus wet je manueel met Ctrl-F zou doen). En daarmee zoek je de exacte locatie op en schrijf je weg.

Wigi

Dank je.
Dan heb ik een andere vraag;

Ik zou met een marco mijn database kunnen filteren zodat alleen de regel met de waarden waarin ik iets wil veranderen overblijft.
Maar kan ik dan in een macro opnemen dat ik vanaf cel A1 één cel naar beneden, en x cellen naar echts iets wil invullen?
Tot nu toe is deze poging gestrand op dat in de macro exact de cel is opgenomen waarin ik toevallig wat wilde invullen.

Groet,

-Paul.
 
Je kan idd de Autofilter programmeren, en dan weer met een zoekfunctie uitmaken welke in kolom je iets wil wegschrijven. Als op voorhand geweten is welke kolom, ja dan hoeft die zoekfunctie natuurlijk niet meer.

Wigi
 
Je kan idd de Autofilter programmeren, en dan weer met een zoekfunctie uitmaken welke in kolom je iets wil wegschrijven. Als op voorhand geweten is welke kolom, ja dan hoeft die zoekfunctie natuurlijk niet meer.

Wigi

Wigi,

Zou je een voorbeeld van zo'n macro kunnen laten zien?

In het meegestuurde voorbeeld document is een database opgenomen zoals ik deze wil gebruiken.

Ik zou er erg mee geholpen zijn.

-Paul.
 

Bijlagen

Hier is code voor de Autofilter.

En code voor de Find vind je in de VBA help files onder... Find.

Wigi

Hoi Wigi,

Het probleem met Find is dat er meerdere dezelfde waarden in de database zijn opgenomen. Ik wil alleen dat getal in die kolom van die rij veranderen.

Dat autofilteren lukt me. Maar ik kan niet in een macro opnemen dat ik vanaf een cel in de eerste rij één cel naar beneden selecteer (met de pijltjestoetsen).

Als ik namelijk een getal ergens invul "onthoudt" (ik neem altijd eerst macro's op en bewerk ze dan later) de macro de cel waar in is geschreven (bijvoorbeeld G12 als ik de 12e rij met de autofilter heb weten te filteren (en als bovenste rij heb staan).

Toevoeging op het verhaal; ik heb ook de mogelijkheid ingebouwd om automatisch rijen aan de database te kunnen toevoegen (welke ik na toevoeging alphabetisch sorteer) ; m.a.w. de getallen in de database hebben niet altijd dezelfde plek.

Kun je de bewegingen met pijltjestoetsen "opnemen" in een macro?

En zonee, heb je een ander idee misschien?

Dank je,

-Paul.
 
Kun je de bewegingen met pijltjestoetsen "opnemen" in een macro?

Paul,

Dat kan je dus niet opnemen.
De volgende code verplaatst je cursor 1 cel naar beneden :
Code:
Range("A1").Offset(1).Select

deze verplaatst je actieve cel bv 20 rijen naar beneden en 10 kolommen naar rechts
Code:
Range("A1").Offset(20,10).Select


Joske
 
Code:
Sub AutofilterProgrammeren()

    Dim lAanTePassenRij As Long
    Dim iAanTePassenKolom As Integer
    Dim ws As Worksheet
    
    Application.ScreenUpdating = False
    
    Set ws = Sheets("invultabblad")
    
    With Range("A1").CurrentRegion

        .AutoFilter

        .AutoFilter Field:=1, Criteria1:=ws.Range("C4").Value

        .AutoFilter Field:=2, Criteria1:=ws.Range("D4").Value

    End With

    With ActiveSheet.AutoFilter.Range
        
        On Error Resume Next

        lAanTePassenRij = .Offset(1).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible).Cells(1).Row

        On Error GoTo 0
    
    End With
    
    iAanTePassenKolom = Rows(1).Find(ws.Range("E3").Value, lookat:=xlWhole, LookIn:=xlValues).Column
    
    ActiveSheet.AutoFilterMode = False
    
    Cells(lAanTePassenRij, iAanTePassenKolom).Value = ws.Range("E4").Value
    
    Application.ScreenUpdating = True

End Sub

Wigi
 
Paul,

Dat kan je dus niet opnemen.
De volgende code verplaatst je cursor 1 cel naar beneden :
Code:
Range("A1").Offset(1).Select

deze verplaatst je actieve cel bv 20 rijen naar beneden en 10 kolommen naar rechts
Code:
Range("A1").Offset(20,10).Select


Joske

Hoi Joske,

Ik heb het uitgetest.

Als ik van de eerste rij één cel naar beneden selecteer is dat (logisch) de cel in de tweede rij. Maar ik wil dat de selectie dan op de rij komt die met autofilter heb geselecteerd.

Het punt is dat bijvoorbeeld de 6e rij niet altijd Volvo S40 is want als ik een keer Audi A4 aan de database toevoeg staat Volvo dan in de zevende rij.

De bedoeling is dus dat ik, net zoals je DBLEZEN hebt, ik een formule/macro opstel waarmee ik de rij en kolom kan definieren waarin een getal moet worden ingevuld/veranderd.

Groeten,

-Paul.
 
Hi Paulus,

Wigi heeft juist de code gepost !

Wigi :thumb:

Ik heb het gezien.
Ik zal hier mee aan de slag gaan (aan mijn document aanpassen).
Ik denk dat dit hem gaat worden!
Super Wigi!

In ieder geval, voor nu, onwijs bedankt voor de snelle reactie en vooral goede reactie!

Ik laat wel weten wanneer het mij is gelukt (dan zet ik het bericht op opgelost).

Groeten,

-Paul.
 
Code:
Sub AutofilterProgrammeren()

    Dim lAanTePassenRij As Long
    Dim iAanTePassenKolom As Integer
    Dim ws As Worksheet
    
    Application.ScreenUpdating = False
    
    Set ws = Sheets("invultabblad")
    
    With Range("A1").CurrentRegion

        .AutoFilter

        .AutoFilter Field:=1, Criteria1:=ws.Range("C4").Value

        .AutoFilter Field:=2, Criteria1:=ws.Range("D4").Value

    End With

    With ActiveSheet.AutoFilter.Range
        
        On Error Resume Next

        lAanTePassenRij = .Offset(1).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible).Cells(1).Row

        On Error GoTo 0
    
    End With
    
    iAanTePassenKolom = Rows(1).Find(ws.Range("E3").Value, lookat:=xlWhole, LookIn:=xlValues).Column
    
    ActiveSheet.AutoFilterMode = False
    
    Cells(lAanTePassenRij, iAanTePassenKolom).Value = ws.Range("E4").Value
    
    Application.ScreenUpdating = True

End Sub

Wigi

Wigi,
Super bedankt.
Ik heb je code succesvol toegepast!
Probleem opgelost.
Dank je,
-Paul.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan