Toon posts:

VBA programeren, ophalen van gegevens excel

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wie kan mij helpen?
Ik ben op zoek naar een manier om “Dagverslagen” automatisch aan te maken aan de hand van een planning die ik zou kopieëren in deze generator.
Deze worden uit een ander excel file genomen en geplakt op cellen A4:I100 in het tabblad “ingave”.

Kolom A = Vertrek uur van bestelwagen
Kolom B = Nummerplaat
Kolom E = Klant + werf
Kolom F = Projectnummer
Kolom G = info van de werken
Kolom I = Werknemers

Bij het tabblad “Verslagen” zou ik aan de hand van de ingevulde nummerplaat:
-Naam van werknemers = H5
-Projecten = A8 (tot het aantal die er die dag op staan, kan verschillen van 1 tot .... werven)
-Klant + werf = B8 ( Volgens projectnummer in kolom A)
-Uur van vertrek = J7
Dit zou ik als basis al willen kunnen bereiken.
Onderaan Vanaf A23 zou ik een exacte kopie wensen van alles wat deze bestelwagen heeft als opdracht die dag op de planning.
Ik had al iets gevonden en een beetje aangepast, maar het ziet er naar uit dat er nog veel meer zal nodig zijn of iets compleet anders.


...

Sub Orders_LXF()

Dim Ingave As Worksheet
Dim Verslagen As Worksheet
Dim LICENSE As String
Dim finalrow As Integer
Dim i As Integer 'row counter

'set variables
Set Ingave = Blad1
Set Verslagen = Blad2

LICENSE = Verslagen.Range("H4").Value

'clear old data from Werkblad -> doen we niet!! anders verwijderen niet opgeslagen gegevens

'goto database and start searching and copying
Ingave.Select
finalrow = Cells(Rows.Count, 1).End(xlUp).Row

'loop through the rows to find the matching records
For i = 1 To finalrow
If Cells(i, 2) = LICENSE Then 'if the name in column A matches the search LICENSE then copy the row
Range(Cells(i, 6)).Copy
Verslagen.Select 'go to the werkblad
Range("C20").End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll 'find the first blank row and paste
Ingave.Select 'go back to the database and continue searching
End If
Next i
End Sub

...

Alle reacties


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 08:00
wat doet bovenstaande code wel/niet?
op welke regel loop je vast?

Visual Basic:
1
Set Ingave = Blad1

zal, imho, sowieso iets moeten worden in te trant van:
Visual Basic:
1
Set Ingave = ActiveWorkbook.Sheets("Blad1")


verder:
  • plaats code tussen
    [code=vb]...[/code]
    , dan wordt het netjes opgemaakt.
  • lus-/rijtellers niet als Integer declareren, maar als Long.. anders ga je nat bij werkbladen met meer dan 32.767 rijen.
  • .Select is (vaak) niet nodig en werkt fouten in de hand. Probeer zoveel mogelijk te vermijden; verwijs direct naar het benodigde werkblad, daarvoor declareer je juist die verschillende worksheets.

[ Voor 112% gewijzigd door breew op 13-04-2018 11:13 ]