sayim fonksiyonunun yapısı değişmiştir eğer bağımsız bir alanda denerseniz açıklama alanından sadece formata uygun veriyi aldığını görebilirsiniz. ama bu haliyle işinize yarar mı emin değilim
mesela açıklama kısmında Aciklama: SL100090, SL104780, SL104790, SL104800 ve SL104810 ile birlikte faturalandırılmaz yazıyorsa
sayim alanı sonuç olarak (srg_bakanlıkkodları.KOD) IN('SL100090','SL104780','SL104790','SL104800','SL104810')) verisini dönderiyor.
Function Sayim(Aciklama As String)
Dim RegEx As Object, metin As String
Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Pattern = "[a-zA-Z]{0,3}[0-9]+" '"[a-zA-Z]{0,3}[0-9]{6}"'aranacak format/desen : [a-zA-Z]{0,3}-->harf olmayacak yada en fazla 3 tane harf ve rakam olacak ({6} yazarsak 6 rakam olacak, ne az ne fazla tam 6
RegEx.Global = True' tüm metinde aranılacak
RegEx.MultiLine = True'çoklu satırda aranılacak
Set eslesmeler = RegEx.Execute(Aciklama)
' sensayisi = eslesmeler.Count 'dizide kaç tane formata uygun kelime var onun sayısını verir
For Each Match In eslesmeler 'dizideki her elemanı hesaba katar
Kosulum = Kosulum & "','" & Match.Value
Next
If Kosulum <> "" Then
Kosulum = "(srg_bakanlıkkodları.KOD) IN(" & Mid(Kosulum, 3) & "'" & "))"
Else
Kosulum = vbNullString
End If
Sayim = Kosulum
End Function
koddaki sayını kaç haneli olduğundan emin olamadım eğer kesinlikle 6 basamaklı ise
"[a-zA-Z]{0,3}[0-9]+" yerine "[a-zA-Z]{0,3}[0-9]{6}" de yazılabilir