Kopeerige iga lehe UsedRange ühele lehele, kasutades Microsoft Excelis VBA -d

Anonim

Kui soovite kopeerida iga töölehe kasutatud vahemiku põhilehele, peaksite seda artiklit lugema. Kasutame VBA koodi, et kopeerida andmed igalt töölehelt ja kleepida seejärel teisele lehele ilma ülekirjutamata.

Makro lisab teie töövihikusse lehe nimega Master ja kopeerib lahtrid selle töölehe iga töövihiku lehelt.

Esimene makro teeb tavalise koopia ja teine ​​makro kopeerib väärtused. Makro alamosad kasutavad alltoodud funktsioone; makro ei tööta ilma funktsioonideta.

Järgnevalt on toodud hetktõmmis lehtedelt 1 ja 2:

VB redaktori käivitamiseks peame järgima järgmisi samme:

  • Klõpsake vahekaarti Arendaja
  • Valige koodirühmas Visual Basic

  • Kopeerige allolev kood standardmoodulisse
Sub CopyUsedRange () Dim sh kui tööleht Dim DestSh kui tööleht Dim viimati nii kaua kui SheetExists ("Master") = True Siis MsgBox "Lehe kapten on juba olemas" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" Iga sh jaoks selles töövihikus. Töölehed Kui sh.Name DestSh.Name Siis kui sh.UsedRange.Count> 1 Siis Last = LastRow (DestSh) sh.UsedRange.Copy DestSh.Cells (Viimane + 1, 1 ) Lõpeta, kui lõpp, kui järgmine rakendus.ScreenUpdating = Tõeline lõpp Alam alamkoopia CopyUsedRangeValues ​​() Dim sh kui tööleht Dim DestSh kui tööleht Dim viimati nii kaua, kui SheetExists ("Master") = True Siis MsgBox "Lehe kapten on juba olemas" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Töölehed.Add DestSh.Name = "Master" Iga sh jaoks käesolevas töövihikus. Töölehed Kui sh.Name DestSh.Name Siis kui sh.UsedRange.Count> 1 Siis Last = LastRow (DestSh) sh.UsedRange DestSh.Cells (viimane + 1, 1). Suuruse muutmine (.Rows.Count, _ .Columns.Count) .Väärtus = .Väärtus End End kui End If Next Ap plication.ScreenUpdating = Tõelise lõpu alamfunktsioon LastRow (sh töölehena) Tõrke korral Jätka järgmisel LastRow = sh.Cells.Find (Mis: = "*", _ Pärast: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = Väär). .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlEelmine, _ MatchCase: = Väär). Veerg vea kohta GoTo 0 Lõppfunktsiooni funktsioonilehtEksisteerib (SName kui string, _ Valikuline ByVal WB töövihikuna) Boolean On Error Jätka järgmisena, kui WB pole midagi, siis määrake WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Nimi)) Lõppfunktsioon 

Nüüd on makrokood seatud; käivitame makro “CopyUsedRange” ja see lisab uue lehe “Master” ja kopeerib andmed igalt lehelt.

Järeldus:Andmete kopeerimine mitmelt lehelt on käsitsi; Kuid; ülaltoodud koodiga saame andmed koondada ühe klõpsuga makrole.

Kui teile meeldisid meie ajaveebid, jagage seda oma sõpradega Facebookis. Samuti saate meid jälgida Twitteris ja Facebookis.

Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd täiustada, täiendada või uuendada ning muuta see teie jaoks paremaks. Kirjuta meile meilisaidile