Я думаю, что решение без VBA здесь идеально, но я оставлю это здесь отдельно на всякий случай. Это должно работать в вашей ситуации, если в ваших таблицах нет пустых значений.
<час> Sub Test()
Dim ws As Worksheet: Set Worksheet = ThisWorkbook.Sheets("Sheet2")
Dim iList As Range, iName As Range
Dim aLR As Long, cLR As Long
aLR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Set iList = ws.Range("A1:A" & aLR).Find(ws.Range("C3"), LookIn:=xlWhole)
If Not iList Is Nothing Then
cLR = iList.Offset(0, 2).End(xlDown).Row
Set iName = ws.Range(ws.Cells(iList.Row, 3), ws.Cells(cLR, 3)).Find(ws.Range("C4"), LookIn:=xlWhole)
If Not iName Is Nothing Then
ws.Range("E3:G3").Value = iName.Offset(0, 1).Resize(1, 3).Value
End If
End If
End Sub
здесь приведен простой фрагмент кода
Dim odb As New DataClassesDataContext
Dim tst As New test
tst.name = "abcd"
odb.tests.InsertOnSubmit(tst)
odb.SubmitChanges()
Response.Write("id:" + tst.id.ToString)
, поэтому в основном объект, который вы использовали в InsertOnSubmit, получит поле идентификатора, заполненное после создания записи в базе данных