簡體   English   中英

將范圍從多個工作表復制到一個工作表中的第一個空單元格

[英]Copy ranges from multiple worksheets into one worksheet, in first empty cell

所以我想做的如下:

我有一個工作簿,其中包含2個具有常規信息的工作表,然后是30個具有學生信息(學生人數,姓名,成績,最終工作組平均值)的工作表,然后是概述表(“ Overzicht-OSC”)。

我只想復制學生人數(在C列中)和最終工作組平均值(在L列中),然后將這些值粘貼到我的概覽表中(“ Overzicht-OSC”)。 所有工作組最多包含25名學生; 通常更少,並且每組的數量各不相同。 因此,我要在“ Overzicht-OSC”中粘貼第一組(在工作表3中)的編號,然后在該信息下粘貼第二組(在工作表4中)的編號,以此類推。在最終概述中,只會是學生人數和成績,跳過空白單元格。

我為此編寫了以下代碼:

Sub Overview()

Dim I As Integer
Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
Dim currentRowValue As String

For I = 3 To 32

    Range("B8:B34,L8:L34").Copy
    Sheets("Overzicht-OSC").Select

        sourceCol = 1
        rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row

        For currentRow = 1 To rowCount
            currentRowValue = Cells(currentRow, sourceCol).Value
            If IsEmpty(currentRowValue) Then
                Cells(currentRow, sourceCol).Select
                Exit For
            End If
        Next

    ActiveCell.PasteSpecial Paste:=xlPasteValues

Next I

End Sub

但這行不通! 我不斷收到各種錯誤消息。 使用上述版本,我得到“ Range類的PasteSpecial方法失敗”。

當我將“ ActiveCell.PasteSpecial”更改為“ Selection.PasteSpecial”時,我得到“此選擇無效。 確保復制和粘貼區域不重疊,除非它們的大小和形狀相同。

我以前也嘗試過其他代碼:

Sub Overzicht2()

Dim I As Integer

For I = 3 To 32

    Range("C8:C34,L8:L34").Select
    Selection.Copy
    Sheets("Overzicht-OSC").Select
    Application.Goto Cells(Rows.Count, "A").End(xlUp).Offset(1), Scroll:=True
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Next I

End Sub

這不會給出錯誤消息,但是也無法正常工作。

我該如何解決?

您沒有在代碼中的任何地方引用工作表,因此不建議使用ActiveCell,因為尚不清楚哪個單元格處於活動狀態。 也許這會奏效,盡管我也很警惕使用工作表索引,因為可以輕松更改-最好使用工作表名稱或代碼名稱。

Sub Overzicht2()

Dim I As Long

For I = 3 To 32
    Sheets(I).Range("C8:C34,L8:L34").Copy
    Sheets("Overzicht-OSC").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
Next I

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM