PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : پرسش: سوال در مورد وارد کردن تاریخ



میثم مقدم نیا
2017/04/12, 22:28
سلام
دوستان من در تکست باکس میخوام تاریخ وارد کنم خودم یه ماکرو نوشتم که فقط عدد وارد میشه و ۱۰ رقم عدد که ۸ تا برای عدد و ۲ تا هم برای / هست قرار دادم مشکل من اینجاست که میخوام وقتی تاریخ صحیح نبود مثلا اگه تاریخ را ۱۳۹۵/۲۳/۲۳ وارد کردم پیغام خطا بده واطلاعات ثبت نشه
:min19:

rasools13
2017/04/13, 01:44
با سلام
از کدهای ذیل در رویداد YourTextBoxName_Change() استفاده کنید

به جای TextBox1 نام تکست باکس خودتون رو قرار دهید

.


Private Sub TextBox1_Change()
Dim txt, txtA As Variant
txt = Me.TextBox1.Text
If Len(txt) = 8 Then
txtA = Mid(txt, 6, 2)
If CInt(txtA) > 12 Then
MsgBox ("مقدار ماه حد اکثر 12 است")
Me.TextBox1.Text = Mid(txt, 1, 5)
Exit Sub
End If
ElseIf Len(txt) = 10 Then
txtA = Mid(txt, 9, 2)
If CInt(txtA) > 31 Then
MsgBox ("مقدار روز حد اکثر 31 است")
Me.TextBox1.Text = Mid(txt, 1, 8)
Exit Sub
End If
End If
End Sub

میثم مقدم نیا
2017/04/13, 09:57
با سلام
از کدهای ذیل در رویداد YourTextBoxName_Change() استفاده کنید

به جای TextBox1 نام تکست باکس خودتون رو قرار دهید

.


Private Sub TextBox1_Change()
Dim txt, txtA As Variant
txt = Me.TextBox1.Text
If Len(txt) = 8 Then
txtA = Mid(txt, 6, 2)
If CInt(txtA) > 12 Then
MsgBox ("مقدار ماه حد اکثر 12 است")
Me.TextBox1.Text = Mid(txt, 1, 5)
Exit Sub
End If
ElseIf Len(txt) = 10 Then
txtA = Mid(txt, 9, 2)
If CInt(txtA) > 31 Then
MsgBox ("مقدار روز حد اکثر 31 است")
Me.TextBox1.Text = Mid(txt, 1, 8)
Exit Sub
End If
End If
End Sub


سلام
آقا رسول ممنون از راهنمایتون من با کمی تغییرات در کد شما به نتیجه مورد نظرم رسید ولی در قسمت ماه هنوز مشکل دارم دستور خوب عمد نمیکنه نمونه براتون پیوست میکنم یه نگاهی بهش بندازید ببینید میشه کاریش کرد


Private Sub TextBox1_Change()
If Len(TextBox3.Value) = 8 Then TextBox3.Value = Format(TextBox3.Value, "####/##/##")
Dim txt, txtA As Variant
txt = Me.TextBox1.Text
If Len(txt) = 7 Then
txtA = Mid(txt, 6, 2)
If CInt(txtA) > 12 Then
MsgBox ("مقدار ماه حد اکثر 12 است")
Me.TextBox1.Text = Mid(txt, 1, 5)
Exit Sub
End If
ElseIf Len(txt) = 10 Then
txtA = Mid(txt, 9, 2)
If CInt(txtA) > 31 Then
MsgBox ("مقدار روز حد اکثر 31 است")
Me.TextBox1.Text = Mid(txt, 1, 8)
Exit Sub

میثم مقدم نیا
2017/04/13, 10:11
ممنون میشم جوابم را بدین

rasools13
2017/04/13, 12:10
با سلام دوباره
کد ذیل رو جایگزین کنید
.


Private Sub TextBox3_Change()
With Application.WorksheetFunction
Dim txt, txtA As Variant
txt = Me.TextBox3.Text
If Len(txt) <> 8 Then Me.TextBox3.Text = .Substitute(txt, "/", "")
If Len(txt) = 8 Then
txtA = Mid(txt, 5, 2)
If CInt(txtA) > 12 Then
MsgBox ("مقدار ماه حد اکثر 12 است")
Me.TextBox3.Text = Mid(txt, 1, 4)
Exit Sub
End If
txtA = Mid(txt, 7, 2)
If CInt(txtA) > 31 Then
MsgBox ("مقدار روز حد اکثر 31 است")
Me.TextBox3.Text = Mid(txt, 1, 6)
Exit Sub
End If
TextBox3.Text = Format(TextBox3.Text, "####/##/##")
End If
End With
End Sub

.

میثم مقدم نیا
2017/04/13, 20:26
با سلام دوباره
کد ذیل رو جایگزین کنید
.


Private Sub TextBox3_Change()
With Application.WorksheetFunction
Dim txt, txtA As Variant
txt = Me.TextBox3.Text
If Len(txt) <> 8 Then Me.TextBox3.Text = .Substitute(txt, "/", "")
If Len(txt) = 8 Then
txtA = Mid(txt, 5, 2)
If CInt(txtA) > 12 Then
MsgBox ("مقدار ماه حد اکثر 12 است")
Me.TextBox3.Text = Mid(txt, 1, 4)
Exit Sub
End If
txtA = Mid(txt, 7, 2)
If CInt(txtA) > 31 Then
MsgBox ("مقدار روز حد اکثر 31 است")
Me.TextBox3.Text = Mid(txt, 1, 6)
Exit Sub
End If
TextBox3.Text = Format(TextBox3.Text, "####/##/##")
End If
End With
End Sub

.

با سلام مجدد
آقا رسول من این کدی که دادید را امتحان کردم باز جواب نداد ولی کد اولی را یکم دسکاریش کردم مشکل حل شد



Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If (KeyAscii > 47 And KeyAscii < 58) Then
KeyAscii = KeyAscii
Else
KeyAscii = 0
End If
End Sub


Private Sub TextBox1_Change()
If Len(TextBox3.Value) = 8 Then TextBox3.Value = Format(TextBox3.Value, "####/##/##")
Dim txt, txtA As Variant
txt = Me.TextBox1.Text
If Len(txt) = 6 Then
txtA = Mid(txt, 5, 2)
If CInt(txtA) > 12 Then
MsgBox ("مقدار ماه حد اکثر 12 است")
Me.TextBox1.Text = Mid(txt, 1, 4)
Exit Sub
End If
ElseIf Len(txt) = 10 Then
txtA = Mid(txt, 9, 2)
If CInt(txtA) > 31 Then
MsgBox ("مقدار روز حد اکثر 31 است")
Me.TextBox1.Text = Mid(txt, 1, 8)
Exit Sub
End If
End If
End Sub

میثم مقدم نیا
2017/04/21, 08:51
سلام آقا رسول من با یه مشکلی در وارد کردن تاریخ روبرو شدم من محدوده تاریخ را به ۱۰ عدد محدود کردم ولی اکه تعداد اعداد وارد شده کمتر از حد مجاز باشن میخوام پیام خطا بده

میثم مقدم نیا
2017/04/27, 07:15
با سلام
سوال آخرم در مورد تاریخ تا اینجا من به کمک شما اساتید عزیز تونستم مشکلم را حل کنم
آیا امکانش هست مثل روز و ماه ، سال را هم محدود کرد که کاربر فقط از سال مشخص شده استفاده کند مثلا از سال ۱۳۹۵ تا ۱۴۰۰ یعنی اگر خارج از این محدوده بود پیام خطا بدهد
ممنون از شما اساتید عزیز

میثم مقدم نیا
2017/04/29, 14:43
سلام
راه حلی برای این سوال نبود
لطفاً اگه کسی چیز میدونه راهنماییم کنه

rasools13
2017/04/29, 19:56
سلام
کد ذیل رو در آخرین خط رویداد TextBox1_Change() کپی کنید
.


If CInt(Mid(txt, 1, 4)) < 1395 Or CInt(Mid(txt, 1, 4)) > 1400 Then msgbox("مقدار سال حداقل 1395 و حد اکثر 1400 انتخاب شود")

میثم مقدم نیا
2017/04/30, 17:14
سلام
کد ذیل رو در آخرین خط رویداد TextBox1_Change() کپی کنید.
If CInt(Mid(txt, 1, 4)) < 1395 Or CInt(Mid(txt, 1, 4)) > 1400 Then msgbox("مقدار سال حداقل 1395 و حد اکثر 1400 انتخاب شود")با سلام مجددآقا رسول من کد شما را در کد TextBox4_Change()قرار دادم ولی در هنگام تایپ عدد پیغام هی میاد مثل عدد 1 را میزنم پیغام میادش بعدشم عدد 3 را میزنم بازم پیغام میاد یعنی اینکه مثلا 1393 را کامل نکرده هی پیغام میده امید وارم که تونسته باشم منظورم را خوب رسونده باشم

Private Sub TextBox4_Change()
If Len(TextBox4.Value) = 8 Then TextBox4.Value = Format(TextBox4.Value, "####/##/##")
Dim txt, txtA As Variant
txt = Me.TextBox4.Text
If CInt(Mid(txt, 1, 4)) < 1395 Or CInt(Mid(txt, 1, 4)) > 1400 Then MsgBox "مقدار سال حداقل 1395 و حد اکثر 1400 انتخاب شود", vbMsgBoxRight, "تاريخ اشتباه است "
If Len(txt) = 6 Then
txtA = Mid(txt, 5, 2)
If CInt(txtA) > 12 Then
MsgBox "مقدار ماه حد اکثر 12 است", vbMsgBoxRight, "تاريخ اشتباه است "
Me.TextBox4.Text = Mid(txt, 1, 4)
Exit Sub
End If
ElseIf Len(txt) = 10 Then
txtA = Mid(txt, 9, 2)
If CInt(txtA) > 31 Then
MsgBox "مقدار روز حد اکثر 31 است", vbMsgBoxRight, "تاريخ اشتباه است "
Me.TextBox4.Text = Mid(txt, 1, 8)
Exit Sub
End If
End If
End Sub

