aşağıdaki kodu dener misiniz?
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