我试图将exec包含在创建变量的函数中,以便使用简单符号求解方程。但是,由于解决方案是在exec内部创建的,因此会产生错误:int
ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Centro Custo"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("Centro Custo")
.PivotItems(ThisWorkbook.Sheets("Macro").Range("B" & ºL).Value).Visible = True
End With
我必须替换方程式中未知变量的原因是因为SymPy求解器无法处理可能带有下标的变量,例如.PivotItems("Blablabla").Visible = True
。无论如何,当我不使用函数时,只需将其作为脚本运行即可产生以下解决方案:
UnboundLocalError: local variable 'sol' referenced before assignment
答案 0 :(得分:3)
您不能动态更新局部变量,包括exec
。参见How does exec work with locals?。
您需要做的是:
sol = sym.solve(eqn, sym.Symbol(some_symbol))
不需要exec
,因为不需要创建与符号同名的变量。根据指向它们的变量名称,对象的行为不会有所不同。