ワークシートに同じレコードが既に存在するかどうかを確認するために、一意の番号と関連付けられた日付を使用する Excel のコードに取り組んでいます。これが私のコードです:
最初のコードの一部...
Else
'If all the data has been entered, go to New_Record
Check_Record ID:=Sheets("Information").Range("A1").Value, vDate:=Sheets("Information").Range("A2").Value
End If
End Sub
最初のコードに続く 2 番目のコード...
Function Record(ID As String, vDate As String)
Dim Current_ID_List As Range
Dim vCaseWasFound, vDateWasFound, vLastDataRow As Range
Dim DestinationRow As Integer
Dim Go_ahead_msg As String
Set ID_List = Sheets("Records").Range("A:A")
Set Date_List = Sheets("Records").Range("D:D")
'-- determine whether record exists
Set vCaseWasFound = ID_List.Find(What:=ID, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
Set vDateWasFound = Date_List.Find(What:=vDate, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
Set vLastDataRow = Sheets("RawData").Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows)
If Not vCaseWasFound Is Nothing And Not vDateWasFound Is Nothing Then
Go_ahead_msg = "The record already exists."
Else
Go_ahead_msg = "This is a new record."
End If
If MsgBox(Go_ahead_msg, vbQuestion + vbYesNo) = vbYes Then
New_Record
Sheets("Sheet1").Activate
Else
With Sheets("Records")
.Activate
.Range("A1").Select
End With
End If
End Function
解決済み:私が抱えていた問題と解決された問題は、Excel ファイルに ID 1234567 と日付 10/10/2013 のレコードがあり、ID 1234 と日付 10/10/2013 の別のレコードを入力しようとすると、コードは、「レコードは既に存在します」というメッセージを表示します。ID値全体を見ているわけではありません。既存の ID の一部が新しい ID と一致しても、コードはそれを新しい ID として認識しません。
NEW: 現在、日付に問題があります。同じ ID と同じ日付 (2012 年 12 月 12 日など) がある場合、コードはそれを同じレコードとして認識し、レコードが既に存在するというメッセージを表示します。ただし、日付が 1/1/2013 または 4/15/2012 または 4/1/2013 のような形式の場合、コードはそれを同じ日付として認識しません。
私の質問が理にかなっていることを願っています。明確にできるかどうか教えてください。
助けてくれてありがとう。