我有一个宏,它采用不同的范围,使用其中的值执行计算,然后将值复制到单元格以供工作表中的公式使用。我希望在修改某些范围内的值时运行此宏。我在不同的工作表中使用相同的代码,我最初放置了一个ActiveX按钮。 问题是,当我把宏放在worksheet_calculate或Worksheet_SelectionChange时,Excel崩溃了。起初我假设我正在导致无限次迭代,但在使用EventEnable = FALSE和EnableCalculations = FALSE以避免该行为后Excel仍然崩溃。我删除了SelectionChange和Calculate中的宏,我进一步检查了这个问题,发现当从VBA界面运行宏时,Excel也会崩溃,但是它可以与引用宏的工作表中的ActiveX按钮一起使用。 我似乎无法找到代码有什么问题,以及为什么它在通过按钮访问时运行完美,但在从VBA界面运行时崩溃。
这是代码,请帮我找出错误,或者我可以尝试从VBA运行,因为调用它或从界面运行它将导致Excel崩溃。
BEGIN
DECLARE count int;
SELECT count (*) FROM
(
SELECT distinct
table_name
FROM information_schema.columns
WHERE table_name IN ('authors', ‘publishers’)
AND column_name = 'ISBN'
and table_schema = 'myDB'
)any_alias
INTO count;
SELECT count INTO msg; /*just to debug counter*/
END
我正在运行Excel 2013和Windows 7专业版
答案 0 :(得分:1)
我不确定这是否是您问题的最终答案,但有一件事可能会影响您的宏,使用ActiveWorkbook,ActiveSheet等活动对象。
我的建议是引用您必须使用的对象,以便在未选择您的Excel文件或选择错误的工作表时,代码仍然有效。为此,请查看以下示例:
Dim workingSheet as Worksheet
Dim auxWorksheet as Worksheet
Set workingSheet = ThisWorkbook.Worksheets("The name of the worksheet here")
Set auxWorksheet = ThisWorkbook.Worksheets(tempString)
Set bla = workingSheet.Range("D16:D75")
Set curve = workingSheet.Range("G2:WH11")
Set price = workingSheet.Range("G162:WH164")
Set finalOut = workingSheet.Range("G83:WH141")
tempString = workingSheet.Name
a = auxWorksheet.Cells(10, 8).Value
请试一试并提供一些反馈,以便如果不起作用,我会继续努力帮助您。