我有一个宏,可以使用VBA从Visio获取或启动Excel,并创建一个工作簿以配合活动的Visio绘图。
当宏关闭Excel自动计算时,我得到一个类型不匹配错误,但它并不总是给出错误。
为什么代码有时会起作用,而不是其他代码?
Dim XLCalcMode As Long
XLCalcMode = XLApp.Calculation
XLApp.Calculation = xlCalculationManual
答案 0 :(得分:3)
Excel应用程序必须至少打开一个工作簿才能在Application对象上设置Calculation属性。
将.Calculation设置移动到打开工作簿之后。
答案 1 :(得分:0)
我不了解Visio,我继续假设它不会共享Excel枚举,例如function loginformcheck() {
var username = document.getElementById("loginformusr").value;
var password = document.getElementById("loginformpw").value;
if (username.length == 0 && password.length == 0)
{
document.getElementById("loginformalert").innerHTML = "Vyplňte přihlašovací údaje!";
}
else if (username.length == 0)
{
document.getElementById("loginformalert").innerHTML = "Vyplňte přihlašovací jméno!";
}
else if (password.length == 0)
{
document.getElementById("loginformalert").innerHTML = "Vyplňte heslo!";
}
else if (!username.match(/^\w+$/) || !password.match(/^\w+$/))
{
document.getElementById("loginformalert").innerHTML = "Uživatelské jméno nebo heslo je nesprávné!";
}
else if (username.match(/^\w+$/) && password.match(/^\w+$/))
{
login();
}
}
function login() {
var username = document.getElementById("loginformusr").value;
var password = document.getElementById("loginformpw").value;
var alert = "Uživatelské jméno nebo heslo je nesprávné!";
if (username.match("jakub") && password.match("poiuz"))
{
function afterloginanimation(timer) {
setTimeout(function(){
if (timer == -1) {
window.location.href = "afterlogin.html";
}
}, 1500);
}
document.getElementById("loginformdiv").style.AnimationName = "afterlogindiv";
document.getElementById("loginformdiv").style.AnimationDuration = "1.5s";
document.getElementById("loginform").style.AnimationName = "afterloginform";
document.getElementById("loginform").style.AnimationDuration = "1.5s";
}
else
{
document.getElementById("loginformalert").innerHTML = alert;
}
所以你:
使用实际枚举值
例如xlCalculationManual的值为-4135,那么你想编码
XlCalculation
或通过引用Excel应用程序对象
使用Excel枚举名称XLApp.Calculation = -4135