Copia una riga o righe di ogni foglio in un foglio usando VBA in Microsoft Excel

Anonim
  • La macro aggiungerà un foglio con il nome Master alla cartella di lavoro e copierà le celle da ogni foglio della cartella di lavoro in questo foglio di lavoro.
  • La prima macro esegue una copia normale e la seconda macro copia i valori.
  • I sottotitoli della macro utilizzano le funzioni seguenti, le macro non funzioneranno senza le funzioni.

Usa questo sh.Rows("1:4").Copia per copiare più di una riga.

Sub Test4() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists("Master") = True Then MsgBox "Il foglio Master esiste già" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" per ogni sh in ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count > 1 Then Last = LastRow(DestSh) sh.Rows("1").Copy DestSh.Cells( Last + 1, 1) End If End If Next Application.ScreenUpdating = True End Sub Test4_Values() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists ("Master") = True Then MsgBox "Il foglio principale è già esiste" Exit Sub End If Application.ScreenUpdating = False Imposta DestSh = Worksheets.Add DestSh.Name = "Master" Per ogni 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 As Worksheet) On Error Resume Next LastRow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function Function Lastcol(sh As Worksheet) On Error Resume Next Lastcol = sh.Cells.Find (What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False ).Column On Error GoTo 0 End Function Function SheetExists(SName As String, _ Optional ByVal WB As Workbook) As Boolean On Error Riprendi successivo se WB non è nulla Quindi imposta WB = ThisWorkbook SheetExists = CBool(Len(Sheets(SName).Name )) Fine funzione