rasools13
2017/04/30, 22:47
سلام
کد رو داخل یک if به صورت ذیل قرار بدین



If Len(txt) = 5 Then
If CInt(Mid(txt, 1, 4)) < 1395 Or CInt(Mid(txt, 1, 4)) > 1400 Then msgbox("مقدار سال حداقل 1395 و حد اکثر 1400 انتخاب شود"
End If

میثم مقدم نیا
2017/05/01, 08:34
سلام
کد رو داخل یک if به صورت ذیل قرار بدین



If Len(txt) = 5 Then
If CInt(Mid(txt, 1, 4)) < 1395 Or CInt(Mid(txt, 1, 4)) > 1400 Then msgbox("مقدار سال حداقل 1395 و حد اکثر 1400 انتخاب شود"
End If


با سلام مجدد
این را وارد کردم درست عمل میکنه ولی در صورت اشتباه تاریخ را خالی نمیکنه
من دستور Me.TextBox4.Text=Mid(tet, 1,0) را اضافه کردم ولی تاریخ را درست هم وارد میکنم باز اون را خالی میکنه

میثم مقدم نیا
2017/05/01, 08:56
سلام
کد رو داخل یک if به صورت ذیل قرار بدین



If Len(txt) = 5 Then
If CInt(Mid(txt, 1, 4)) < 1395 Or CInt(Mid(txt, 1, 4)) > 1400 Then msgbox("مقدار سال حداقل 1395 و حد اکثر 1400 انتخاب شود"
End If


با سلام مجدد
این را وارد کردم درست عمل میکنه ولی در صورت اشتباه تاریخ را خالی نمیکنه
من دستور Me.TextBox4.Text=Mid(tet, 1,0) را اضافه کردم ولی تاریخ را درست هم وارد میکنم باز اون را خالی میکنه

rasools13
2017/05/01, 11:09
سلام
به صورت ذیل اصلاحش کنید
..


If Len(txt) = 5 Then
If CInt(Mid(txt, 1, 4)) < 1395 Or CInt(Mid(txt, 1, 4)) > 1400 Then
msgbox("مقدار سال حداقل 1395 و حد اکثر 1400 انتخاب شود"
Me.TextBox4.Text = ""
End If
End If


.. ,ولی اگر در صورت اشتباه کادر تاریخ رو خالی نکنید بهتره چون این باعث نارضایتی کاربر شده و اینکه پاک نکردن باعث میشه کاربر بفهمه کدوم قسمت رو اشتباه نوشته

میثم مقدم نیا
2017/05/02, 06:11
سلام
به صورت ذیل اصلاحش کنید
..


If Len(txt) = 5 Then
If CInt(Mid(txt, 1, 4)) < 1395 Or CInt(Mid(txt, 1, 4)) > 1400 Then
msgbox("مقدار سال حداقل 1395 و حد اکثر 1400 انتخاب شود"
Me.TextBox4.Text = ""
End If
End If


.. ,ولی اگر در صورت اشتباه کادر تاریخ رو خالی نکنید بهتره چون این باعث نارضایتی کاربر شده و اینکه پاک نکردن باعث میشه کاربر بفهمه کدوم قسمت رو اشتباه نوشته

با سلام مجدد
آقا رسول این کد را اضافه کردم جواب نداد پیغام خطا میده


Private Sub TextBox4_Change()
If Len(TextBox4.Value) = 8 Then TextBox4.Value = Format(TextBox4.Value, "####/##/##")
Dim txt, txtA As Variant
txt = Me.TextBox4.Text
If CInt(Mid(txt, 1, 4)) < 1395 Or CInt(Mid(txt, 1, 4)) > 1400 Then MsgBox "مقدار سال حداقل 1395 و حد اکثر 1400 انتخاب شود", vbMsgBoxRight, "تاريخ اشتباه است "
Me.TextBox4.Text = ""
End If
End If
If Len(txt) = 6 Then
txtA = Mid(txt, 5, 2)
If CInt(txtA) > 12 Then
MsgBox "مقدار ماه حد اکثر 12 است", vbMsgBoxRight, "تاريخ اشتباه است "
Me.TextBox4.Text = Mid(txt, 1, 4)
Exit Sub
End If
ElseIf Len(txt) = 10 Then
txtA = Mid(txt, 9, 2)
If CInt(txtA) > 31 Then
MsgBox "مقدار روز حد اکثر 31 است", vbMsgBoxRight, "تاريخ اشتباه است "
Me.TextBox4.Text = Mid(txt, 1, 8)
Exit Sub
End If
End If
End Sub

اینم دستور کلیش ببینید کجا اشتباه کردم راهنماییم کنید