VBA代码在调试(F8)上正确运行,但在通过按钮

时间:2017-02-07 23:42:31

标签: excel vba excel-vba

我的代码行为相似,在步进低谷时运行正常(F8)但是在为图片,按钮或其他任何东西分配宏时,代码并没有按预期运行(也没有崩溃)。有谁知道修复?

我的代码只是将数据从一个工作表复制到另一个工作表中。谢谢。

Excel file on dropbox

Sub BaixarVenda()
pecas = 0
Sheets("Venda").Select
Range("A1").Select

If IsEmpty(Range("C7").Value) = False Then
'one item sale
Sheets("Venda").Range("C2").Copy Destination:=Sheets("Historico     vendas").Range("A1").End(xlDown).Offset(1, 0)
Sheets("Venda").Range("C4").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 1).PasteSpecial     Paste:=xlPasteValuesAndNumberFormats
Sheets("Venda").Range("C7").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 2)
Sheets("Venda").Range("C9").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 3).PasteSpecial  Paste:=xlPasteValues
Sheets("Venda").Range("C11").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 4)
Sheets("Venda").Range("C13").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 5).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
pecas = pecas + 1
End If

If IsEmpty(Range("E7").Value) = False Then
Sheets("Venda").Range("C2").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(1, 0)
Sheets("Venda").Range("C4").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 5).PasteSpecial    Paste:=xlPasteValuesAndNumberFormats
Sheets("Venda").Range("E7").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 2)
Sheets("Venda").Range("E9").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 3).PasteSpecial Paste:=xlPasteValues
Sheets("Venda").Range("E11").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 4)
Sheets("Venda").Range("E13").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 5).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
pecas = pecas + 1
End If

If IsEmpty(Range("G7").Value) = False Then
'3 item sale

Sheets("Venda").Range("C2").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(1, 0)
Sheets("Venda").Range("C4").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 5).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Sheets("Venda").Range("G7").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 2)
Sheets("Venda").Range("G9").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 3).PasteSpecial     Paste:=xlPasteValues
Sheets("Venda").Range("G11").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 4)
Sheets("Venda").Range("G13").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 5).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
pecas = pecas + 1
End If

If IsEmpty(Range("I7").Value) = False Then

Sheets("Venda").Range("C2").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(1, 0)
Sheets("Venda").Range("C4").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 5).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Sheets("Venda").Range("I7").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 2)
Sheets("Venda").Range("I9").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 3).PasteSpecial     Paste:=xlPasteValues
Sheets("Venda").Range("I11").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 4)
Sheets("Venda").Range("I13").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 5).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
pecas = pecas + 1
End If

If IsEmpty(Range("K7").Value) = False Then
Sheets("Venda").Range("C2").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(1, 0)
Sheets("Venda").Range("C4").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 5).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Sheets("Venda").Range("K7").Copy Destination:=Sheets("Historico   vendas").Range("A1").End(xlDown).Offset(0, 2)
Sheets("Venda").Range("K9").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 3).PasteSpecial Paste:=xlPasteValues
Sheets("Venda").Range("K11").Copy Destination:=Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 4)
Sheets("Venda").Range("K13").Copy
Sheets("Historico vendas").Range("A1").End(xlDown).Offset(0, 5).PasteSpecial    Paste:=xlPasteValuesAndNumberFormats

pecas = pecas + 1
End If 
Sheets("Venda").Select
MsgBox "Venda finalizada"
End Sub

1 个答案:

答案 0 :(得分:0)

您确定已正确分配宏吗?在宏的开头放置一个消息框以确认它正在运行:

MsgBox "Running"

如果单击按钮时未显示消息框,则宏根本不运行。如果显示消息框但仍未正确复制数据,请尝试以下操作:

当您粘贴的工作表未处于活动状态时,使用“选择性粘贴”可能会出现问题。当您单步执行代码时,可以隐藏此问题,尤其是当您手动更改选项卡以查看每个步骤中发生的情况时。

请注意,您无需激活要复制的工作表,因此您只需要在宏的开头激活目标工作表:

Sheets("Historico vendas").activate

您只需更改代码,以便查看Venda表的所有内容都是合格的。看起来所有代码都已经过限定,但If语句中的范围除外。同时更新它们,然后查看它是否有效。 E.g。

If IsEmpty(Sheets("Venda").Range("C7").Value) = False Then