2017-09-07 41 views
2

我有一張工作簿和多張工作表,每張工作表中我需要將相同的行內容複製到我的主列表中。我有一個代碼在每張表中獲得一個單元格值(這是N7)給我的主人,VBA代碼使用工作簿中所有工作表上的for循環來選擇變量內容?

問題是,在某些表單中,要進入主表格的單元格值將是一個單元格,在其他表格中,它會是兩個或更多的單元格,例如(N7 TO N11)

我應該如何將此信息傳達給我的主人? 我的當前代碼是,

Dim DataFile As String 
Workbooks.Open Filename:=Range("T3").Value 
DataFile = ActiveWorkbook.Name 
ThisWorkbook.Activate 
Range("C4").Select 
For i = 1 To Workbooks(DataFile).Worksheets.Count 
ActiveCell.Value = Workbooks(DataFile).Worksheets(i).Range("N7").Value 
ActiveCell.Offset(1, 0).Select 
Next i 

請幫我解決這個問題。

+0

你如何確定有多少細胞你想要複製? –

回答

1

下應該很好地工作,只要你改變MasterFileSheetNameHere到您的工作表名稱

Option Explicit 

Sub CopyFromEachSheet() 

    Dim CurrentWorkSheet As Worksheet 
    Dim DataFile As Workbook 
    Dim DataFileLastRow As Long 
    Dim MasterFileSheet As Worksheet 
    Dim MasterFileLastRow As Long 
    Dim RangeToCopy As Range 
    Dim DataFileRowCount As Long 

    'Assuming that this scipt will be in your master file 
              'Replace with youor sheet name 
    Set MasterFileSheet = ThisWorkbook.Sheets("MasterFileSheetNameHere") 

    Set DataFile = Workbooks.Open(Filename:=MasterFileSheet.Range("T3").Value) 

    For Each CurrentWorkSheet In DataFile.Sheets 

     With MasterFileSheet 
      MasterFileLastRow = .Cells(.Rows.Count, "C").End(xlUp).Row 
     End With 

     With CurrentWorkSheet 
      DataFileLastRow = .Cells(.Rows.Count, "N").End(xlUp).Row 
     End With 

     Set RangeToCopy = CurrentWorkSheet.Range("N7:N" & DataFileLastRow) 

     'To insert rows before pasting into new rows 
     If RangeToCopy.Rows.Count > 1 Then 
      '-1 to counter the +2 below so that the additional rows are added below the first row in MasterFile 
      For DataFileRowCount = 1 To RangeToCopy.Rows.Count - 1 
       MasterFileSheet.Range("C" & MasterFileLastRow + 2).EntireRow.Insert xlDown 
      Next DataFileRowCount 
     End If 

     'Use this code to paste the values from DataFile to MasterFile 
     RangeToCopy.Copy MasterFileSheet.Range("C" & MasterFileLastRow + 1 & _ 
               ":C" & MasterFileLastRow + 1 + RangeToCopy.Rows.Count) 

     'Use this code if you want to transpose 
                '+1 here allows you to insert to the next unused line 
     'MasterFileSheet.Range("C" & MasterFileLastRow + 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _ 
                    SkipBlanks:=False, Transpose:=True 

    Next CurrentWorkSheet 

End Sub 
+0

嗨,讓..你的代碼很好用。非常感謝。我需要一個更多的幫助,在我的主人,我只分配一個單元格爲這個值(N7),它是不止一個單元格的意思,我需要在我的主人插入一行,然後下一個單元格值將在插入的行。天氣它可能與你的代碼。?如果你有時間請幫助我。 – Divya

+0

@Divya是否要複製整行或者是否希望將它複製到col N以上的數據中,然後將其粘貼到列C –

+0

好的,因此您需要將列N中的其他值轉置到行中主文件 –

0

HI迪夫亞下面的代碼可能會有所幫助到u

Sub Selectvalue() 
    Dim ws As Worksheet 

For Each ws In ActiveWorkbook.Worksheets 
Lastrow = Workbooks("Mastersheet").Sheets("sheet1").Range("C" & Rows.Count).End(xlUp).Row 
    Workbooks("Mastersheet").Sheets("sheet1").Range("C" & Lastrow).Offset(1, 0) = ws.Range("N7:N" & Cells(Rows.Count, "N").End(xlUp).Row) 
Next ws 
End Sub 
相關問題