如何复制和粘贴作为matriz处理的ob VBA?

问题描述 投票:0回答:1

伙计们!

我有一张卡的模板,然后我想创建打印页面,其中175个,每页应该有3x3卡。到目前为止一切都那么好,但是如果我可以说,当我将复制的单元格粘贴到新的“行”时,我有错误1004。遵循以下代码:

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
excel vba excel-vba paste
1个回答
0
投票

我不是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
© www.soinside.com 2019 - 2024. All rights reserved.