Beraber Kullanılan Sayı ve Metin Formatı

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam Arkadaşlar,
Bir Textbox içine bir malzemenin stok kodunu belirli formatlarda girmek istiyorum.
format şu şekilde olacak;
ilk 3 sabit karakter sayı olacak. Ondan sonraki karakterlerden 1 ile 4'ü Metin olacak. metinden sonraki karakterlerden 1 ile 4'ü sayı olacak.

Örnek (S= sayıdır, M=Metindir)

SSSMS
SSSMSS
SSSMSSS
SSSMSSSS

SSSMMS
SSSMMSS
SSSMMSSS
SSSMMSSSS

SSSMMMS
SSSMMMSS
SSSMMMSSS
SSSMMMSSSS

SSSMMMMS
SSSMMMMSS
SSSMMMMSSS
SSSMMMMSSSS

Bu formatların haricinde (mesela; 399ABCDEF veya 4012AB123 veya 255XYZ4A) girildiği zaman uyarı verecek.

Bunu nasıl yapabilirim? Aşağıdaki gibi denedim, yapamadım.
Yardımcı olabilirseniz çok sevinirim

Kod:
If Format(Me.TextBox1, "###$#") = Me.TextBox1 Then
MsgBox "Format Doğru"
ElseIf Format(Me.TextBox1, "###$##") = Me.TextBox1 Then
MsgBox "Format Doğru"
ElseIf Format(Me.TextBox1, "###$###") = Me.TextBox1 Then
MsgBox "Format Doğru"
ElseIf Format(Me.TextBox1, "###$####") = Me.TextBox1 Then
MsgBox "Format Doğru"
Else
MsgBox "Format Yanlış"
End If
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
1.mesajımdaki sorumun cevabını şu şekilde çözüldü;

Kod:
Dim deg As Object
Dim stokkod As String

Set deg = CreateObject("VBScript.Regexp")
If Me.dataveri2 = "" Then GoTo atla
stokkod = UCase(Me.dataveri2)


deg.Pattern = "^[0-9]{3}[A-Z]{1,4}[0-9]{1,4}$"
If deg.test(stokkod) = False Then
MsgBox "Bu Bir Stok Kodu Değildir!", vbCritical
Cancel = True
GoTo atla
End If
Peki,
"001ABC5678" şeklindeki değeri nasıl "001 ABC 5678" şeklinde ayırabilirim?
Tabi bu bazen 001AB56 şekilnde de olabiliyor.
Yardımcı olabilirseniz çok sevinirim.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
şöyle deneyin:

Kod:
deg.Pattern = "^[0-9]{3} ?[A-Z]{1,4} ?[0-9]{1,4}$"
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
" " karakterinden sonra gelen "?" karakteri " " karakterini opsiyonel yapıyor.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
şöyle bir kod bir kenarda PATTERN test etmek için kullanılabilir:

Kod:
Sub RegEx_Test()

    Dim testMetin As String
    
    testMetin = "001 ABC 5678"
    
    With CreateObject("VBScript.Regexp")
        .Pattern = "^[0-9]{3} ?[A-Z]{1,4} ?[0-9]{1,4}$"
        MsgBox .test(testMetin)
        'veya VBE'de "immediate" penceresine yazdırmak için:
        'Debug.Print .test(testMetin)
    End With

End Sub
 
Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Sayın mancubus,

Kod:
MsgBox deg.Replace(deger, "$1 $2 $3")
şeklinde ayırabiliyorum.

sizin son gönderdiğiniz "Debug.Print" nedir? ne işe yarar?

Ayrı bir sorum olacak;
Diyelim bir metin içinde istemediğim yasaklı karakterler olsun. mesela ? , 5, 0 _ . gibi.
regexp ile bunları kontrol edip, yasaklı ve yasaksızları ayırıp bulabilir miyiz?
mesela; erg?u5n için yasaklı ?5 yasaksız ergun.
?g?ul.-e0r için yasaklı ??._0 yasaksız guler.
 
Üst