Toon posts:

[VBA / XL] Macro voor kopiëren van cel uit andere sheet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hopelijk kunnen jullie me helpen, want ik kom er niet meer uit met de macro in Excel. Ik ben bezig met het bouwen van een macro waarmee gegevens uit Sheet1 aangevuld worden met gegevens uit Sheet2. In Sheet 1 staan zo'n 1000 verschillende handelingen die gedaan zijn. In Sheet2 staan de tijden van alle (mogelijk) handelingen (zo'n 2000), waarvan de ID in kolom A van sheet 1 overeenkomen met een rij in Sheet2. Nu wil ik in Sheet 1 bij elke handeling de tijd uit sheet 2 (in kolom C) in de laatste kolom (kolom F) toevegen.

Tot zover heb ik dit:

VBScript: CopyTimes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
Sub CopyTimes()

'Find last piece of data in Sheet2 Column A
LastRow = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row

    'Start at bottom of Column A and get ID
    For NxtID = LastRow To 2 Step -1
        
        ID = Sheets("Sheet2").Cells(NxtID, "A")
        
        
        'Look for ID in Column A of Sheet1
        With Sheets("Sheet1").Range("A1:A" & LastRow)
            Set C = .Find(ID, lookat:=xlWhole)
            
            Set IDRow = .Columns(1).Find(ID, lookat:=xlWhole)

            'Copy cell of column F if ID is found in Sheet2
            If Not C Is Nothing Then
            
                        'Select cell in Sheet2 to copy
                        Sheets("Sheet2").Select
                        Cells(NxtID, "C").Select
                        Selection.Copy

                        'Paste cell into Sheet1 in next row
                        Sheets("Sheet1").Select
                        Cells(IDRow, "F").Select
                        ActiveSheet.Paste
                        
            End If
            
        End With
                        
        
    'Move up 1 row on Sheet2 and check the next ID
        
    Next
    
End Sub


Het prbleem is echter dat de code (regel 28) niet werkt. Ik krijg een "runtime erro 1004: Application-defined or object-defined error" Ik dus niet weet hoe ik het rijnummer kan selecteren om de tijd in de juiste rij te plakken.

Nog een kort voorbeeldje om het te verduidelijken: Sheet1 ID nummer 12345 is op rij 33. In sheet2 vind hij dan de tijd (bij ID 12345, kolom C) in rij 45. Dan moet deze cel gekopieerd worden naar rij 33 kolom F in Sheet1.

Snapt u het? En kunt u mij helpen?

Mijn dank is bij voorbaat zeer groot!

[ Voor 1% gewijzigd door Verwijderd op 20-11-2008 13:31 ]


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 17:25
Een paar dingen die iig. alvast fout zijn:
-Bij de cells methode gebruik je twee getallen. cel B3 is dus .Cells(3,2), niet .Cells(3,"B")
-De find methode geeft een range object terug, een verwijzing naar een cel. Niet het getal.
Da's eigenlijk heel praktisch:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Dim sheet2cel as range
Dim IDcel as Range
Set sheet2cel = Sheets("Sheet2").Cells(1,1)
LastRow = Sheets("Sheet2").Columns(1).End(xlUp).Row 
Do while sheet2cel.row<=lastrow
  Set IDcel = sheets(1).Columns(1).Find(sheet2cel.value, lookat:=xlWhole)
  If not (IDcel = Nothing) then
    sheet2cel.offset(0,5).value = IDcel(0,2).value
  end if
  set sheet2cel = sheet2cel.offset(1,0)
loop


Waarom gebruik je overigens de vert.zoeken/vlookup functie niet gewoon? Lijkt me een stuk eenvoudiger in dit geval.

Verwijderd

wat betreft de code, kijk eens in het topic in dit forum van vandaag : VBA/Excel kijken of bestand bestaat
als je dit persé met vba wil oplossen, kan het gerealiseerd worden met offset(rij,kolom)

maar met een gewone formule is het ook mogelijk deze informatie aan te vullen op het werkblad : kijk eens naar =vert.zoeken (=vlookup), en post opnieuw met wat je geprobeerd hebt als je hierbij vastloopt

welkom op GoT trouwens! (ik pas enkele kleinigheden even aan in je TS, zie hiervoor onze FAQ)

Verwijderd

Topicstarter
Welicht komt het door het feit dat ik er al (te) lang mee bezig ben dat ik het mezelf moeilijk maak. Het is een van de eerste keren dat ik met macro's werk/programmeer.

Het gebruik van VLOOKUP werkt inderdaad een stuk beter en vooral makkelijker!

Enorm bedankt voor de hulp! Hopelijk kan ik anderen ook nog eens helpen ;)

[ Voor 27% gewijzigd door Verwijderd op 20-11-2008 15:15 ]