قفل شدن سلول بعد از وارد کردن اطلاعات

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • شهاب1400

    • 2021/03/19
    • 10

    پرسش قفل شدن سلول بعد از وارد کردن اطلاعات

    سلام
    میخواستم یک سلول رو بعد از اینکه عدد رو وارد کردم و ذخیره رو زدم دیگه قابل ویرایش نباشه مگر اینکه رمز رو داشته باشه .
    حتما بعد از زدن save، قابل ویرایش نباشه مگر رمز رو داشته باشه
  • شهاب1400

    • 2021/03/19
    • 10

    #2
    کسی میتونه کمک کنه

    کامنت

    • ~M*E*H*D*I~
      • 2011/10/19
      • 4377
      • 70.00

      #3
      درود به لینک زیر مراجعه کنید

      [CENTER]
      [SIGPIC][/SIGPIC]
      [/CENTER]

      کامنت

      • شهاب1400

        • 2021/03/19
        • 10

        #4
        منظور من این هست که توی ویژوال بیسیک کدی نوشته بشه که بعد از اینکه عدد رو داخل سلول وارد کردم و ذخیره رو زدم امکان ویرایش نباشه مگر اینکه همون رمزی رو که داخل کد نویسی وارد شده رو داشته باشه تا ویرایش کنه
        کدی که باید توی ویژاول نوشته بشه رو میخوام

        کامنت

        • generalsamad
          مدير تالار توابع

          • 2014/06/22
          • 1496

          #5
          با سلام
          از این کد میتونید استفاده کنید
          کد PHP:
          Dim mRg As Range
          Dim mStr 
          As String
           
          Private Sub Worksheet_BeforeDoubleClick(ByVal Target As RangeCancel As Boolean)
          If 
          Not Intersect(Range("A:X"), TargetIs Nothing Then
              Set mRg 
          Target.Item(1)
              
          mStr mRg.Value
          End 
          If
          End Sub
          Private Sub Worksheet_Change(ByVal Target As Range)
              
          Dim xRg As Range
              On Error Resume Next
              Set xRg 
          Intersect(Range("A:X"), Target)
              If 
          xRg Is Nothing Then Exit Sub
              Target
          .Worksheet.Unprotect Password:="123"
              
          If xRg.Value <> mStr Then xRg.Locked True
              Target
          .Worksheet.Protect Password:="123"
          End Sub
          Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          If 
          Not Intersect(Range("A:X"), TargetIs Nothing Then
              Set mRg 
          Target.Item(1)
               
          mStr mRg.Value
          End 
          If
          End Sub 
          کد برای محدوده A:X شیت اول می باشد و کلمه عبور هم 123 می باشد
          فایل ضمیمه شد
          فایل های پیوست شده
          [CENTER]
          [SIGPIC][/SIGPIC]
          [/CENTER]

          کامنت

          • دشظ

            • 2021/01/11
            • 34

            #6
            چقدر خوب و کاربردیه این کد
            فقط اگر دو یا چند رنج مشخص یا مثلا تیبل داشته باشیم چه تغییری باید در کد بدهیم؟
            برای یک فایل خودم اضافه ش کردم وقتی برای اولین بار در رنج مورد نظر چیزی مینویسم دیگه حتی سلول های خالی رو هم نمیتونم بنویسم ولی این مشکل در فایل خود شما نبود
            یه مساله دیگه ای هم که هست ای کاش وقتی رو سلول های مورد نظر کلیک میکردیم یه فرم کوچولو ظاهر میشد و ازمون رمز میخواست و رمز رو همونجا میزدیم

            کامنت

            • generalsamad
              مدير تالار توابع

              • 2014/06/22
              • 1496

              #7
              با سلام
              برای چندین محدوده میتونید از and استفاده کنید یا محدوده را بزرگتر در نظر بگیرید
              برای فایل خودتون هم میتونید کل محدوده یک شیت را انتخاب کرده و به فرمت سل برید یا(CTRL+1) را بزنید سپس به ریبون Protection رفته و تیک چک باکس Locked را بردارید و ok کنید.
              برای قسمت آخر سوالتون هم باید از رویدادها استفاده کرد که اگه سلولی که انتخاب شد که lock شده باشه یک فرم باز بشه و در صورتی که رمز رو درست وارد کردیم اون سلول هم unlock و ویرایش بشه
              [CENTER]
              [SIGPIC][/SIGPIC]
              [/CENTER]

              کامنت

              • generalsamad
                مدير تالار توابع

                • 2014/06/22
                • 1496

                #8
                با سلام
                اینم برای قسمت آخر سوالتون برای محدوده های A:B و D:E
                کد PHP:
                Dim mRg As Range
                Dim mStr 
                As String
                Private Sub Worksheet_BeforeDoubleClick(ByVal Target As RangeCancel As Boolean)
                If 
                Not Intersect(Range("A:B,D:E"), TargetIs Nothing Then
                    Set mRg 
                Target.Item(1)
                    
                mStr mRg.Value
                End 
                If
                End Sub
                Private Sub Worksheet_Change(ByVal Target As Range)
                    
                Dim xRg As Range
                    On Error Resume Next
                    Set xRg 
                Intersect(Range("A:B,D:E"), Target)
                    If 
                xRg Is Nothing Then Exit Sub
                    Target
                .Worksheet.Unprotect Password:="123"
                    
                If xRg.Value <> mStr Then xRg.Locked True
                    Target
                .Worksheet.Protect Password:="123"
                End Sub
                Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                On Error Resume Next
                If Not Intersect(Range("A:B,D:E"), TargetIs Nothing Then
                    Set mRg 
                Target.Item(1)
                     
                mStr mRg.Value
                End 
                If
                If 
                Selection.Locked True Then
                        ActiveSheet
                .Unprotect
                End 
                If
                End Sub 
                فایل ضمیمه گردید
                فایل های پیوست شده
                Last edited by generalsamad; 2021/03/24, 10:47.
                [CENTER]
                [SIGPIC][/SIGPIC]
                [/CENTER]

                کامنت

                • شهاب1400

                  • 2021/03/19
                  • 10

                  #9
                  2 تا مشکل من با کدنویسی بالا حل نشده
                  اول اینکه پس از وارد کردن عدد و رفتن به سلول بعدی، سلول قبلی قفل می شود در صورتی که من میخوام پس از وارد کردن عدد و زدن save دیگر قابل ویرایش نباشد و فقط فردی که رمز را دارد بتواند تغییر ایجاد کند
                  دوم اینکه رمز 123 که داخل کد نویسی هست به کل شیت تعمیم داده می شود در صورتی که خواسته من این است که مثلا از a تا l یک رمز جدا داشته باشه و از l تا q رمزش داخل کدنویسی باشه و با زدن رمز داخل کد نویسی کل شیت فعال نشود
                  تشکر

                  کامنت

                  • دشظ

                    • 2021/01/11
                    • 34

                    #10
                    ممنون
                    من همین کد رو برای فایل خودم اضافه کردم و فقط رنج (سه جا) و رمز (دو جا) رو عوض کردم ولی هر رنجی که میزنم رمز رو میاره سلول خالی رو هم میزنم باز رمز رو میاره رمز رو هم بزنم باز نمیتونم چیزی تایپ کنم یا ویرایش کنم و ارور زیر رو میاره - رنج خودم از b تا m هست
                    ولی در فایل خود شما این مشکل این نیست و طبیعیه
                    مشکل من کجاست آیا باید جاهای دیگه کد رو هم تغییر بدم؟
                    Click image for larger version

Name:	3.png
Views:	1
Size:	184.6 کیلو بایت
ID:	138695Click image for larger version

Name:	4.png
Views:	1
Size:	183.7 کیلو بایت
ID:	138696


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

                    آپدیت دوم : الان فایل خود شما رو دوباره نگاه انداختم تو فایل شما فقط برای سلول های پر شده و رنج مورد نظر رمز میخواد ولی همون کد رو من وارد فایلم میکنم کل شیت قفل میشه و کل سلول ها از خالی تا پر
                    تو فایل خود شما هم بعضی وقت ها قاطی میکنه یعنی یک بار رمز رو میزنم میخوام ویرایش کنم دو باره مثل عکس دوم میگه شیت قفل شده هست و باید برم روی شیت راست کلیک کنم و رمز رو اونجا هم وارد کنم تا بتونم ویرایشش کنم
                    Last edited by دشظ; 2021/03/24, 16:27.

                    کامنت

                    • شهاب1400

                      • 2021/03/19
                      • 10

                      #11
                      سلام
                      آیا کسی هست؟

                      کامنت

                      • iranweld

                        • 2015/03/29
                        • 3341

                        #12
                        با سلام

                        و کسب اجازه از دوست عزیز جنرال صمد

                        برای قفل شدن سلولها ابتدا باید تیگ lock سلولها را مطابق تصاویر پیوست تنظیم کنید.

                        در مرحله اول این تیگ را بردارید

                        Click image for larger version

Name:	1.png
Views:	1
Size:	99.8 کیلو بایت
ID:	138697

                        مرحله دوم محدوده مورد نظر را انتخاب نموده و این تیگ را فعال کنید.
                        میتوانید برای هر محدوده جداگانه انجام دهید

                        Click image for larger version

Name:	2.png
Views:	1
Size:	138.8 کیلو بایت
ID:	138698
                        فایل های پیوست شده

                        کامنت

                        • دشظ

                          • 2021/01/11
                          • 34

                          #13
                          اول تیک locked رو برداشتم بعد کدم رو پست کردم بعد که خواستم تیک locked رو بذاز ولی راست کلیک که میکنم format sell کلا برام نمیاد
                          Click image for larger version

Name:	1.png
Views:	1
Size:	194.6 کیلو بایت
ID:	138700

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

                          کامنت

                          • iranweld

                            • 2015/03/29
                            • 3341

                            #14
                            سلام

                            شاید با اجرای کد شیت شما پروتکت شده، شیت رو از این حالت خارج کنید

                            کامنت

                            • شهاب1400

                              • 2021/03/19
                              • 10

                              #15
                              سلام
                              منظور من این است که پس از وارد کردن اعداد داخل سلول به صورت اتوماتیک قفل نشود و موقعی که ما save را زدیم قفل شود و قابل ویرایش نباشد مگر اینکه رمز رو داشته باشه( باز هم تکرار می کنم که پس از زدن save قفل شود و قابل ویرایش نباشد)
                              موضوع دوم اینکه رمز کل شیت به صورت واحد نباشد مثلا ستونهای A تا D یک رمز جداگانه داشته باشد و ستونهای L تا Q هم رمز جداگانه داشته باشد.
                              تشکر

                              کامنت

                              چند لحظه..