Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用于检查列的VBA代码仅包含公式_Excel_Vba - Fatal编程技术网

Excel 用于检查列的VBA代码仅包含公式

Excel 用于检查列的VBA代码仅包含公式,excel,vba,Excel,Vba,我有一个模板电子表格,用户用数据填充并发送给我。其中一列是一个公式,他们在其他输入错误中不断粘贴值。我已经用VBA“保存前”代码处理了所有其他错误,但无法找到让excel检查列中每个单元格以查看其是否为公式的代码,如果有,则抛出一个消息框 我发现这篇文章很有帮助:这在一定程度上起到了作用——我不希望提示选择范围,所以我尝试使用1个单元格或设置范围,例如L12:L3000(用户可以发送不同数量的行的输入,但3000行可能会覆盖所有行。如果我可以合并end(xldown)语法,但这会更理想!) 我可

我有一个模板电子表格,用户用数据填充并发送给我。其中一列是一个公式,他们在其他输入错误中不断粘贴值。我已经用VBA“保存前”代码处理了所有其他错误,但无法找到让excel检查列中每个单元格以查看其是否为公式的代码,如果有,则抛出一个消息框

我发现这篇文章很有帮助:这在一定程度上起到了作用——我不希望提示选择范围,所以我尝试使用1个单元格或设置范围,例如L12:L3000(用户可以发送不同数量的行的输入,但3000行可能会覆盖所有行。如果我可以合并end(xldown)语法,但这会更理想!)

我可以让它抛出消息框,如果我选择一个单元格作为范围,它是一个值,但不是一次多个单元格,即使它们之间有一个值。我是个新手,虽然尝试了一段时间,但还是搞不懂循环

任何帮助都将不胜感激

使用一个单元格作为范围,使用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中的任何位置都有一个值,这将循环并找到它。然后,它将弹出,要求确认他们想要保存,或者只是弹出警告公式已粘贴并取消保存

这有帮助吗?可以使用特殊单元格作为查找各种特定类型单元格条目(包括公式)的快捷方式


为什么不使用工作表保护来锁定列,这样他们就不能粘贴到公式上呢?是的,这比加载代码@Tate Garringer更容易。我不想提这一点。。但是如果他们用公式覆盖怎么办呢?很好的一点是,在某些特殊情况下,用户实际上必须在其中写入他们自己的值,这就是为什么我没有锁定该列,并希望出现“警告:公式覆盖,是否要继续”消息的原因。CLR提出了非常好的观点!毕竟,我们只是锁定了该列,如果用户有特殊要求,现在可以请求将其解锁。谢谢大家的帮助!谢谢SJR!虽然我们现在已经通过锁定列解决了这个问题,但这似乎确实有效!哈哈。还是干杯。你好,J
Sub x()

Dim r As Range

On Error Resume Next
Set r = Range("L1:L10").SpecialCells(xlCellTypeConstants)
On Error GoTo 0

If Not r Is Nothing Then
    MsgBox "a formula has been overwritten" & vbCr & r.Address
End If

End Sub