Sådan oprettes makro til søgning, kopi og indsætning?

Problem

Her er hvad jeg vil gøre. Jeg har et regneark med kundedata for række, og jeg har også et regneark med en faktura, jeg vil automatisk fylde med kundeoplysninger fra dataark.

Jeg vil gerne bygge en makro, der vil søge efter referencenummeret jeg fortæller det og kopiere rækken med kundedata til fakturaarket, hvor jeg vil trække hvert påkrævet felt til fakturaen (som jeg vil gøre alene).

Jeg byggede en makro, der søger referencenummeret, vælger rækken og kopierer og indsætter rækken i det andet regneark. Mit problem er, at når jeg går for at sætte et nyt referencenummer i min lille søgefelt, gjorde jeg det stadig søger referencenummeret jeg opsætter makroen med og refererer kun den indledende række, jeg opsætter makro med data :(

Jeg ville ønske jeg kunne fortælle det til:

Søg efter et referencenummer, som jeg kopierer referencenummeret og indsæt det i find på det andet regneark, og så trykker jeg på skiftrum for at vælge og kopiere dataene og indsætte det i det andet regneark. Det fortsætter med at referere til de indledende intervaller og referencenummer.

Hjælp venligst.

Her er hvad jeg har hidtil. Jeg er lidt af en noob. Al den aktive rulle i slutningen er, at jeg ruller og indsætter makroen under mine fakturaer, så jeg kan trække data senere.

 Vælg ActiveCell.FormulaR1C1 = "33629" Ark ("Ark2"). Vælg Cells.Find (Hvad: = "33629", Efter: = ActiveCell, LookIn: = xlFormulas, LookAt _: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, MatchCase: = _ False, SearchFormat: = False) .Activate Rows ("6: 6"). Vælg Range ("C6"). Aktiver Selection.Copy Sheets (2) "). Vælg ActiveWindow.SmallScroll Down: = 12 ActiveWindow.ScrollRow = 14 ActiveWindow.ScrollRow = 15 ActiveWindow.ScrollRow = 16 ActiveWindow.ScrollRow = 16 ActiveWindow.ScrollRow = 17 ActiveWindow.ScrollRow = 18 ActiveWindow.ScrollRow = 19 ActiveWindow.ScrollRow = 19 ActiveWindow.ScrollRow = 20 ActiveWindow .ScrollRow = 21 ActiveWindow.ScrollRow = 22 ActiveWindow.ScrollRow = 23 ActiveWindow.ScrollRow = 24 ActiveWindow.ScrollRow = 25 ActiveWindow.ScrollRow = 26 ActiveWindow.ScrollRow = 26 ActiveWindow.ScrollRow = 27 ActiveWindow.ScrollRow = 29 ActiveWindow.ScrollRow = 31 ActiveWindow.ScrollRow = 31 ActiveWindow.ScrollRow = 32 ActiveWindow .ScrollRow = 33 ActiveWindow.ScrollRow = 36 ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollRow = 40 ActiveWindow.ScrollRow = 42 Act iveWindow.ScrollRow = 45 ActiveWindow.ScrollRow = 47 ActiveWindow.ScrollRow = 49 ActiveWindow.ScrollRow = 51 ActiveWindow.ScrollRow = 53 ActiveWindow.ScrollRow = 53 ActiveWindow.ScrollRow = 54 ActiveWindow.ScrollRow = 55 ActiveWindow.ScrollRow = 56 ActiveWindow.ScrollRow = 56 ActiveWindow.ScrollRow = 57 ActiveWindow.ScrollRow = 58 ActiveWindow.ScrollRow = 58 ActiveWindow.ScrollRow = 59 ActiveWindow.ScrollRow = 60 ActiveWindow.ScrollRow = 61 ActiveWindow.ScrollRow = 62 ActiveWindow.ScrollRow = 62 ActiveWindow.ScrollRow = 63 ActiveWindow.ScrollRow = 64 ActiveWindow.ScrollRow = 64 ActiveWindow.ScrollRow = 65 ActiveWindow.ScrollRow = 67 ActiveWindow.ScrollRow = 68 ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollRow = 70 ActiveWindow.ScrollRow = 71 ActiveWindow.ScrollRow = 72 ActiveWindow.ScrollRow = 73 ActiveWindow.ScrollRow = 74 ActiveWindow.ScrollRow = 74 ActiveWindow.ScrollRow = 75 ActiveWindow.ScrollRow = 75 ActiveWindow.ScrollRow = 76 ActiveWindow.ScrollRow = 77 ActiveWindow.ScrollRow = 78 ActiveWindow.ScrollRow = 79 ActiveWindow.ScrollRow = 79 ActiveWindow.ScrollRow = 80 ActiveWindow.ScrollRow = 82 ActiveWindow.ScrollRow = 83 ActiveWindow.ScrollRow = 84 ActiveWindow.ScrollRow = 85 ActiveWindow.ScrollRow = 87 ActiveWindow.ScrollRow = 88 ActiveWindow.ScrollRow = 91 ActiveWindow.ScrollRow = 90 ActiveWindow.ScrollRow = 91 ActiveWindow.ScrollRow = 91 ActiveWindow.ScrollRow = 93 ActiveWindow.ScrollRow = 94 ActiveWindow.ScrollRow = 94 ActiveWindow.ScrollRow = 95 ActiveWindow.ScrollRow = 96 ActiveWindow.ScrollRow = 97 ActiveWindow.ScrollRow = 97 ActiveWindow.ScrollRow = 98 ActiveWindow.ScrollRow = 99 ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 101 ActiveWindow.ScrollRow = 102 ActiveWindow.ScrollRow = 102 ActiveWindow.ScrollRow = 104 ActiveWindow.ScrollRow = 104 ActiveWindow.ScrollRow = 106 ActiveWindow.ScrollRow = 107 ActiveWindow.ScrollRow = 109 ActiveWindow.ScrollRow = 111 ActiveWindow.ScrollRow = 111 ActiveWindow.ScrollRow = 112 ActiveWindow.ScrollRow = 113 ActiveWindow.ScrollRow = 114 ActiveWindow.ScrollRow = 115 ActiveWindow.ScrollRow = 117 ActiveWindow.ScrollRow = 118 ActiveWindow.ScrollRow = 118 ActiveWindow.ScrollRow = 119 ActiveWindow.ScrollRow = 119 ActiveWindow.ScrollRow = 122 ActiveWindow.ScrollRow = 124 ActiveWindow.ScrollRow = 124 ActiveWindow.ScrollRow = 125 ActiveWindow.ScrollRow = 126 ActiveWindow.ScrollRow = 127 ActiveWindow.ScrollRow = 128 ActiveWindow.ScrollRow = 129 ActiveWindow.ScrollR ow = 130 ActiveWindow.ScrollRow = 131 ActiveWindow.ScrollRow = 132 ActiveWindow.ScrollRow = 133 ActiveWindow.ScrollRow = 134 ActiveWindow.ScrollRow = 135 ActiveWindow.ScrollRow = 135 ActiveWindow.ScrollRow = 136 ActiveWindow.ScrollRow = 137 ActiveWindow.ScrollRow = 139 ActiveWindow.ScrollRow = 141 ActiveWindow. ScrollRow = 142 ActiveWindow.ScrollRow = 143 ActiveWindow.ScrollRow = 144 ActiveWindow.ScrollRow = 145 ActiveWindow.ScrollRow = 146 ActiveWindow.ScrollRow = 147 ActiveWindow.ScrollRow = 147 ActiveWindow.ScrollRow = 148 ActiveWindow.ScrollRow = 149 ActiveWindow.ScrollRow = 150 ActiveWindow.ScrollRow = 150 ActiveWindow.ScrollRow = 151 ActiveWindow. ScrollRow = 152 ActiveWindow.ScrollRow = 153 ActiveWindow.ScrollRow = 154 ActiveWindow.ScrollRow = 155 ActiveWindow.ScrollRow = 156 ActiveWindow.ScrollRow = 157 ActiveWindow.ScrollRow = 158 ActiveWindow.ScrollRow = 159 ActiveWindow.ScrollRow = 159 ActiveWindow.ScrollRow = 160 Range ("A194"). Vælg ActiveSheet.Paste End Sub 

Opløsning

Den fulde logik er ikke klar. Jeg har lige "ændret" din makro, så du kan forstå ændringerne (selv om hele makroen kan jeg tweaked meget).

Når du starter makroen, spørger makroen, hvilket nummer du vil søge, og indtaste faktura nummeret e; .g. 33629

Men jeg har et problem ok. du finder 33629 i ark2 og kopier hele rækken

goto sheet1 (2) og indsæt ovenstående række i rækken, hvor den første celle er A194 i det andet ark. ok så langt.

Men når du vælger et andet nummer, hvor vil du kopiere rækken i ark1 (2). dette er ikke klart.

Jeg foreslår, at du holder din originale arbejdsbog sikker, så hvor den kan hentes.

Kør derefter makroen og se om det er ok. Hvis det er ok, svar så min Qeustion med fed skrift uden ovenstående. Makroen kan stadig ændres.

I makroen har jeg lagt en enkelt apostrof i begyndelsen af ​​nogle linjer, så de ikke kan betjenes. Du kan slette disse linjer senere, når du forstår makroen

makroen på nuværende tidspunkt er

 Sub TEST () Dim j As Double j = InputBox ("indtast det ønskede nummer f.eks. 33629") 'Range ("AM5: AS5"). Vælg' ActiveCell.FormulaR1C1 = "33629" Sheets ("Sheet2"). Vælg celler .Find (Hvad: = j, LookIn: = xlFormulas, LookAt _: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNæst, MatchCase: = _ False, SearchFormat: = False) .Activate 'Rows ("6: 6" ) .Vælg 'Range ("C6"). Aktiver' Selection.Copy ActiveCell.EntireRow.Copy Worksheets ("sheet1 (2)"). Vælg Range ("A194"). PasteSpecial End Sub 

Bemærk

Tak til venkat1926 for dette tip på forummet.

Forrige Artikel Næste Artikel

Top Tips