PDA

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



mohammad59
2016/06/10, 01:46
سلام
احتراما
کدی در vba می خوام که اگر در شیت 1 در خانه a1 کد ملی یا هر عددی تایپ کردم اگه این عدد در شیت2 در ستون داشت پیام و خطا بده.

با سپاس و درود

amir_ts
2016/06/10, 09:31
با سلام
کد زیر رو امتحان کنید.



Sub test()
Dim val As Variant
val = Application.Match(Sheet1.Range("a1"), Sheet2.Range("a1:a100"), 0)
If IsError(val) Then
MsgBox "مقدار مورد نظر پيدا نشد."
Else
MsgBox "مقدار مورد نظر پيدا شد."
End If
End Sub

mohammad59
2016/06/10, 12:57
سلام
احتراما

این کد رو ملاحظه بفرمایید این کد دستور ذخیره کردن جدول من تو اکسل هست ولی مشکلی که دارم وقتی کد ملی که در خانه H8 شیت 2 تایپ می شود تا ذخیره شود اگر در شیت 3 قبلا موجود باشه بازم ثبت می کنه که باید به من بگه این کد قبلا وجود دارد و نذاره ثبت کنم:
Private Sub Save()
Application.Calculation = xlCalculationManual
Dim Rng1 As Range
If Range("h8").Text = "" Then
MsgBox "لطفا موارد ستاره دار تکميل گردد "
Exit Sub
ElseIf Not IsNumeric(Range("h7").Text) Then
MsgBox "کد پرسنلي به صورت عدد وارد شود "
Exit Sub
End If
Sheets("sheet2").Select
Range("h7:h29").Select
Selection.Copy
Dim rngX As Range
Sheets("sheet2").Select
Set rngX = Worksheets("sheet3").Range("A1:A300").Find(Worksheets("sheet2").Range("h7"), lookat:=xlPart)
If Not rngX Is Nothing Then
Sheets("sheet3").Select
Range(rngX.Address).Select
'Past data changes
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Sheets("sheet2").Select
Range("h7:h29").Select
Selection.ClearContents
Range("h7").Select
MsgBox "اطلاعات جديد ذخيره شد"
Else
Sheets("sheet3").Select
Worksheets("sheet3").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial , Transpose:=True
'ActiveSheet.Paste
ActiveCell.Offset(1).EntireRow.Insert
End If
Application.Calculation = xlCalculationAutomatic

End Sub

amir_ts
2016/06/10, 14:24
اینطور که به نظر میرسه شما باید کد ملی رو قبل ثبت با لیست شیت 3 مقایسه کنید و در صورت وجود پیغام بده که کد ملی تکراریست.
این روش رو امتحان کنید البته یک پیشنهاد هست شاید راه بهتری هم باشه.



Dim val As Variant
val = Application.Match(Sheet2.Range("h8"), Sheet3.Range("a1:a100"), 0)
If Not IsError(val) Then
MsgBox " کد ملي تکراريست."
Exit Sub

mohammad59
2016/06/10, 14:44
سپاس برادر
خیلی کمک کردید ممنونم

mohammad59
2016/06/10, 15:36
یک کد ملی فقط مربوط به یک کد پرسنلی می تونه باشه
حال وقتی کد پرسنلی جدیدی ایجاد میشه ومتعاقبا کد ملی و در شیت 3 ذخیره میشه و دوباره برای کد پرسنلی جدید کد ملی تکراری با این کدی که نوشتید نمی تونه ایجاد و ذخیره کنه
تا اینجا درست
حال مشکل اینجاست که اگه من کد پرسنلی قبلی رو تو جدولم فراخوانی کنم اطلاعات کد ملی هم فراخوانی میشه و اگه بخوام دوباره ذخیره کنم کد بالار و اجرا می کنه و میگه تکراریست درحالی که من کد ملی قبلی رو می خوام ویرایش کنم

amir_ts
2016/06/10, 16:35
اگه من کد پرسنلی قبلی رو تو جدولم فراخوانی کنم اطلاعات کد ملی هم فراخوانی میشه
اگر لزوما زمان ویرایش احتیاجی به فراخوانی کد ملی ندارید کد ملی رو تو فراخوانی اطلاعات نیارید چون در اصل شما کد ملی رو ویرایش نمی کنید و اون رو یک بار به صورت صحیح وارد کردید فقط زمان ویرایش دیگر اطلاعات اون هم به ناچارمیاد که مشکل ساز میشه.یا اینکه زمان ویرایش از لیست کد ملی رو پاک کنید که زمان ویرایش دوباره ثبت بشه.

mohammad59
2016/06/10, 16:51
ممنونم از راهنمایی شماحتما یه تست می کنم