激发VBA - Vlookup宏下拉列表 - 在堆空间外面

时间:2018-02-27 12:26:32

标签: excel-vba vlookup vba excel

我有一张excel表,从下拉列表中我会有多少项可供选择。

选择特定项目后,将运行一个特定的宏,将vlookup公式粘贴到单元格区域。

我的工作簿VBA如下所示:

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Select Case Range("B2")

Case "Company 1"
Call Company1

Case "Company 2"
Call Company2

End Select
End Sub

我的宏看起来如下

Sub Company1()
Range("D7:D14").Formula = "=VLOOKUP(B7,'SheetLocation\[Sheet1.xls]Sheet1'!$A$6:$E$93,3,FALSE)"
End Sub

Sub Company2()
Range("D7:D14").Formula = "=VLOOKUP(B7,'SheetLocation\[Sheet2.xls]Sheet2'!$A$6:$E$93,3,FALSE)"
End Sub

每次我选择值表单下拉列表时,我都会使用这些宏挂起,错误运行时错误28 - 堆栈空间不足。

需要你的帮助。

1 个答案:

答案 0 :(得分:0)

您正在使用Workbook_SheetChange粘贴公式。每当任何单元格更改值时,此事件都会触发,因此它会为每个粘贴的公式激活,并且在计算完成时会再次触发。每次计算公式时,Excel都会重新计算所有公式,因此它会再次触发此事件,并再次触发。所以是的,无限循环溢出内存,你得到那个错误。要修复它,请禁用事件

Application.EnableEvents = False
Select Case Range("B2")

Case "Company 1"
Call Company1

Case "Company 2"
Call Company2

End Select
Application.EnableEvents = true

但说实话,最佳解决方案是不使用该事件。出于任何特殊原因,你真的需要它吗?

  

有关Out of stack space (Error 28)

的更多信息      

有关Workbook.SheetChange Event

的更多信息