我有一个模板电子表格,用户可以在其中填充数据并发送给我。其中一列是公式,除其他输入错误外,公式还会粘贴值。我已经使用VBA“保存前”代码处理了所有其他错误,但是无法弄清楚该代码让excel检查列中的每个单元格以查看是否为公式,如果有则抛出一个消息框。
我发现这篇文章非常有帮助:https://docs.microsoft.com/en-us/office/vba/api/excel.range.hasformula,并且在一定程度上有效-我不想提示选择范围,因此我尝试使用1个单元格或设置的范围EG,L12:L3000 (用户可以发送不同数量的行的输入,但是3000可能会覆盖所有行。如果我可以将end(xldown)语法合并到其中,那将是更理想的选择!)
如果我选择一个单元格作为范围,则可以抛出该消息框,并且它是一个值,但不能一次显示多个单元格,即使它们中有一个值也是如此。尽管尝试了一段时间,我还是个新手,无法弄清楚Looping!
任何帮助将不胜感激!
使用一个单元格作为范围,使用Col L中的多个单元格作为范围。到目前为止,我得到的代码适用于一个单元格,但不适用于多个单元格...
If DataInput.[L12].HasFormula = False Then
a = MsgBox("CAUTION: Formula in Column L appears to have been written over. Do you want to Save anyway?", vbYesNo)
If a = vbYes Then Cancel = False
End If
预期:如果L列中的任何地方都有一个值,它将遍历并找到它。然后将弹出询问您要保存的确认,或者只是弹出警告公式已粘贴并取消保存。