Excel VBA在代码编辑器中按预期运行,但不在excel中运行

时间:2017-05-31 10:23:27

标签: excel excel-vba code-editor vba

我有一个代码需要从一张纸上复制数据范围,将其粘贴到另一张纸上,然后将其删除。当我通过excel的VBA代码编辑器运行代码时,它按预期工作,但是,当我使用表单按钮在电子表格中运行代码时,它总是错过最后一列。如果我增加范围中的列并不重要,它总是比需要的列少一列。我的代码示例在

之下
        'Copy Rebar Data
    If RebarRowNumStart <> 0 And RebarRowNumEnd <> 0 Then
    Worksheets("Temp-Data").Range("A" & RebarRowNumStart & ":I" & RebarRowNumEnd).Copy Worksheets("Rebar-Data").Range("A4:I" & (RebarRowNumEnd - RebarRowNumStart + 4))
    End If

    If WeldsRowNumStart <> 0 And WeldsRowNumEnd <> 0 Then
    Worksheets("Temp-Data").Range("A" & WeldsRowNumStart & ":G" & WeldsRowNumEnd).Copy Worksheets("Welds-Data").Range("A4:G" & (WeldsRowNumEnd - WeldsRowNumStart + 4))
    End If

    If EarthingRowNumStart <> 0 And EarthingRowNumEnd <> 0 Then
    Worksheets("Temp-Data").Range("A" & EarthingRowNumStart & ":k" & EarthingRowNumEnd).Copy Worksheets("Earthing Bars").Range("A4:K" & (EarthingRowNumEnd - EarthingRowNumStart + 4))
    End If

    If AnchorRowNumStart <> 0 And AnchorRowNumEnd <> 0 Then
    Worksheets("Temp-Data").Range("A" & AnchorRowNumStart & ":K" & AnchorRowNumEnd).Copy Worksheets("Anchor Plates").Range("A4:K" & (AnchorRowNumEnd - AnchorRowNumStart + 4))
    End If

    If HalfenRowNumStart <> 0 And HalfenRowNumEnd <> 0 Then
    Worksheets("Temp-Data").Range("A" & HalfenRowNumStart & ":K" & HalfenRowNumEnd).Copy Worksheets("Halfen Channels").Range("A4:K" & (HalfenRowNumEnd - HalfenRowNumStart + 4))
    End If

    If ConesRowNumStart <> 0 And ConesRowNumEnd <> 0 Then
    Worksheets("Temp-Data").Range("A" & ConesRowNumStart & ":K" & ConesRowNumEnd).Copy Worksheets("Cones").Range("A4:K" & (ConesRowNumEnd - ConesRowNumStart + 4))
    End If

    'Delete Data
    Range("A2:K" & LastRow).Clear

因此,当我在代码编辑器中运行而不是单击按钮时,它工作正常。试图在Excel 2007和2016上运行它,结果相同。感谢您的帮助。

它的目的是在一个名为&#34; Temp-Data&#34;的电子表格中读取一堆数据。找出它对应的内容,然后将它们复制到同一工作簿中的右侧电子表格中。它按预期工作,除了它不复制/粘贴/删除最后一列的部分(&#34; K&#34;)。 P.S:当我运行代码编辑器

时,它工作得很好

0 个答案:

没有答案