我有以下问题。如果Excel中单元格范围内的某个单元格包含日期值(短日期,即12.3.2012
)或特定单词,我想检查宏。
我将尝试使用以下示例代码解释自己:
Private Sub typedata()
Dim x, y
For x = 12 To 13
For y = 16 To 71
If isDate(Cells(x, y)) <> True then
MsgBox "Please enter correct data"
Exit Sub
elseIF Cells(x,y) <> "certain word" Then
MsgBox "Please enter correct data"
Exit Sub
End If
Next y
Next x
End Sub
我将非常感谢您找到正确的代码。
答案 0 :(得分:0)
首先,我怀疑(但不确定)你的x和你的y是错误的。 Cells函数使用参数(Row,Column),很少有一个非常短的数据范围(第12到13行),但是很宽的一个(第16到71列)。 (你的代码可能是正确的,我只是注意到这是不寻常的,你可能需要检查。)
你真正想要的是And运算符,但另外需要注意的是,某些单词测试将区分大小写。因此,我通常将两者都转换为大写。
最后,您可能想告诉用户问题究竟在哪里。
此外,我建议将变量声明为类型,以避免变量转换为整数转换成本。我总是在VBA(而不是VB.Net)中使用Longs而不是整数,因为无论如何Int都会在内部转换为long。
这很快,很脏,只是经过了轻微的测试,但应该指向正确的方向:
Private Sub typedata()
Dim x As Long, y As Long
For x = 12 To 13
For y = 16 To 71
If IsDate(Cells(x, y)) <> True And UCase(Cells(x, y)) <> UCase("certain word") Then
MsgBox "Please enter correct data into cell " & Cells(x, y).Address
Exit Sub
End If
Next y
Next x
End Sub