Excel:Gegevens verplaatsen

Status
Niet open voor verdere reacties.

milas

Gebruiker
Lid geworden
30 okt 2006
Berichten
22
Wat doe ik verkeerd? wil in een bestand (dagrecu) gegevens opzoeken en automatisch in een ander bestand (makro) invullen maar het lukt me niet. kan iemand mij helpen aub?

Workbooks.Open Filename:="L:\makro\dagresu.xls"
Windows("dagresu.xls").Activate

'cijfers maken van tekst velden
For z = 2 To 1500
Cells(z, 3) = Cells(z, 3) + 0
Cells(z, 5) = Cells(z, 5) + 0
Next z

'overzetten van datum
dag = Cells(2, 14)
Windows("dagrecu.xls").Activate
Cells(1, 46) = dag

For x = 2 To 1500

'indien deurne
If Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x, 3) = 706 Then
invulkol = 36
GoTo 20
End If

20
produkt = Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x,5)
aantal = Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x, 7)

For y = 1 To 500
If Workbooks ("makro.xls).Sheets ("bestel").Cells(y,1) = produkt Then

Windows("dagresu.xls").Activate
Cells(x, 5).Select
End
End If

Windows("dagresu.xls").Activate
ActiveWorkbook.Close
Windows("Makro.xls").Activate


End Sub
 
Hoi milas,

Ik haal er in de snelligheid al 2 fouten uit (zie VET ROOD).

Als deze het probleem niet oplossen, dan is het makkelijker om je hele code te zippen en hier te plaatsen.

Code:
Workbooks.Open Filename:="L:\makro\dagresu.xls"
Windows("dagresu.xls").Activate

'cijfers maken van tekst velden
For z = 2 To 1500
Cells(z, 3) = Cells(z, 3) + 0
Cells(z, 5) = Cells(z, 5) + 0
Next z

'overzetten van datum
dag = Cells(2, 14)
Windows("[B][COLOR="Red"]dagrecu.xls[/COLOR][/B]").Activate
Cells(1, 46) = dag

For x = 2 To 1500

'indien deurne
If Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x, 3) = 706 Then
invulkol = 36
GoTo 20
End If

20
produkt = Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x,5)
aantal = Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x, 7)

For y = 1 To 500
If Workbooks ("makro.xls[B][COLOR="red"]"[/COLOR][/B]).Sheets ("bestel").Cells(y,1) = produkt Then

Windows("dagresu.xls").Activate
Cells(x, 5).Select
End
End If

Windows("dagresu.xls").Activate
ActiveWorkbook.Close
Windows("Makro.xls").Activate
 
voila

de bedoeling is om in bastand A de waarde te gaan opzoeken aan de hand van klant-en artikelnummer en te verplaatsen naar bestand B (zie macro).

alvast bedankt
milas
 

Bijlagen

Sorry

Hoi milas,

Sorry, ben te druk bezig geweest met een ander project voor een klantje van me.

Ik heb er net eventjes naar gekeken, maar ik snap er niets van.

1 > In beide bestanden staat geen VBA code.
2 > Welke excel bestand zou de code moeten bevatten?
3 > In welke bestand moet worden gezocht en naar welk bestand (en waar in dat bestand) moeten deze gegeven dan naar toe worden gekopieerd
 
dag spiderman

sorry, was de code vergeten;-)
de code staat in thirytestvb, deze gaat in dagresu aan de hand van klant-artikelnummer het aantal zoeken, verplaatsen naar thirytestvb en in de juiste kolom en cel plaatsen(zie code).

alvast bedankt,

groeten
milas
 

Bijlagen

Hoi milas,

Ik ben ff een beetje aan het stooien geweest, en heb er het volgende van gemaakt.(zie bijlage)

Ik denk niet dat het helemaal werkt zoals het zou moeten, dit omdat me de werking niet helemaal duidelijk is/was.

Kijk maar, en laat maar horen waar de fouten zitten.
 

Bijlagen

hey spiderman

super!!!

werkt perfect....hartelijk dank!

nog een vraagje: hoe komt het dat de eerste code geen gegevens verplaats werden? wat ben vergeten te doen?

groeten

milas
 
