Excel宏在打开文件后只能工作一次。要执行类似的操作,我必须关闭并重新打开。

时间:2016-06-16 14:45:55

标签: excel vba excel-vba macros

我编写了一个代码,根据下拉菜单选择并复制粘贴某些单元格。 主文件上的代码是

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("$Q$28")
Call Get4
End Sub

下拉列表有6个选项。每次打开文件并选择6个下拉选项中的任何一个时,它都会执行所需的操作。第二次更改选项时,它不执行任何操作。关闭并重新打开同一张纸并选择6选项的任何选项后,它再次起作用。 所以宏只工作一次而不是之后。 请让我知道如何让它多次工作。 这是我的代码,请看一下。

Sub Get4()
Dim ws As Worksheet

Application.EnableEvents = False

ActiveWorkbook.Sheets("4V").Range("A01:AN70").Clear
For Each Shp In ActiveWorkbook.Sheets("4V").Shapes
If Not (Shp.Type = msoOLEControlObject Or Shp.Type = msoFormControl) Then Shp.Delete 
Next Shp

'For Each ws In ActiveWorkbook.Sheets
'ws.Visible = xlSheetVisible

'Next

If ActiveWorkbook.Sheets("Main").Range("Q28") = "Vertical , Reduced Mesh Pad , Half pipe" Then
Sheets("4-10").Select
Range("A01:AN67").Select
Selection.Copy

 Sheets("4V").Select
Range("A01:AN67").Select
 ActiveSheet.Paste

Else

 If ActiveWorkbook.Sheets("Main").Range("Q28") = "Vertical , Reduced Mesh Pad , Baffle" Then
Sheets("4-11").Select
Range("A01:AN67").Select
Selection.Copy

Sheets("4V").Select
Range("A01:AN67").Select
ActiveSheet.Paste

Else

If ActiveWorkbook.Sheets("Main").Range("Q28") = "Vertical , Mesh Pad , Half pipe" Then
Sheets("4-12").Select
Range("A01:AN67").Select
Selection.Copy

Sheets("4V").Select
 Range("A01:AN67").Select
ActiveSheet.Paste

Else

If ActiveWorkbook.Sheets("Main").Range("Q28") = "Vertical ,Mesh Pad ,Baffle"    Then
 Sheets("4-13").Select
Range("A01:AN67").Select
Selection.Copy

Sheets("4V").Select
Range("A01:AN67").Select
ActiveSheet.Paste

Else

 If ActiveWorkbook.Sheets("Main").Range("Q28") = "Vertical , No Mesh Pad , Half pipe" Then
Sheets("4-15").Select
Range("A01:AN67").Select
Selection.Copy

Sheets("4V").Select
Range("A01:AN67").Select
 ActiveSheet.Paste

Else

If ActiveWorkbook.Sheets("Main").Range("Q28") = "Vertical , No Mesh Pad , Baffle" Then
Sheets("4-14").Select
Range("A01:AN67").Select
Selection.Copy

Sheets("4V").Select
Range("A01:AN67").Select
ActiveSheet.Paste

End If
End If
End If
End If
End If
End If

End Sub

1 个答案:

答案 0 :(得分:2)

将启用事件设置为true。如果它是假的,工作簿中的事件就不会被触发。放置:<directive value="string"></directive> 在您的潜艇的末尾。