单击按钮后,我想检查当前日期是否在单元格范围内。
如果存在,则循环应该结束并且不应该发生任何事情。
如果不存在,则将日期插入该范围中的下一个空单元格。
我尝试了一个“为每个”的方法,但它检查范围内的每个日期,并给出每个单元格的响应。
我只想知道它是否已经存在,而不是对不是当前日期的每个单元格的响应。
Private Function DateUpdateWithCheck()
Dim ws As Worksheet
Dim wb As Workbook
Dim myDate As Date
Dim searchrange As Range
Dim cell As Range
Dim lRow As Long
myDate = Date
Set ws = ThisWorkbook.Worksheets("History")
ws.Activate
Set searchrange = ws.Range("CA1:CC1")
For Each cell In searchrange
If cell.Value = myDate Then
MsgBox ("Date already in it. End the loop")
Exit For
Else
MsgBox ("Date is not in it. Insert Date.")
GoTo yesinsert
End If
Next
yesinsert:
With ws
lRow = Range("C1").End(xlToRight).Offset(0, 1).Select
ActiveCell.Value = Date
'ActiveCell.EntireColumn.Copy
'ActiveCell.EntireColumn.PasteSpecial xlPasteValues
End With
End Function
2条答案
按热度按时间htzpubme1#
我将用一个例子来进一步解释我的评论。
首先您使用的是
private function
,没有任何输入。..function
将不作用于细胞;它只输出一个值。您希望使用Subroutine
对单元格执行操作。第二点:在当前代码中,您检查每个单元格,并且在您检查
If cell.Value = myDate Then
的每个场景中,您都踢出了msgbox。如果你有一个很长的约会清单,那就太多了。您可以通过添加检查值并在整个循环都被检查后才执行msgbox来解决这个问题。或者,你根本不能做一个循环,而使用
Application.Match()
,这样(未测试):bejyjqdl2#
这是我的问题的完整答案代码,供将来参考。