اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

السلام عليكم،

لدي فورم واريد استعمال قناع في حقل TextBox لادخال رقم هاتف.

القناع سيكون على الشكل التالي :

__ __ __ ___

موافقة للحروف :

xxx xx xx xx

ولكن لا استطيع استعمال ازرار BACKSAPCE و DELETE بشكل عادي على النص في حالة ما اذا اردت مسح او تصحيح خطأ ما في الادخال.

فكيف يمكن لي الحصول على كود يعالج لي المشكلة ؟

شكراً.

Mask_v1.rar

قام بنشر

مثلا جرب ان تمسح رقما من الوسط فستختفي كل الارقام الموجودة على يسار المؤشر وليس الرقم المقصود فقط.

ما اريده ان نستعمل الزرين BACKSPACE و DELETE بصورة عادية على الارقام المدخلة بصورة عادية وبدون نقائص.

قام بنشر

السلام عليكم

صراحة عكيت انا وموضوعك

لم اوصل الى حل

ولاكن برضه بحاول مرة اخرى

ان شاء الله نتوصل الى حل

او يطل علينا احد اعمدة المنتدى

وبجعبته الجواب الشافي

تقبل تحياتي

قام بنشر

السلام عليكم،

محاولة جديدة ولكن ما زالت منقوصة .

يحيث يعمل الزر BackSpace فقط عندما نمحو الارقام من الآخر.

اما من الوسط فلا يتم مسح الا رقمين على اقصى حد بالنسبة للزرين.

ويتم دائما اضافة الارقام في آخر وضعية من TextBox وليس في مكان الارقام الممحوة.


Option Explicit

Dim LeTexte As String

Dim chargement As Boolean

Dim posinex As Byte

Dim flag As Boolean

Dim poscur As Byte

Private Sub TextBox1_Change()

Dim Val As String

Dim Ind As Byte

Dim i As Byte

If flag = True Then Exit Sub

i = TextBox1.SelStart

If i < poscur Then

    TextBox1.SelStart = i

    poscur = i

    Label1.Caption = i - 1

    Exit Sub

End If

formatagetextbox

TextBox1.SelStart = 12

poscur = 12

For i = 1 To 12

    If Mid(TextBox1, i, 1) = "_" Then

	    TextBox1.SelStart = i - 1

	    poscur = i - 1

	    Label1.Caption = i - 1

	    Exit For

    End If

Next i


End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If KeyAscii < 48 Or KeyAscii > 57 Or _

 Len(Replace(TextBox1, "_", "")) = 12 Then

    KeyAscii = 0

    Exit Sub

End If

End Sub

Private Sub formatagetextbox()

Dim Data1 As String

Dim Data2 As String

Dim i As Byte

Dim j As Byte

flag = True

' formatage des données

Data1 = Replace(TextBox1, "_", "")

Data1 = Application.WorksheetFunction.Trim(Data1)

Data1 = Replace(Data1, " ", "")

j = 1

For i = 1 To 12

    Select Case i

	    Case 1, 2, 3, 5, 6, 8, 9, 11, 12

		    If IsNumeric(Mid(Data1, j, 1)) Then

			    Data2 = Data2 & Mid(Data1, j, 1)

			    j = j + 1

		    Else

			    Data2 = Data2 & "_"

		    End If

	    Case 4, 7, 10

		    Data2 = Data2 & " "

    End Select

Next i

TextBox1 = Data2

flag = False

End Sub

Private Sub UserForm_Initialize()

    LeTexte = "___ __ __ __"

'			  123456789012

    TextBox1.Value = LeTexte

    TextBox1.SelStart = 0

End Sub

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information