Hoi milas,

Waarvoor dient:
Code:
    'cijfers maken van tekst velden
    
    For z = 2 To 1500
   Cells(z, 3) = Cells(z, 3) + 0
    Cells(z, 5) = Cells(z, 5) + 0
    Next z
Wat was het doel hiervan?

Het grootste probleem zit hem in:
Code:
            produkt = Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x, 5)
            aantal = Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x, 7)
           
                For y = 1 To 300
                    If Workbooks("thirytest.xls").Sheets("bestel").Cells(y, 6) = produkt Then
                            If Workbooks("thirytest.xls").Sheets("bestel").Cells(y, 4) <> 1 Then
                            MsgBox ("produkt niet in assortiment")
                            Windows("dagresu.xls").Activate
                            Cells(x, 5).Select
                            End
                            End If
                        If Workbooks("thirytest.xls").Sheets("bestel").Cells(y, invulkol) > 0 Then
                            MsgBox ("bijbestelling?")
                        End If
                        Workbooks("thirytest.xls").Sheets("bestel").Cells(y, invulkol) = aantal + Workbooks("thirytest.xls").Sheets("bestel").Cells(y, invulkol)
                        
                    End If
                Next y
                MsgBox ("produkt niet gevonden in excell-sheet")
                Windows("dagresu.xls").Activate
                Cells(x, 5).Select
               End

Als je goed naar deze code kijkt dan zie je dat kort samengevat:
Code:
For x = 2 To 1500
   produkt = Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x, 5)
           
    For y = 1 To 300
    If Workbooks("thirytest.xls").Sheets("bestel").Cells(y, 6) = produkt Then
    End If
    Next y
    MsgBox ("produkt niet gevonden in excell-sheet")
    Windows("dagresu.xls").Activate
    Cells(x, 5).Select
    End
Next x
Er wordt dus door For x de variabele product 1500 keer een andere waarde gegeven.
Deze waarde van product wordt vervolgens 300 keer (For y) getest of die gelijk is aan Workbooks("dagresu.xls").Sheets("Lijst bons niveau 0 detail").Cells(x, 5)

Tot zover zou het nog kunnen kloppen.
Maar als ForY de 300 heeft bereikt krijg je de code:
Code:
MsgBox ("produkt niet gevonden in excell-sheet")
    Windows("dagresu.xls").Activate
    Cells(x, 5).Select
    [COLOR="Red"][B]End[/B][/COLOR]
Je code stopt dus altijd na de eerste loop van 300 keer.
 
hey spiderman,

is de volgende code is om van textveld cijfers te maken. weet jij nog een andere oplossing?

groeten

For z = 2 To 1500
Cells(z, 3) = Cells(z, 3) + 0
Cells(z, 5) = Cells(z, 5) + 0
Next z
 
Hoi milas,

Een oplossing zou kunnen zijn:
CInt voor getallen tussen -32.768 tot en met 32.767
CLng voor getallen tussen -2.147.483.648 tot en met 2.147.483.647
Breuken worden afgerond


Waarom wil je textvelden in cijfers veranderen?
 
moet dat niet als je met een query gegevens binnenhaalt bv
 
Hoi milas,

moet dat niet als je met een query gegevens binnenhaalt bv
Daar kun je het ook bij gebruiken, maar bijvoorbeeld als Cells(z, 3) = "1234", dan maak je met CInt(Cells(z, 3)) dus 1234

Cint staat voor convert to Int, net zoals Clng staat voor convert to Long en Cstr staat voor Convert to String
 
Bedankt.

Sorry maar zit nog met het volgende probleem (zie bijlage).

heb jij daar een oplossing voor?
 

Bijlagen

Hoi milas,

Formules zijn niet mijn beste punt.

Misschien dat Wigi, of iemand anders hier een passende oplossing voor heeft
 
Hoi milas,


Daar kun je het ook bij gebruiken, maar bijvoorbeeld als Cells(z, 3) = "1234", dan maak je met CInt(Cells(z, 3)) dus 1234

Cint staat voor convert to Int, net zoals Clng staat voor convert to Long en Cstr staat voor Convert to String

En hoe zou mijn code dan moeten zijn?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan