Jak utworzyć makro do wyszukiwania, kopiowania i wklejania?

Kwestia

Oto, co chcę zrobić. Mam arkusz z danymi klienta według wiersza i mam również arkusz z fakturą, którą chcę automatycznie wypełnić informacjami o kliencie z arkusza danych.

Chciałbym zbudować makro, które wyszuka numer referencyjny, który mu powiem, i skopiować wiersz z danymi klienta do arkusza faktury, gdzie wyciągnę każde potrzebne pole na fakturę (co zrobię samodzielnie).

Zbudowałem makro, które wyszukuje numer referencyjny, wybiera wiersz i kopiuje i wkleja wiersz do innego arkusza. Mój problem polega na tym, że kiedy wprowadzam nowy numer referencyjny do mojego małego pola wyszukiwania, nadal szuka w numerze referencyjnym, w którym ustawiam makro, i odwołuje się tylko do wiersza początkowego, w którym ustawiam makro z danymi :(

Chciałbym móc powiedzieć:

Wyszukaj numer referencyjny, który skopiuję numer referencyjny i wklej go do znalezionego w innym arkuszu, a następnie nacisnę klawisz Shift, aby wybrać i skopiować dane i wkleić je do innego arkusza. Utrzymuje odniesienie do zakresów początkowych i numeru referencyjnego.

Proszę pomóż.

Oto, co mam do tej pory. Jestem trochę noobem. Wszystkie aktywne przewijanie na końcu to przewijanie i wklejanie makra pod moje faktury, aby móc później pobrać dane.

 Zakres („AM5: AS5”). Wybierz ActiveCell.FormulaR1C1 = „33629” Arkusze („Arkusz2”). Wybierz Cells.Find (Co: = „33629”, Po: = ActiveCell, LookIn: = xlFormulas, LookAt _: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, MatchCase: = _ False, SearchFormat: = False). Aktywuj wiersze („6: 6”). Wybierz Range („C6”). Aktywuj Selection.Copy Sheets („Sheet1 (2) "). Wybierz ActiveWindow.SmallScroll Down: = 12 ActiveWindow.ScrollRow = 14 ActiveWindow.ScrollRow = 15 ActiveWindow.ScrollRow = 16 ActiveWindow.ScrollRow = 17 ActiveWindow.ScrollRow = 18 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 = 27 ActiveWindow.ScrollRow = 29 ActiveWindow.ScrollRow = 31 ActiveWindow.ScrollRow = 32 ActiveWindow .ScrollRow = 33 ActiveWindow.ScrollRow = 36 ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollRow = 40 ActiveWindow.ScrollRow = 42 Akt iveWindow.ScrollRow = 45 ActiveWindow.ScrollRow = 47 ActiveWindow.ScrollRow = 49 ActiveWindow.ScrollRow = 51 ActiveWindow.ScrollRow = 53 ActiveWindow.ScrollRow = 54 ActiveWindow.ScrollRow = 55 ActiveWindow.ScrollRow = 56 ActiveWindow.ScrollRow = 57 ActiveWindow.ScrollRow = 58 ActiveWindow.ScrollRow = 59 ActiveWindow.ScrollRow = 60 ActiveWindow.ScrollRow = 61 ActiveWindow.ScrollRow = 62 ActiveWindow.ScrollRow = 63 ActiveWindow.ScrollRow = 64 ActiveWindow.ScrollRow = 65 ActiveWindow.ScrollRow = 67 ActiveWindow.ScrollRow = 68 ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollRow = 70 ActiveWindow.ScrollRow = 71 ActiveWindow.ScrollRow = 72 ActiveWindow.ScrollRow = 73 ActiveWindow.ScrollRow = 74 ActiveWindow.ScrollRow = 75 ActiveWindow.ScrollRow = 76 ActiveWindow.ScrollRow = 77 ActiveWindow.ScrollRow = 78 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 = 89 ActiveWindow.ScrollRow = 90 ActiveWindow.ScrollRow = 91 ActiveWindow.ScrollRow = 93 ActiveWindow.ScrollRow = 94 ActiveWindow.ScrollRow = 95 ActiveWindow.ScrollRow = 96 ActiveWindow.ScrollRow = 97 ActiveWindow.ScrollRow = 98 ActiveWindow.ScrollRow = 99 ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 101 ActiveWindow.ScrollRow = 102 ActiveWindow.ScrollRow = 104 ActiveWindow.ScrollRow = 106 ActiveWindow.ScrollRow = 107 ActiveWindow.ScrollRow = 109 ActiveWindow.ScrollRow = 111 ActiveWindow.ScrollRow = 112 ActiveWindow.ScrollRow = 113 ActiveWindow.ScrollRow = 114 ActiveWindow.ScrollRow = 115 ActiveWindow.ScrollRow = 117 ActiveWindow.ScrollRow = 118 ActiveWindow.ScrollRow = 119 ActiveWindow.ScrollRow = 120 ActiveWindow.ScrollRow = 122 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 = 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 = 148 ActiveWindow.ScrollRow = 149 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 = 160 Zakres („A194”). Wybierz ActiveSheet.Paste End Sub 

Rozwiązanie

Pełna logika nie jest jasna. Właśnie „zmodyfikowałem” twoje makro, abyś mógł zrozumieć zmiany (choć całe makro może mnie znacznie poprawić).

po uruchomieniu makra makro zapyta, jaki numer chcesz wyszukać, wpisz numer faktury e; .g. 33629

Ale mam jeden problem w porządku. znajdziesz 33629 w arkuszu2 i skopiuj cały wiersz

goto sheet1 (2) i wklej powyższy wiersz w wierszu, w którym pierwsza komórka to A194 w drugim arkuszu. ok do tej pory.

Ale gdy wybierzesz inny numer, gdzie chcesz skopiować wiersz w arkuszu1 (2). to nie jest jasne.

Sugeruję, aby zachować swój oryginalny skoroszyt w bezpiecznym miejscu, gdzie można go odzyskać.

następnie uruchom makro i sprawdź, czy jest w porządku. jeśli jest OK, odpowiedz pogrubioną czcionką pogrubioną powyżej. makro może być jeszcze bardziej zmodyfikowane.

W makrze umieściłem pojedynczy apostrof na początku niektórych wierszy, aby nie mogły działać. Możesz usunąć te linie później, gdy zrozumiesz makro

makro na obecnym etapie jest

 Sub TEST () Dim j As Double j = InputBox („wpisz żądaną liczbę, np. 33629”) ”Zakres („ AM5: AS5 ”). Wybierz„ ActiveCell.FormulaR1C1 = ”33629” Arkusze („Arkusz2”). Wybierz komórki .Find (Co: = j, LookIn: = xlFormulas, LookAt _: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, MatchCase: = _ False, SearchFormat: = False) .Activate 'Rows ("6: 6" ) .Wybierz „Zakres („ C6 ”). Aktywuj„ Selection.Copy ActiveCell.EntireRow.Copy Worksheets ”(„ arkusz1 (2) ”). Wybierz zakres („ A194 ”). PasteSpecial End Sub 

Uwaga

Podziękowania dla venkat1926 za tę poradę na forum.

Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki