我有一个带有两个选项卡的工作表,想要让VBA自动运行并弹出一个窗口消息,提示“ NPV负!请输入将来的储蓄!”任何时候单元格J27(在两个选项卡中)都会计算负值。 我在模块中有以下代码,当我测试并单击运行时,它可以完成我想做的事情,但是实际上,当我更改信息并且单元格J27为负数时,什么也没有发生。我对VBA非常陌生,因此不胜感激。
function filterTable(event) {
var Case = event.target.value.toUpperCase();
var Hyphen = event.target.value.replace(/[-]/g, "");
var rows = document.querySelector("#Catalogue").rows;
for (var i = 1; i < rows.length; i++) {
var firstCol = rows[i].cells[0].textContent.toUpperCase().replace(/[-]/g, '');
var thirdCol = rows[i].cells[2].textContent.toUpperCase().replace(/[-]/g, '');
if (firstCol.indexOf(Case) > -1 || thirdCol.indexOf(Case) > -1 || firstCol.indexOf(Hyphen) > -1 || thirdCol.indexOf(Hyphen) > -1) {
rows[i].style.display = "";
} else {
rows[i].style.display = "none";
}
}
}
谢谢!
答案 0 :(得分:0)
Worksheet_Calculate
子例程仅在重新计算您在其中创建的工作表时才会被触发。 Range("J27")
仅查看该工作表中的单元格,因此您的循环仅迭代一次。
要从两个工作表中获取单元格J27中的值,您需要指定工作表和每个工作表的范围。
Private Sub Worksheet_Calculate()
If Sheets("This Sheet").Range("J27").Value < 0 And _
Sheets("That Sheet").Range("J27").Value < 0 Then
MsgBox ("NPV negative! Please enter future Savings!"), , "Invalid Entry"
End If
End Sub
将其放入两个工作表中,以便在重新计算其中一个工作表时使其运行。 (或者,更好的是,将其保存在单独的模块中,然后从两个Worksheet_Calculate
子例程中调用它。)