قفل سلول هایی که فرمول دارن

Collapse
X
 
  • زمان
  • نمایش
Clear All
new posts
  • ali.b

    • 2014/01/12
    • 798

    قفل سلول هایی که فرمول دارن

    سلام این کد رو در قسمت Vb شیت مورد نظر بزارین
    با این کد هر سلولی که توش فرمول باشه رو قفل میکنه اما روی سلول های دیگه کلیک کنید دیگه شیت قفل نیست. دیگه دردسرهای مربوط به قفل شیت رو هم ندارین
    کد:
    [COLOR=#646464]Private Sub Worksheet_SelectionChange(ByVal Target As Range)[/COLOR]   Dim rng As Range
       For Each rng In Target.Cells
          If rng.HasFormula Then
             ActiveSheet.Protect
             Exit Sub
          Else
             ActiveSheet.Unprotect
          End If
       Next rng [COLOR=#646464]End Sub[/COLOR]
    Last edited by ~M*E*H*D*I~; 2014/09/21, 06:44.

  • Skynet

    • 2017/03/02
    • 142

    #2
    با سلام
    من کاری که گفتید رو انجام دادم ولی فرقی نکرد!
    آیا نکته ای برای این کار وجود داره یا جایی از عملیاتی که انجام دادم اشتباه بوده ؟! لطفا در صورت امکان فایل نمونه بگذارید ممنونم
    Click image for larger version

Name:	Untitled.jpg
Views:	1
Size:	201.8 کیلو بایت
ID:	131909

    کامنت

    • Amir Ghasemiyan

      • 2013/09/20
      • 4476

      #3
      نوشته اصلی توسط Skynet
      با سلام
      من کاری که گفتید رو انجام دادم ولی فرقی نکرد!
      آیا نکته ای برای این کار وجود داره یا جایی از عملیاتی که انجام دادم اشتباه بوده ؟! لطفا در صورت امکان فایل نمونه بگذارید ممنونم
      [ATTACH=CONFIG]14437[/ATTACH]

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

      کد:
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)   
         Dim rng As Range
         For Each rng In Target.Cells
            If rng.HasFormula Then
               ActiveSheet.Protect
               Exit Sub
            Else
               ActiveSheet.Unprotect
            End If
         Next rng 
      End Sub

      کامنت

      • Skynet

        • 2017/03/02
        • 142

        #4
        با سلام و احترام
        عالیییییییی خیلی خیلی ممنونم فوق العاده بهم کمک میکنه مرسییی

        کامنت

        • Skynet

          • 2017/03/02
          • 142

          #5
          نوشته اصلی توسط Amir Ghasemiyan

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

          کد:
          Private Sub Worksheet_SelectionChange(ByVal Target As Range)   
             Dim rng As Range
             For Each rng In Target.Cells
                If rng.HasFormula Then
                   ActiveSheet.Protect
                   Exit Sub
                Else
                   ActiveSheet.Unprotect
                End If
             Next rng 
          End Sub

          ضمن تشکر مجدد، یک سوال؟
          آیا امکان این هست که این کد رو جوری طراحی کرد که در پایان کد دیگری اجرا شود ؟!
          چون من با ماکرو عملیاتی رو ضبط کردم که شامل اضافه کردن و حذف سلول ها و سطرهایی میشه که حاوی فرمول هم هستن، که با کپی این کد قفل فرمول در شیت مربوطه، ماکروی از قبل ضبط شده به مشکل بر می خوره چون نمی تونه سلول های حاوی فرمول رو حذف کنه و نیمه کاره متوقف میشه .
          آیا راهی برای حل این مشکل هست خیلی ممنونم ؟

          کامنت

          • Amir Ghasemiyan

            • 2013/09/20
            • 4476

            #6
            نوشته اصلی توسط Skynet
            ضمن تشکر مجدد، یک سوال؟
            آیا امکان این هست که این کد رو جوری طراحی کرد که در پایان کد دیگری اجرا شود ؟!
            چون من با ماکرو عملیاتی رو ضبط کردم که شامل اضافه کردن و حذف سلول ها و سطرهایی میشه که حاوی فرمول هم هستن، که با کپی این کد قفل فرمول در شیت مربوطه، ماکروی از قبل ضبط شده به مشکل بر می خوره چون نمی تونه سلول های حاوی فرمول رو حذف کنه و نیمه کاره متوقف میشه .
            آیا راهی برای حل این مشکل هست خیلی ممنونم ؟
            درست متوجه سوالتون نشدم اما چیزی که میخواین قابل انجامه. کافیه قبل از خط آخر اسم ماکرویی که ضبط کردین رو بنویسید

            کامنت

            • Skynet

              • 2017/03/02
              • 142

              #7
              ممنونم از شما

              کامنت

              • Skynet

                • 2017/03/02
                • 142

                #8
                نوشته اصلی توسط Amir Ghasemiyan
                درست متوجه سوالتون نشدم اما چیزی که میخواین قابل انجامه. کافیه قبل از خط آخر اسم ماکرویی که ضبط کردین رو بنویسید

                جناب قاسمیان عزیز، ببخشید نتونستم منظورمو رو درست بیان کنم، با یک مثال منظورم رو کامل می کنم.
                در فایل پیوست یک مثال تهیه کردم، که یک ماکرو جهت انتقال داده از یک جدول در شیت 2 به شیت 1 تهیه شده که جدول مربوط در شیت 1، یک ستون اخر رو بیشتر داره که حاوی محاسبه سود هست، ماکروی مربوطه جدول شیت 2 رو از سطر عنوان تا سطر آخر کپی کرده و به شیت 1 سطر یک میاره و بعد از انتقال ، سطر یک که حاوی عنوان جدول شیت 2 بود رو پاک میکنه!
                جدا از اینکه اصولا راه بهتری برای انجام این انتقال هست، اما درخواست من این هست که از کد قف گذاری ، در این مثال به چه صورتی استفاده کنم که بعد از انتقال ، سلول های حاوی فرمول، قفل شده و قابل ویرایش نباشند!
                خیلی خیلی ممنونم
                Click image for larger version

Name:	1.jpg
Views:	1
Size:	263.9 کیلو بایت
ID:	131914
                فایل های پیوست شده

                کامنت

                • Amir Ghasemiyan

                  • 2013/09/20
                  • 4476

                  #9
                  چیزی که من از پیام شما برداشت کردم اینه که اگه شیت قفل بشه مشکل شما حل میشه
                  من کدهاتون رو اصلاح کردم لطفا بررسی بفرمایید
                  فایل های پیوست شده

                  کامنت

                  • Skynet

                    • 2017/03/02
                    • 142

                    #10
                    با سلام و احترام
                    خیلی ممنونم جناب قاسمیان این شیوه هم بدون کد نویسی خیلی عالیه ممنونم.
                    یک مشکلی که وجود داره اینکه ظاهرا" در هر دو روش، خصوصیت Table از لحاظ فیلتر کردن عناصر و گسترش سطر های با فشردن کلید Inter از کار می افته که برای من که بی نهایت از Table ها در کارام استفاده می کنم مشکل بزرگی رو فراهم می کنه بطوریکه عملا نمی تونم از هیچکدوم استفاده کنم چون نیاز به خاصیت فیلتر عناصر و اضافه شدن سطرهای جدیدی با فشردن کلید tab دارم، با این حال خیلی خیلی ممنونم از توجه شما

                    کامنت

                    • kamaee
                      • 2014/05/10
                      • 1

                      #11
                      نوشته اصلی توسط amir ghasemiyan
                      سلام دوست عزیزمن کد دوستمون رو یکم اصلاح میکنم. بعضی جاها باید اینتر میخورده که نخورده
                      کد:
                      private sub worksheet_selectionchange(byval target as range)      dim rng as range   for each rng in target.cells      if rng.hasformula then         activesheet.protect         exit sub      else         activesheet.unprotect      end if   next rng end sub
                      سلام ، ببخشید ی سوال !!! چرا وقتی این کد را در محیط vba کپی می کنم ، زمان اجرای کد از من نام ماکرو رو میخاد ؟ و اجرا نمیشه ؟؟

                      کامنت

                      • Amir Ghasemiyan

                        • 2013/09/20
                        • 4476

                        #12
                        نوشته اصلی توسط kamaee
                        سلام ، ببخشید ی سوال !!! چرا وقتی این کد را در محیط vba کپی می کنم ، زمان اجرای کد از من نام ماکرو رو میخاد ؟ و اجرا نمیشه ؟؟
                        سلام دوست عزیز
                        این کد رو باید در قسمت کدهای شیت مورد نظر اضافه کنید نه یک ماژول و برای اجرای این کد باید تغییری در یک سلول اکسل ایجاد کنید تا نتیجه رو ببینید نه اینکه از داخل محیط vba کد رو اجرا کنید

                        کامنت

                        Working...