Kopeerige reast kuni viimasele reale koos andmetega ühele lehele, kasutades Microsoft Excelis VBA -d

Anonim
  • 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 alamprogrammid kasutavad alltoodud funktsioone, makro ei tööta ilma funktsioonideta.
Sub CopyFromRow () Dim sh kui tööleht Dim DestSh kui tööleht Dim shLast nii kaua, kui kaua hämardub 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) shLast = LastRow (sh) sh.Range ( sh.Rows (3), sh.Rows (shLast)). Copy DestSh.Cells (Last + 1, 1) End if End if Next Application.ScreenUpdating = True End Sub Sub CopyFromRowValues ​​() Dim sh As Workheet Dim DestSh as Workheet Dim shVäga nii kaua, kuni hämardus kestab 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" For each sh In ThisWorkbook.Worksheets If sh.Name DestSh.Name then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) shLast = LastRow (sh) Sh.Range (sh.Rows (3), sh.Rows (shLast)) DestSh.Cells (Viimane + 1, 1). Muuda suurust (.Rows.Count, _ .Columns.Count) .Väärtus = .Väärtus Lõpp End kui End If Next Application.ScreenUpdating = True End Sub Funktsioon LastRow (sh töölehena) Vea korral Jätka järgmisel LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas , _ SearchOrder: = xlByRows, _ SearchDirection: = xlEelmine, _ MatchCase: = False). *", _ Pärast: = sh.Range (" A1 "), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Veerg viga GoTo 0 lõppfunktsiooni funktsioonilehtEksisteerib (SName nagu string, _ Valikuline ByVal WB kui töövihik) Boolean On Error Jätka järgmisena, kui WB pole midagi, siis määrake WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Name)) Lõppfunktsioon