Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-复制到其他图纸_Excel_Vba_Copy Paste - Fatal编程技术网

Excel VBA-复制到其他图纸

Excel VBA-复制到其他图纸,excel,vba,copy-paste,Excel,Vba,Copy Paste,我有这段代码,是一位昨天帮助我定义需求的响应者编写的-但是有些事情我想更改,但是我的vba技能非常低,不知道如何以及在哪里修改代码。我想让它做两件事 好的,我知道它传输数据,我希望它复制数据,以及在单元格中计算的值。我有一些细胞,在那里我有一些公式,它的剂量如下。我只想把计算出来的值加起来。我不知道我是否可以在某处使用xlPasteValues来获得我想要的东西 我想做的第二件事是,当复制结束时,我想在顶部,之前的副本向下移动,所以最新的副本总是在顶部 在交给你之前谢谢你:) 请试试这个 St

我有这段代码,是一位昨天帮助我定义需求的响应者编写的-但是有些事情我想更改,但是我的vba技能非常低,不知道如何以及在哪里修改代码。我想让它做两件事

  • 好的,我知道它传输数据,我希望它复制数据,以及在单元格中计算的值。我有一些细胞,在那里我有一些公式,它的剂量如下。我只想把计算出来的值加起来。我不知道我是否可以在某处使用
    xlPasteValues
    来获得我想要的东西

  • 我想做的第二件事是,当复制结束时,我想在顶部,之前的副本向下移动,所以最新的副本总是在顶部
  • 在交给你之前谢谢你:)


    请试试这个

    StartRow变量定义targetSheet上的目标行,您可以根据需要更改它

    Sub Copypastemeddata()
        Dim wb As Workbook
        Dim ws As Worksheet
        Dim sourceCell As Range
        Dim targetSheet As Worksheet
        Dim StartRow As Integer
    
        Application.ScreenUpdating = False
    
        Set wb = ThisWorkbook
        Set ws = wb.Worksheets("Opgørsel")
    
        Set sourceCell = ws.Range("D3")  'Cell with sheet names for copying to
        StartRow = 1    'Destination row on targetSheet
        With ws
              Set targetSheet = wb.Worksheets(sourceCell.Text)
             .Range("A1").CurrentRegion.Copy
             targetSheet.Range("A" & StartRow).Insert shift:=xlDown
             targetSheet.Range("A" & StartRow).PasteSpecial xlPasteValues
             targetSheet.Columns.AutoFit
        End With
        Application.CutCopyMode = 0
        Application.ScreenUpdating = True
    End Sub
    
    替代品

          Dim nextRow As Long
          nextRow = GetLastRow(targetSheet, 1)
          nextRow = IIf(nextRow = 1, 1, nextRow + 1)
    
         .Range("A1").CurrentRegion.Copy targetSheet.Range("A" & nextRow)
    


    非常感谢您,先生,这当然是我想要的:)@MzBarcaaa不客气!很高兴它能按预期工作。:)@MzBarcaaa您首先选择它作为接受答案,然后将其删除。有什么原因吗?我想,我可以投票给他们两个-我用了你的,并且非常高兴-谢谢你,我现在已经改变了:)谢谢!否则我就糊涂了。LoFrest-@ Sktnne回答为“接受”,但考虑使用此代码,因为它不使用剪贴板(如<代码> CopyTo()>代码>方法,因此需要<代码> Aptudio.CutCopyMead=0 THOST),这可能是您稍后会尝试避免的一些东西,但是我知道我用的那个很好用,所以我敢打赌,可能会有一些错误:D
          Dim nextRow As Long
          nextRow = GetLastRow(targetSheet, 1)
          nextRow = IIf(nextRow = 1, 1, nextRow + 1)
    
         .Range("A1").CurrentRegion.Copy targetSheet.Range("A" & nextRow)
    
        With .Range("A1").CurrentRegion
            targetSheet.Rows(1).Resize(.Rows.Count).Insert shift:=xlUp
            targetSheet.Range("A1").Resize(.Rows.Count, .Columns.Count).Value = .Value
        End With