如何复制并粘贴 ob VBA disposed as a matriz?

How do I copy and paste ob VBA disposed as a matriz?

伙计们!

我有一个卡片模板,然后我想创建打印页面,其中有 175 个,每个页面应该有 3x3 个卡片。到目前为止一切顺利,但是我遇到了错误 1004,当我将复制的单元格粘贴到新的 "row" 时,如果我可以说的话。关注代码:

Dim originalWs As Worksheet, ws As Worksheet
Dim wsRowCounter As Long, wsCollumCounter As Long, expansionSize As Long, cardRowSize As Long, cardCollumSize As Long
Dim horizontalCardsPage As Long, verticalCardsPage As Long, i As Long

Set originalWs = ActiveSheet
Set ws = Sheets.Add
wsRowCounter = 1
wsCollumCounter = 1
expansionSize = 175
cardRowSize = 13
cardCollumSize = 4
horizontalCardsPage = 3
verticalCardsPage = 3
originalWs.Activate


For i = 1 To expansionSize

    originalWs.Range("C14") = i
    originalWs.Range("B2:E14").Select
    Selection.Copy
    ws.Activate

    If wsCollumCounter >= (cardCollumSize * horizontalCardsPage) Then
        wsRowCounter = wsRowCounter + cardRowSize
        ws.Rows(((wsRowCounter - 1) * verticalCardsPage) + 1).PageBreak = xlPageBreakManual
        wsCollumCounter = 1
    End If

    ws.Cells(wsRowCounter, wsCollumCounter).Activate
    ActiveSheet.Paste
    wsCollumCounter = wsCollumCounter + cardCollumSize
    originalWs.Activate
Next i

我不是 100% 确定这会解决问题,但它确实有助于消除一些歧义和诸如此类的东西:

Dim originalWs As Worksheet, ws As Worksheet
Dim wsRowCounter As Long, wsCollumCounter As Long, expansionSize As Long, cardRowSize As Long, cardCollumSize As Long
Dim horizontalCardsPage As Long, verticalCardsPage As Long, i As Long

Set originalWs = ActiveSheet
Set ws = Sheets.Add
wsRowCounter = 1
wsCollumCounter = 1
expansionSize = 175
cardRowSize = 13
cardCollumSize = 4
horizontalCardsPage = 3
verticalCardsPage = 3

For i = 1 To expansionSize

    originalWs.Range("C14") = i

    If wsCollumCounter >= (cardCollumSize * horizontalCardsPage) Then
        wsRowCounter = wsRowCounter + cardRowSize
        ws.Rows(((wsRowCounter - 1) * verticalCardsPage) + 1).PageBreak = xlPageBreakManual
        wsCollumCounter = 1
    End If  

    'perform the copy/paste in one line:
    originalWs.Range("B2:E14").Copy Destination:=ws.Cells(wsRowCounter, wsCollumCounter)    

    wsCollumCounter = wsCollumCounter + cardCollumSize    
Next i