首页 文章

Excel复制范围和粘贴在特定范围内可用并打印

提问于
浏览
0

我想在一张纸上复制一个范围并将其粘贴为另一张纸中的值,但只是在B列中下一个可用单元格的特定范围内 . 仅从B4到B23 .

我改变了一些我在网上找到的代码,但是找不到下一行可能不适合我 . 在我第一次运行宏之后,当我一次又一次地运行它时,它什么都不做,而且它也不能仅粘贴值 .

我尝试在再次运行宏之前保存文件,但它仍然无法正常工作 .

最后,当打印页中的范围已满时,我想要一个消息框,要求我在我的一台服务器上选择一台打印机(不是默认设置)(在代码中指定服务器路径,如\ a_server_name)并打印此打印页,或清除打印页范围内的记录,或仅将新打印的文件(SaveAs)保存到我可以在其中一台服务器上选择的位置(指定服务器路径) code \ a_server_name)或者什么也不做,结束sub .

谢谢 .

Application.ScreenUpdating = False
Dim copySheet As Worksheet
Dim pasteSheet As Worksheet

Set copySheet = Worksheets(“Data”)
Set pasteSheet = Worksheets("Print”)

copySheet.Range("J11:Q11").Copy
pasteSheet.Range("B4:I23").End(xlUp).Offset(1,0)
.PasteSpecial.xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True

enter image description here

enter image description here

Problem Screenshot

2 回答

  • 0

    根据我可以收集的内容,您希望复制8个单元格并将所有8个单元格粘贴到20行,从B4开始 . 您不清楚如何重新运行宏,它只会写入您刚刚粘贴的数据 .

    第一个代码将8个单元格复制到20行中

    With ThisWorkbook
            Sheets("Data").Range("J11:Q11").Copy
            Sheets("Print").Range("B4:I23").PasteSpecial Paste:=xlPasteValues
    End With
    

    第二个代码使用for循环来启动相同的任务,但它也会覆盖以前粘贴的数据 .

    Dim i As Long
        With ThisWorkbook
            For i = 4 To 23
                Sheets("Data").Range("J11:Q11").Copy
                Sheets("Print").Cells(i, 2).PasteSpecial Paste:=xlPasteValues
            Next i
        End With
    

    如果您希望能够重用宏,则必须修改要复制的范围,以便选择要复制的范围 . 也许是一个允许用户输入 InputBox 的变量 .

    编辑:

    Dim lRow As Long
    lRow = Sheets("Print").Cells(Rows.Count, 2).End(xlUp).Row
    
        With ThisWorkbook
                Sheets("Data").Range("J11:Q11").Copy
                Sheets("Print").Cells(lRow, 2).Offset(1).PasteSpecial Paste:=xlPasteValues
        End With
    

    编辑#3

    With ThisWorkbook
        Dim lRow As Long
        lRow = .Sheets("Print").Range("B" & Rows.Count).End(xlUp).Row
            Sheets("Data").Range("J11:Q11").Copy
            Sheets("Print").Cells(lRow, 2).Offset(1).PasteSpecial Paste:=xlPasteValues
    End With
    
  • 1

    这将设置彼此相等的值而不复制/粘贴 .

    Option Explicit
    
    Sub Testing()
    
    Dim wsC As Worksheet: Set wsC = ThisWorkbook.Sheets("Data")
    Dim wsP As Worksheet: Set wsP = ThisWorkbook.Sheets("Print")
    
    Dim LRow As Long
    LRow = wsP.Range("B" & wsP.Rows.Count).End(xlUp).Offset(1).Row
    
    wsP.Range("B" & LRow).Resize(wsC.Range("J11:Q11").Rows.Count, wsC.Range("J11:Q11").Columns.Count).Value = wsC.Range("J11:Q11").Value
    
    End Sub
    

    修改你的代码 - 并减少到最小的例子

    Sub test()
    
    Dim copySheet As Worksheet: Set copySheet = Worksheets("Data")
    Dim pasteSheet As Worksheet: Set pasteSheet = Worksheets("Print")
    
    copySheet.Range("J11:Q11").Copy
    pasteSheet.Range("B" & pasteSheet.Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
    
    End Sub
    

相关问题