我正在手动公式计算模式下开发Excel 2010工作簿.
file - > options - > formula - > Workbook calculation - > manual
但是,我想要一些菜单选项来重新计算工作簿.
所以我使用以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If SOME_CONDITION
Application.Calculate
ActiveSheet.AutoFilter.ApplyFilter
End If
Application.EnableEvents = True
End Sub
Run Code Online (Sandbox Code Playgroud)
问题是,如果我在执行此功能时滚动鼠标中键或单击单元格,则计算在完成之前突然终止,这是不可接受的.
似乎该行Application.EnableEvents=False不会阻止鼠标事件被触发,我无法找到任何可以防止此错误的替代方案.
所以我需要的是在计算过程中阻止所有事件的方法,或者以某种方式防止被触发的事件中断计算(就像工作簿公式计算不是手动时一样).
我非常感谢你的帮助!
谢谢.
马坦.
Commons-math(版本2.2)具有LP解算器。
在这里,我找到了以下示例代码:
import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.math.optimization.GoalType;
import org.apache.commons.math.optimization.OptimizationException;
import org.apache.commons.math.optimization.RealPointValuePair;
import org.apache.commons.math.optimization.linear.LinearConstraint;
import org.apache.commons.math.optimization.linear.LinearObjectiveFunction;
import org.apache.commons.math.optimization.linear.Relationship;
import org.apache.commons.math.optimization.linear.SimplexSolver;
@SuppressWarnings("deprecation")
public class Main {
@SuppressWarnings({ "rawtypes", "unchecked"})
public static void main(String[] args) {
//describe the optimization problem
LinearObjectiveFunction f = new LinearObjectiveFunction(new double[] { 3, 5}, 0);
Collection constraints = new ArrayList();
constraints.add(new LinearConstraint(new double[] { 2, 8}, Relationship.LEQ, 13));
constraints.add(new LinearConstraint(new double[] { 5, -1}, Relationship.LEQ, 11));
constraints.add(new LinearConstraint(new double[] { 1, 0}, Relationship.GEQ, 0));
constraints.add(new LinearConstraint(new …Run Code Online (Sandbox Code Playgroud)