Kopier fra rad til siste rad med data 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.
Sub CopyFromRow () Dim sh As Worksheet Dim DestSh As Worksheet Dim shLast As Long 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) 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 Worksheet Dim DestSh As Worksheet Dim shLast As Long Dim Last As Long If SheetExists ("Master") = True Then MsgBox "Sheet Master exist exist" Exit Sub End If 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) shLast = LastRow (sh) With sh.Range (sh.Rows (3), sh.Rows (shLast)) DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Value End With End If End If Next If Next Application.ScreenUpdating = True End Sub Funksjon LastRow (sh Som regneark) Ved feil Gjenoppta Neste LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas , _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Rad på feil Gå til 0 Avslutt funksjon Funksjon Lastcol (sh Som regneark) På feil Resume Next Lastcol = sh.Cells.Find (What: = " *", _ After: = sh.Range (" A1 "), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Column On Error Gå til 0 Avslutt funksjon Funksjon SheetExists (SName As String, _ Valgfritt ByVal WB Som arbeidsbok) Som Boolean On Error Resume Next If WB is Nothing Then Set WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Name)) End Function