در خواست کد خطای تکراری در vba

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • mohammad59

    • 2014/03/13
    • 64

    [حل شده] در خواست کد خطای تکراری در vba

    سلام
    احتراما
    کدی در vba می خوام که اگر در شیت 1 در خانه a1 کد ملی یا هر عددی تایپ کردم اگه این عدد در شیت2 در ستون داشت پیام و خطا بده.

    با سپاس و درود
  • amir_ts

    • 2015/03/17
    • 1247

    #2
    با سلام
    کد زیر رو امتحان کنید.
    کد:
    [LEFT]
    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
    [/LEFT]
    فایل های پیوست شده
    [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

    کامنت

    • mohammad59

      • 2014/03/13
      • 64

      #3
      سلام
      احتراما

      این کد رو ملاحظه بفرمایید این کد دستور ذخیره کردن جدول من تو اکسل هست ولی مشکلی که دارم وقتی کد ملی که در خانه 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(Workshe ets("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
      Last edited by mohammad59; 2016/06/10, 14:33.

      کامنت

      • amir_ts

        • 2015/03/17
        • 1247

        #4
        اینطور که به نظر میرسه شما باید کد ملی رو قبل ثبت با لیست شیت 3 مقایسه کنید و در صورت وجود پیغام بده که کد ملی تکراریست.
        این روش رو امتحان کنید البته یک پیشنهاد هست شاید راه بهتری هم باشه.
        کد:
        [LEFT]
        Dim val As Variant
        val = Application.Match(Sheet2.Range("h8"), Sheet3.Range("a1:a100"), 0)
            If Not IsError(val) Then
            MsgBox " کد ملي تکراريست."
        Exit Sub
        [/LEFT]
        [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

        کامنت

        • mohammad59

          • 2014/03/13
          • 64

          #5
          سپاس برادر
          خیلی کمک کردید ممنونم

          کامنت

          • mohammad59

            • 2014/03/13
            • 64

            #6
            یک کد ملی فقط مربوط به یک کد پرسنلی می تونه باشه
            حال وقتی کد پرسنلی جدیدی ایجاد میشه ومتعاقبا کد ملی و در شیت 3 ذخیره میشه و دوباره برای کد پرسنلی جدید کد ملی تکراری با این کدی که نوشتید نمی تونه ایجاد و ذخیره کنه
            تا اینجا درست
            حال مشکل اینجاست که اگه من کد پرسنلی قبلی رو تو جدولم فراخوانی کنم اطلاعات کد ملی هم فراخوانی میشه و اگه بخوام دوباره ذخیره کنم کد بالار و اجرا می کنه و میگه تکراریست درحالی که من کد ملی قبلی رو می خوام ویرایش کنم

            کامنت

            • amir_ts

              • 2015/03/17
              • 1247

              #7
              اگه من کد پرسنلی قبلی رو تو جدولم فراخوانی کنم اطلاعات کد ملی هم فراخوانی میشه
              اگر لزوما زمان ویرایش احتیاجی به فراخوانی کد ملی ندارید کد ملی رو تو فراخوانی اطلاعات نیارید چون در اصل شما کد ملی رو ویرایش نمی کنید و اون رو یک بار به صورت صحیح وارد کردید فقط زمان ویرایش دیگر اطلاعات اون هم به ناچارمیاد که مشکل ساز میشه.یا اینکه زمان ویرایش از لیست کد ملی رو پاک کنید که زمان ویرایش دوباره ثبت بشه.
              [SIZE=7][B][COLOR=navy][FONT=IranNastaliq]ای برادر تو همه اندیشه ای[/FONT][/COLOR][/B][/SIZE]

              کامنت

              • mohammad59

                • 2014/03/13
                • 64

                #8
                ممنونم از راهنمایی شماحتما یه تست می کنم

                کامنت

                چند لحظه..