我有一张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 - 堆栈空间不足。
需要你的帮助。
答案 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
但说实话,最佳解决方案是不使用该事件。出于任何特殊原因,你真的需要它吗?
的更多信息 的更多信息