Kopier en rad eller rader av hvert ark til ett ark ved hjelp av VBA i Microsoft Excel

Anonim
  • Makroen legger til et ark med navnet Master i arbeidsboken din og kopierer cellene fra hvert ark i arbeidsboken i dette regnearket.
  • Den første makroen gjør en normal kopi og den andre makroen kopierer verdiene.
  • Makroens subs bruker funksjonene nedenfor, makroene fungerer ikke uten funksjonene.

Bruk denne sh.Rows ("1: 4"). Kopier for å kopiere mer enn én rad.

Sub Test4 () Dim sh Som regneark Dim DestSh Som regneark Dim varer så lenge SheetExists ("Master") = True Da er MsgBox "Sheet Master allerede" Avslutt Sub End Hvis Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" for hver sh i ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) sh.Rows ("1"). Kopier DestSh.Cells ( Siste + 1, 1) End If End If Next Application.ScreenUpdating = True End Sub Sub Test4_Values ​​() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long SheetExists ("Master") = True Then MsgBox "Sheet Master allerede exist "Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name =" Master "For Every sh In ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) With sh.Rows ("1") DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Value End With End If End If Next Application .Scree nUpdating = True End Sub Function LastRow (sh Som regneark) På feil Gjenoppta Neste LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Read On Error GoTo 0 Slutt Funksjon Funksjon Lastcol (sh Som regneark) På Feil Fortsett Neste Lastcol = sh.Cells.Find (Hva: = "*", _ Etter: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = False ) .Kolonne ved feil Gå til 0 Avslutt funksjon Funksjon SheetExists (SName As String, _ Valgfritt ByVal WB Som arbeidsbok) Som Boolean på Error Resume Next Hvis WB ikke er noe så sett WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Name. )) Sluttfunksjon