我在学生成绩总表中设置了一个利用VBA(宏)对合计进行排序的按钮,但利用函数公式自动分出去的3个分班表却不能自动重算,即不能显示了,必须按键盘上的“F9”才能重算(不使用这个宏按钮,而用上面菜单中的排序对总表进行排序时,后面的分班函数表格却能自动重算)
我利用录制宏的方法:
1、录制过程中按了“工具/选项/重算所有文档(F9)”,并在总表中设置按钮:
Private Sub CommandButton4_Click()
Application.MaxChange = 0.001
ActiveWorkbook.PrecisionAsDisplayed = False
Calculate
End Sub
也在录制过程中按了“F9”
Private Sub CommandButton4_Click()
Calculate
End Sub
但没效果(而手按键盘上的“F9”却有效果)
2、录制过程中按了“工具/选项/重算活动工作表”,然后在分班表1进行录制:
Sheets("1").Select
Application.MaxChange = 0.001
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Calculate
却使3个班重算的结果和1班一样(后2个班都显示1班的内容);我又同时录制了3个班:
Private Sub CommandButton4_Click()
Sheets("1").Select
Application.MaxChange = 0.001
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Calculate
Sheets("2").Select
Application.MaxChange = 0.001
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Calculate
Sheets("3").Select
Application.MaxChange = 0.001
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Calculate
End Sub
却使3个班重算的结果和3班一样
怎样用VBA正确自动重算所有文档呀?请高手指教!
后来我发现:不只是用了宏的排序按钮,连我编写的其他宏一旦启用,都会暂时阻止分班表的“自动重算”(必须按F9让分班表重算)而不用宏就不存在阻止分班表“自动重算”的问题。
所以正是宏阻止了分班表的“自动重算”,而又想要通过宏来让分班表自动重算,估计难。
我是在工具-选项-重新计算中选自动计算,所以不用宏按钮就能自动计算,但用了宏按钮其函数分班表就不能重算了(而总表下面的函数统计公式能自动重算)
我就是希望自动分班呢,复制3个班数据到一个表进行处理就失去目的了
哦,总表计算好数据,各分表引用各班级的那部分数据。
的确,我在排序按钮的宏里后面加了range("a1").select,点按钮后,数据排序结束A1就自动呈选中状态,但分班表仍然没效果
我发现:按了排序按钮后,把鼠标移到其他空单元格随便输一个数字或者不输数字双击一下单元格(左下状态栏显示“输入”),再移开鼠标(左下状态栏显示“正在计算单元格”),分班表就自动重算,显示数据了。
但(我用录制宏的方式)通过宏来控制就不行,必须手动操作。不知有没有用宏或其他非手动的方法。
哦,你的方法我也录制来试过(包括录制打开手动重算),把程序代码放进宏就不行,但用同样方法手动去上面菜单栏里点却有效果(就好象“F9”一样:把录制的“按F9代码”放进宏里不行,但手动按键盘上的F9却有效),不知为何?
我也把录制的宏放在一个单独按钮里,点击时左下状态栏也显示了“正在计算单元格”(并到了100%),但对分班表没真正计算到,还是没效果。