VBA code voor het plaatsen van een waarde

Status
Niet open voor verdere reacties.

Pedro1975

Gebruiker
Lid geworden
18 jun 2012
Berichten
6
Hallo,

Ik ben bezig met het maken van een incasso overzicht waarin de lease bedragen worden weergegeven per periode. in kolom A vanaf cel A3 staan unieke sleutels die hierin via een formule worden opgehaald vanuit een ander tabblad. Nu ben ik op zoek naar een VBA code die het volgende kan uitvoeren:

in cel A1 staat een unieke sleutel die via een VBA wordt gegenereerd
In cel B1 staat het leasebedrag behorend bij deze unieke sleutel
in cel C1 staat de incasso periode

In rij 2 staan vanaf kolom I de perioden

De VBA code zou nu de periode die in cel C1 wordt weergegeven moeten zoeken in rij 2 (bijvoorbeeld in cel C1 staat 1 dan zou Cel I2 in dit geval geselecteerd moeten worden. Vervolgens moet hij de cel selecteren die overeenkomt met de kolom waarin de periode staat die aangegeven wordt in cel C1 en de rij die overeenkomt met het unieke nummer in cel A1. In deze cel moet dan het leasebedrag worden gezet die in Cel B1 wordt weergegeven.

VB zie bijgevoegd bestand.
Hierin staat in cel A1: 66 DP TN 110729080 / in cel B1 staat � 171,75 / in cel C1 staat 12
Het bedrag van 171,75 zou in dit geval in cel T3 moeten komen te staan.

Ik hoop dat mijn uitleg tot dusver voldoende is.

Ik zie uit naar jullie oplossing

Met vriendelijke groet,
 

Bijlagen

Ga ervan uit dat je deze 3 cellen als invoer gaat gebruiken en na iedere invoer op een knop drukt.

Code:
Sub overzetten()
Dim regel As Integer
Dim kolom As Integer

    With Sheets("Incasso overzicht")
        If .Range("A1") <> "" And .Range("B1") <> "" And .Range("C1") <> "" Then
            kolom = .Range("2:2").Find(.Range("C1")).Column
            regel = .Range("A2:A100").Find(.Range("A1")).Row
            .Cells(regel, kolom) = .Range("B1")
        Else
            MsgBox "Niet alle gegevens zijn ingevoerd!"
        End If
    End With
    
    kolom = Empty
    regel = Empty

End Sub
 
Hallo Demeter,

Tot zover hartelijk dank voor je input. Ik krijg alleen nu de melding "Fout 91 objectvariabele of blokvariabele With is niet ingesteld". Deze melding verschijnt bij de volgende regel "regel = .Range("A2:A100").Find(.Range("A1")).Row.Cells(regel, kolom) = .Range("B1").

Hoe kan ik deze melding oplossen?
 
Vreemd.
Hier werkt de code netjes.

Misschien kan je wat meer info geven:
- Welke Excel versie gebruik
- Heb je gegevens of iets in je opmaak aangepast
 
Pedro,

De regel = .Range("A2:A100").Find(.Range("A1")).Row
is niet een regel maar dat zijn er twee:
regel = .Range("A2:A100").Find(.Range("A1")).Row en
.Cells(regel, kolom) = .Range("B1")

Even de regels uit elkaar halen dan ben je waarschijnlijk van het probleem af.

Veel Succes.
 
Demeter,

Het zat hem inderdaad in de opmaak van de cellen. De range A2:A100 waarnaar verwezen word in de regel "regel = .Range("A2:A100").Find(.Range("A1")).Row
.Cells(regel, kolom) = .Range("B1"), staan formules in plaats van absolute waarden. Als ik deze naar waarden omzet dan werkt de macro goed.

Hoe zou ik deze regel "regel = .Range("A2:A100").Find(.Range("A1")).Row
.Cells(regel, kolom) = .Range("B1") aan moeten passen om de formules toch te kunnen gebruiken. ik heb het geprobeerd met .value maar dan krijg ik bij deze regel de foutmelding "object vereist" foutcode 424

Alvast bedankt voor het meedenken.
 
Kijk eens of het hiermee lukt.
Code:
Sub overzetten2()
    With Sheets("Incasso overzicht")
        If Not WorksheetFunction.CountA(.Range("A1").Resize(, 3)) <> 3 Then
            .Cells(.Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row).Find(.Range("A1"), , xlValues, xlWhole).Row, _
                        .Rows(2).Find(.Range("C1")).Column) = .Range("B1")
        Else
            MsgBox "Niet alle gegevens zijn ingevoerd!"
        End If
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan