Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
在VBA中计算、复制并粘贴到给定值_Vba_Excel_Copy_Paste - Fatal编程技术网

在VBA中计算、复制并粘贴到给定值

在VBA中计算、复制并粘贴到给定值,vba,excel,copy,paste,Vba,Excel,Copy,Paste,我对VBA相当陌生。我正试图根据单元格“E2”中指定的迭代次数自动执行迭代。我希望excel将A列从单元格“A4”自动填充到单元格“E2”的值,例如,如果E2=100,excel将自动填充序列1、2、3…到100 然后,我希望excel继续计算单元格“B2”的值,然后将每个结果复制并粘贴到B列,从“B4”开始,在迭代“E2”的值处停止 我有“自动填充”的以下代码 我已录制了以下用于复制粘贴的宏 Sub Macro10() Application.CutCopyMode = False C

我对VBA相当陌生。我正试图根据单元格“E2”中指定的迭代次数自动执行迭代。我希望excel将A列从单元格“A4”自动填充到单元格“E2”的值,例如,如果E2=100,excel将自动填充序列1、2、3…到100

然后,我希望excel继续计算单元格“B2”的值,然后将每个结果复制并粘贴到B列,从“B4”开始,在迭代“E2”的值处停止

我有“自动填充”的以下代码

我已录制了以下用于复制粘贴的宏

   Sub Macro10()

Application.CutCopyMode = False
Calculate
Range("B2").Select
Selection.Copy
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Application.CutCopyMode = False
Calculate
Range("B2").Select
Selection.Copy
Range("B5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Application.CutCopyMode = False
Calculate
Range("B2").Select
Selection.Copy
Range("B6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Application.CutCopyMode = False
Calculate
Range("B2").Select
Selection.Copy
Range("B7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

做这件事最简单的方法是什么?

为下一个循环创建一个好的
。请参阅下面的代码。我根据您上面所写的内容对一些范围引用进行了一些猜测,但是您应该能够轻松地修改它以满足您的需要

Sub Monte3()

Dim srcRange As Range, cel As Range
Dim wks As Worksheet

Set wks = Sheets("Sheet1") 'replace Sheet1 with your sheet name

With wks

    .Range("B5:B1000000").ClearContents
    Set srcRange = .Range("B4:B" & .Range("E2").Value + 4) 'will plug the number in from E2 as the row and adds 4 since you are starting at row 4

    For Each cel In srcRange

        With .Range("B2")
            .Calculate
            .Copy
        End With

        cel.PasteSpecial xlPasteValues

    Next

End With

End Sub

谢谢你,斯科特。效果很好
Sub Monte3()

Dim srcRange As Range, cel As Range
Dim wks As Worksheet

Set wks = Sheets("Sheet1") 'replace Sheet1 with your sheet name

With wks

    .Range("B5:B1000000").ClearContents
    Set srcRange = .Range("B4:B" & .Range("E2").Value + 4) 'will plug the number in from E2 as the row and adds 4 since you are starting at row 4

    For Each cel In srcRange

        With .Range("B2")
            .Calculate
            .Copy
        End With

        cel.PasteSpecial xlPasteValues

    Next

End With

End Sub