使用宏取消行

时间:2017-08-30 08:55:51

标签: excel vba

我在设置宏方面遇到了问题。让我试着解释一下: 我有两张纸,在sheet1中我有纯数据,在sheet2中我有一个宏,可以通过使用某些单元格中给出的尺寸来计算可以放入某个容器的件数。正如我所说,我在sheet1中获得了一个纯数据,其中包含一个盒号,它的宽度,长度是要包装的容器号以及容器的宽度和长度。现在我想要的是我希望宏从sheet1复制dims,将它们放在sheet2中的特定单元格中,运行计算宏,用结果复制单元格,将其粘贴到sheet1中并继续下一行直到那里& #39;其旁边的列中没有数据。

这是我迄今为止所做的,但我不知道如何为下一行循环它。我认为选择单元格可能会使这成为可能,而不是按名称指定单元格。任何帮助将不胜感激。

Sub AutoCalculating()

    Sheets("Sheet1").Select
    Range("A2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet2").Select
    Range("B2").Select
    ActiveSheet.Paste
    Sheets("Sheet1").Select
    Range("B2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet2").Select
    Range("B3").Select
    ActiveSheet.Paste
    Sheets("Sheet1").Select
    Range("D2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet2").Select
    Range("B4").Select
    ActiveSheet.Paste
    Sheets("Sheet1").Select
    Range("E2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet2").Select
    Range("B5").Select
    ActiveSheet.Paste


    Call CalculateBoxes


    Range("B6").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Range("F2").Select
    ActiveSheet.Paste

End Sub

`

1 个答案:

答案 0 :(得分:0)

找到解决方案,我通过偏移而不是通过命名单元格完成代码,然后将其循环,直到它在下一行中找到空单元格。如果有人像我这样的事情会挣扎,那么这就是代码。你只需要确保在播放这个宏之前我们需要激活数据旁边第一个空列中的第一个单元格

Sub AutoCalc2()

Do
ActiveCell.Offset(0, -1).Select

If IsEmpty(ActiveCell) Then

Exit Do

Else

ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, -5).Copy
    Sheets("Sheet2").Select
        Range("B2").Select
        ActiveSheet.Paste
        Sheets("Sheet1").Select
        'Copy 1st cell which is +5 cells to the left next to the acive

ActiveCell.Offset(0, -4).Copy
    Sheets("Sheet2").Select
        Range("B3").Select
        ActiveSheet.Paste
        Sheets("Sheet1").Select
        'Copy 2nd cell which is +4 Cells to the left next to the acive

ActiveCell.Offset(0, -2).Copy
    Sheets("Sheet2").Select
        Range("B4").Select
        ActiveSheet.Paste
        Sheets("Sheet1").Select
        'Copy 3rd cell which is +2 cells to the left next to the acive

ActiveCell.Offset(0, -1).Copy
    Sheets("Sheet2").Select
        Range("B5").Select
        ActiveSheet.Paste
        Sheets("Sheet1").Select
        'Copy 4th cell which is +1 cells to the left next to the acive

     Call CalculateBoxes
     'Call your macro

Sheets("Sheet2").Select
Range("B6").Select
ActiveCell.Copy
Sheets("Sheet1").Select
ActiveCell.PasteSpecial
ActiveCell.Offset(1, 0).Select 'selects next cell to be active so it won't make it lasts forever block on first cell
End If
Loop


End Sub