Arama, Kopyalama ve Yapıştırma Makroları Nasıl Oluşturulur?

Konu

İşte yapmak istediğim şey. Müşteri verilerini satır satır içeren bir çalışma sayfam var ve ayrıca veri çalışma sayfasındaki müşteri bilgileri ile otomatik olarak doldurmak istediğim faturalı bir çalışma sayfam var.

Söylediğim referans numarasını arayacak bir makro oluşturmak ve müşteri verilerini içeren satırı, her gerekli alanı faturaya çekeceğim (kendi başıma yapacağım) fatura çalışma sayfasına kopyalamak istiyorum.

Referans numarasını arayan, satırı seçen ve satırı kopyalayıp diğer çalışma sayfasına yapıştıran bir makro oluşturdum. Benim sorunum, küçük arama kutuma yeni bir referans numarası koymaya gittiğimde, hala makroyu ayarladığım referans numarasını araştırmasını sağladım ve yalnızca makroyu withs verdiğim başlangıç ​​satırına atıfta bulundum :(

Keşke şunu söyleyebilseydim:

Referans numarasını kopyalayıp, diğer çalışma sayfasında bulunanları içine yapıştırdığım bir referans numarası arayın ve ardından verileri seçmek ve kopyalamak ve diğer çalışma sayfasına yapıştırmak için vardiya alanına basıyorum. Başlangıç ​​aralıklarına ve referans numarasına atıfta bulunur.

Lütfen yardım et.

İşte şimdiye kadar sahip olduğum şey. Ben bir tür noobum. Sonunda aktif olan tüm kaydırma, makroyu faturalarımın altına kaydırıp yapıştırmam, böylece verileri daha sonra alabiliyorum.

 Aralık ("AM5: AS5"). ActiveCell.FormulaR1C1 = "33629" Sayfalar ("Sayfa2") seçeneğini seçin. Hücreler Seçin (Bulun: (Ne: = "33629", Sonra: = ActiveCell, LookIn: = xlFormulas, LookAt _: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, MatchCase: = _ False, SearchFormat: = False). Satırları Etkinleştir ("6: 6"). Aralığı Seçin ("C6"). (2) "). ActiveWindow.SmallScroll Down öğesini seçin: = 12 ActiveWindow.ScrollRow = 14 ActiveWindow.ScrollRow = 15 ActiveWindow.ScrollRow = 16 ActiveWindow.ScrollRow = 17 ActiveWindow.ScrollRow = 20 ActiveWindow.ScrollRow = 19 ActiveWindow.ScrollRow = 20 .ScrollRow = 21 ActiveWindow.ScrollRow = 22 ActiveWindow.ScrollRow = 23 ActiveWindow.ScrollRow = 24 ActiveWindow.ScrollRow = 25 Etkin olarak ActiveWindow.ScrollRow = 26 ActiveWindow.ScrollRow = 27 ActiveWindow.ScrollRow = 29 ActiveWindow.ScrollRow = 27 ActiveWindow.ScrollRow = 29 .ScrollRow = 33 ActiveWindow.ScrollRow = 36 ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollRow = 40 ActiveWindow.ScrollRow = 38 Etkinliği 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 = 55 ActiveWindow.ScrollRow = 56 ActiveWindow.ScrollRow = 55 Etkinleştirici ActiveWindow.ScrollRow = 59 ActiveWindow.ScrollRow = 60 ActiveWindow.ScrollRow = 61 ActiveWindow.ScrollRow = 62 ActiveWindow.ScrollRow = 63 ActiveWindow.ScrollRow = 64 ActiveWindow.ScrollRow = 65 ActiveWindow.ScrollRow = 64 AktifWindow.ScrollRow = 65 ActiveWindow.ScrollRow = 70 ActiveWindow.ScrollRow = 71 ActiveWindow.ScrollRow = 72 ActiveWindow.ScrollRow = 73 ActiveWindow.ScrollRow = 74 Etkinleştirici ActiveWindow.ScrollRow = 75 ActiveWindow.ScrollRow = 76 ActiveWindow.ScrollRow = 75 ActiveWindow.ScrollRow = 76 ActiveWindow.ScrollRow = 80 ActiveWindow.ScrollRow = 82 ActiveWindow.ScrollRow = 83 ActiveWindow.ScrollRow = 84 ActiveWindow.ScrollRow = 85 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 = 95 Etkinleştirilmeli = 98 ActiveWindow.ScrollRow = 99 ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 101 ActiveWindow.ScrollRow = 102 ActiveWindow.ScrollRow = 104 ActiveWindow.ScrollRow = 106 ActiveWindow.ScrollRow = 107 ActiveWindow.ScrollRow = 106 EtkinWindow.ScrollRow = 107 = 112 ActiveWindow.ScrollRow = 113 ActiveWindow.ScrollRow = 114 ActiveWindow.ScrollRow = 115 ActiveWindow.ScrollRow = 117 ActiveWindow.ScrollRow = 118 ActiveWindow.ScrollRow = 119 ActiveWindow.ScrollRow = 120 ActiveWindow.ScrollRow = 119 AktifWindow.ScrollRow = 120 = 125 ActiveWindow.ScrollRow = 126 ActiveWindow.ScrollRow = 127 ActiveWindow.ScrollRow = 128 ActiveWindow.ScrollRow = 129 EtkinWindow.ScrollRow = 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 = 136 EtkinWindow.ScrollRow = 137 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 = 148 AktifWindow.ScrollRow = 149 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 = 158 Aralıkları ("A194"). ActiveSheet.Paste End Sub öğesini seçin. 

Çözüm

Tam mantık belli değil. Makrolarınızı "değiştirdim", böylece değişiklikleri anlayabilirsiniz (tüm makro beni çok değiştirebilse de).

Makroyu başlattığınızda makro aramak istediğiniz numarayı sorar, orada fatura numarasını girin; e; 33629

Ama bir sorunum var tamam. Sayfa 2'de 33629'u bulup tüm satırı kopyalayabilirsiniz.

Sayfa 1'e (2) gidin ve yukarıdaki satırı, ilk hücrenin ikinci sayfadaki A194 olduğu sıraya yapıştırın. tamam çok uzak.

Ancak başka bir numara seçtiğinizde, satırın sayfa 1 (2) 'de nereye kopyalanmasını istersiniz. bu açık değil.

Orijinal çalışma kitabınızı, nereden alınabileceği konusunda güvende tutmanızı öneririm.

sonra makroyu çalıştırın ve tamam olup olmadığını görün. Eğer sorun yok ise, cevaplarımı yukarıda kalın harflerle kalın yazarak cevaplayın. Makro hala daha fazla değiştirilebilir.

Makroda, bazı satırların başında çalışamayacak şekilde tek bir kesme işareti koydum. Makroyu anladıktan sonra bu satırları daha sonra silebilirsiniz.

Mevcut aşamada makro

 Alt TEST () Dim j As Double j = InputBox ("istediğiniz sayıyı yazın, örneğin 33629") 'Aralık ("AM5: AS5").' ActiveCell.FormulaR1C1 = "33629" Sayfaları ("Sayfa2") seçin. Hücreler Seç .Find (Ne: = j, LookIn: = xlFormulas, LookAt _: = xlPart, SearchOrder: = xlByRows, SearchDirection: = xlNext, MatchCase: = _ Yanlış, SearchFirmat: = xlNext, MatchCase: = _ False, SearchFormat: = False) .Activate 'Rows ("6: 6" ) 'Range ("C6") seçeneğini seçin. "Selection.Copy ActiveCell.EntireRow.Copy Çalışma Sayfalarını (" sayfa1 (2) ") etkinleştirin. Aralık Seçin (" A194 "). PasteSpecial End Sub 

Not

Forumdaki bu ipucu için venkat1926'ya teşekkür ederiz.

Önceki Makale Sonraki Makale

En Ipuçları