جلوگیری از Delete شدن بعضی ستونها

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

    • 2013/12/13
    • 74

    جلوگیری از Delete شدن بعضی ستونها

    با سلام دوستان

    یک ماکرو میخواستم که در صورت اقدام به Deleteکردن چند ستون خاص (مثلا ستون D و F ) پیغام خطا بدهد و اجازه حذف این ستون ها داده نشود
    ( اگر این ستون ها نامگذاری شده باشند آیا میشود ماکرو بالا را به جای ستون D و F ، با نام ستون نوشت ؟ (مثلا نام ستون ها "دستگاه" و "مشتری" باشد

    لطفا راهنمایی کنید من زیاد برنامه نویسی بلد نیستم ممنون
  • misammisam
    مدير تالار حسابداری و اکسل

    • 2014/04/04
    • 892
    • 64.00

    #2
    سلام
    شاید این به دردتون بخوره .
    سلول d1 تا f1 رو سلکت بکنید و بعد بنویسید ""= وکلیدهای shift+ctrl+enter رو بزنید که بصورت آرایه ای بشه .
    حالا دیگه نمیشه یک یا 2 ستون رو پاک کرد فقط میشه بطور همزمان هر سه تا ستونو با هم پاک کرد .
    فایل های پیوست شده
    [CENTER][SIGPIC][/SIGPIC]
    [/CENTER]
    [CENTER][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][FONT=Tahoma][INDENT]
    [CENTER][SIZE=3][URL="https://affstat.adro.co/click/adf04053-f8a6-439a-9ac4-e6a7e6f4b455"][B]اينجا كليك نكنيا ![/B][/URL][/SIZE]
    [/CENTER]
    [/INDENT]

    [/FONT][/FONT][/FONT][/FONT][/FONT]
    [/CENTER]

    کامنت

    • majid_mx4

      • 2012/06/25
      • 699

      #3
      دوست عزیز

      لطفا بفرمایید
      1- درکل شیت ها با آن ستون خاص و یا شیتی خاص با آن ستون

      2- کلا ستون حذف نشود و غیر قابل تغییر باشد ( اطلاعات آن ) یا اطلاعات ستون قابل تغییر باشد و فقط ستونها جذف نشوند


      بهر حال یک فایل که در تمامی شیتها اجازه حذف و یاتغییر ستون d و f را نمی دهد ضمیمه کرد.

      خلاصه فایل: جلو گیری از حذف و تغییر اطلاعات دوستون مشخص در تمامی شیتها
      با تشکر میر
      فایل های پیوست شده

      کامنت

      • abootorab

        • 2014/10/17
        • 351

        #4
        نوشته اصلی توسط hs208
        با سلام دوستان

        یک ماکرو میخواستم که در صورت اقدام به Deleteکردن چند ستون خاص (مثلا ستون D و F ) پیغام خطا بدهد و اجازه حذف این ستون ها داده نشود
        ( اگر این ستون ها نامگذاری شده باشند آیا میشود ماکرو بالا را به جای ستون D و F ، با نام ستون نوشت ؟ (مثلا نام ستون ها "دستگاه" و "مشتری" باشد

        لطفا راهنمایی کنید من زیاد برنامه نویسی بلد نیستم ممنون
        با درود
        با تشکر از میثم عزیز، حداقل بنده نتونستم از طریق ماکرو روش مناسبی پیدا کنم و تنها کاری که تونستم انجام بدم این بود که کاربر نتونه ستون یا محدوده تعریف شده رو انتخاب کنه که در نهایت بتونه اونو حذف کنه که البته خودم زیاد با این روش موافق نیستم اما شاید به کار شما بیاد دوست عزیز.
        کد PHP:
        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            If 
        Target.Address Range("دستگاه").Address Then
                Cells
        (1Target.Column).Select
                MsgBox 
        "You can not select this range!"
            
        End If
        End Sub 
        رو شیت مورد نظر راست کلیک و View Code را بزنید و سپس کد بالا رو در پنجره vb کپی کنید.

        کامنت

        • hs208

          • 2013/12/13
          • 74

          #5
          با سلام
          جناب majid_mx4 ممنون از کد ارسالی شما. اگر لطف کنید کد رو تغییر بدید که فقط در یک شیت خاص (مثلا sheet1) نتوان ستون های مورد نظر را پاک کرد و اطلاعات ستون نیز قابل تغییر باشد ممنون میشوم


          و با تشکر از دوست عزیز abootorab باید عرض کنم که پاسخ شما هم تا حدودی کار را راه میاندازد ولی یک نکته دارد که بعد نشان دادن پیغام باز هم گزینه پرسش در مورد shift دادن ستون به left , right و ... را میپرسد اگرچه بعد از پاسخ دادن به آن پرسش باز هم ستون را پاک نمیکند ولی به نظرم برای کابر گیج کننده باشد اگر لطف کنید این مورد را برطرف کنید بسیار از شما ممنون میشوم

          کامنت

          • majid_mx4

            • 2012/06/25
            • 699

            #6
            با سلام

            دوست عزیز احتراما راه دیکر پیشنهاد میکنم که بسیار بهتر و مطمئن تر از راه قبل و هم خیلی راحت است

            لطفا فایل ضمیمه را ببینید.

            خلاصه : استفاده از پروتکت برای جلو گیری از حذف ستون های دلخواه (مخصوصا سر ستون )

            با تشکر میر
            فایل های پیوست شده

            کامنت

            • hs208

              • 2013/12/13
              • 74

              #7
              سلام آقای میر

              با تشکر از پیگیری دوستانه شما

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

              اگر لطف کنید همون برنامه ای که اول نوشته بودید رو به صورتی تغییر بدید که فقط در یک شیت خاص (مثلا sheet1) نتوان ستون های مورد نظر را پاک کرد و اطلاعات ستون نیز قابل تغییر باشد ممنون میشوم

              یک نکته دیگه رو هم بگم چون ممکنه اون ستون هایی مهم جابجا بشوند بنابراین میخوام توی برنامه ای که به این منظور مینویسید از نامی که برای ستون انتخاب شده استفاده کنید مثلا ستون "dastgah" یا ستون "moshtary" (از شماره حروف ستون مثل A یا F استفاده نکنید)

              از لطف و بزگواری شما بسیار ممنونم

              کامنت

              • hs208

                • 2013/12/13
                • 74

                #8
                نوشته اصلی توسط abootorab
                با درود
                با تشکر از میثم عزیز، حداقل بنده نتونستم از طریق ماکرو روش مناسبی پیدا کنم و تنها کاری که تونستم انجام بدم این بود که کاربر نتونه ستون یا محدوده تعریف شده رو انتخاب کنه که در نهایت بتونه اونو حذف کنه که البته خودم زیاد با این روش موافق نیستم اما شاید به کار شما بیاد دوست عزیز.
                کد PHP:
                Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                    If 
                Target.Address Range("دستگاه").Address Then
                        Cells
                (1Target.Column).Select
                        MsgBox 
                "You can not select this range!"
                    
                End If
                End Sub 
                رو شیت مورد نظر راست کلیک و View Code را بزنید و سپس کد بالا رو در پنجره vb کپی کنید.

                آقای abootorab با سلام ، مجددا کد شما رو دقیق تر بررسی کردم
                اگر واضح تر بخوام مشکلش رو توضیح بدم اینه که با انتخاب ستون به ما پیغام میده که" امکان انتخاب این رنج وجود ندارد " ولی با تایید پیغام یک پنجره از طرف آفیس باز میشود که میتوان از آنجا گزینه Delete را انتخاب کرد و بعد راجع به نحوه shift دادن سلول میپرسد و با انتخاب هر نوع shift ، مقدار اولین سلول در همان ستون پاک شده و مقدار سلول مجاور جایگزین آن میشود

                آیا امکان برطرف کردن این مشکل هست؟ اگه باشه ممکنه از این کد هم یه جاهایی بتونم استفاده کنم

                ممنون

                کامنت

                • امين اسماعيلي
                  مدير تالار ويژوال بيسيك

                  • 2013/01/17
                  • 1198
                  • 84.00

                  #9
                  ba drod
                  با درود
                  کد:
                  Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
                  If Sh.CodeName = "Sheet1" Then
                      If ((Target.Column = 4 Or Target.Column = 6)) Then
                  
                  
                          With Application
                              .EnableEvents = False
                              .Undo
                              MsgBox "ÇÌÇÒ ÊÛííÑ äÏÇÑíÏ", 16
                              .EnableEvents = True
                          End With
                          
                      Else
                      
                          Exit Sub
                          
                      End If
                  End If
                  End Sub
                  in barhasbe code agha majide gole, onam chon gofti in kareto rah mindaze
                  این برحسب کد آقا مجید گله، اونم چون گفتی این کارت رو راه میندازه
                  Last edited by حسام بحرانی; 2015/03/10, 12:34.
                  در پناه خداوندگار ایران زمین باشید و پیروز

                  کامنت

                  • majid_mx4

                    • 2012/06/25
                    • 699

                    #10
                    با سلام

                    منم با استفاده از کد های دوست خوبم جناب آقای اسماعیلی عزیز کد را کامل تر کردم .

                    توضیح اینکه این کد فقط ستون d و f را میشناسه برای خواسته شما باید کدی تهیه شود که سر تیتر را شناسایی و شماره ستون آن را به کد بدهد و درواقع ستون توسط سر تیتر شناسایی بشه که کمی کار داره ولی شدنی ایست .


                    خلاصه : عدم حذف ستون 4 و 6 فقط در شیت 1 و قابلیت تغییر اطلاعات آن


                    با تشکر میر
                    فایل های پیوست شده

                    کامنت

                    • hs208

                      • 2013/12/13
                      • 74

                      #11
                      سلام دوستان
                      با تشکر از آقای میر

                      فایل آخر ارسالی از طرف شما دقیقا همون کاری رو انجام میده که من میخواستم. ازتون خیلی تشکر میکنم ولی یه مشکل دارم و اونم جابجا شدن ستون هاست.
                      امکانش هست کد بالا رو با نام ستون نوشت؟ مثلا نام ستون های من "moshtary" و "dastgah" میباشد.

                      خودم خیلی تلاش کردم ولی نشد. متاسفانه زیاد کدنویسی بلد نیستم. لطفا این بزرگواری رو در حق من بکنید . ممنون

                      کامنت

                      • sousani
                        • 2014/03/04
                        • 2

                        #12
                        سلام دوستان
                        من یک فرم در vba درست کردم برای تست اولیه مثلا محاسبه جذر و ... حالا چیکار کنم که وقتی فایل اکسل را میخوام باز کنم مستقیم بره روی فرم دیگه مجبور نشم از اکسل وارد vba بشم بعد ران کنم یعنی نیازی به دیدن خود اکسل ندارم فقط میخوام فرم را ببینم و محاسبه کنم من تازه کار هستم اگر عامیانه بگید ممنون میشم.

                        کامنت

                        • abootorab

                          • 2014/10/17
                          • 351

                          #13
                          نوشته اصلی توسط hs208
                          سلام دوستان
                          با تشکر از آقای میر

                          فایل آخر ارسالی از طرف شما دقیقا همون کاری رو انجام میده که من میخواستم. ازتون خیلی تشکر میکنم ولی یه مشکل دارم و اونم جابجا شدن ستون هاست.
                          امکانش هست کد بالا رو با نام ستون نوشت؟ مثلا نام ستون های من "moshtary" و "dastgah" میباشد.

                          خودم خیلی تلاش کردم ولی نشد. متاسفانه زیاد کدنویسی بلد نیستم. لطفا این بزرگواری رو در حق من بکنید . ممنون
                          درود مجدد و با تشکر از جناب میر
                          دوست عزیز فایل ضمیمه رو به نحوی کدنویسی کردم که کاربر نمیتونه ستونهایی که شما در Name Manager نامگذاری میکنید انتخاب کند و پیغام هشدار ظاهر میشود، در واقع کد چند پست قبل رو اصلاح کردم. در این فایل 2ستون (ستونهای D و F) طبق خواسته شما به نامهای moshtari و dastgah نامگذاری کردم.
                          چیزی که در این فایل مد نظر قرار دادم اینه که کاربر حتی اگر ستونهای قبل یا بعد ستونهای مورد نظر رو حذف کنه باز هم کنترل عدم انتخاب به درستی عمل میکنه و مانع از انتخاب ستونهای تعریف شده میشه، حتی زمانیکه چند ستون با هم انتخاب شوند اگر یکی یا هر دو ستون مورد نظر ما در این انتخاب باشند باز پیغام هشدار ظاهر شده و مانع از انتخاب میشود.
                          امیدوارم این روش بهتون جواب بده.
                          فایل های پیوست شده

                          کامنت

                          • abootorab

                            • 2014/10/17
                            • 351

                            #14
                            نوشته اصلی توسط sousani
                            سلام دوستان
                            من یک فرم در vba درست کردم برای تست اولیه مثلا محاسبه جذر و ... حالا چیکار کنم که وقتی فایل اکسل را میخوام باز کنم مستقیم بره روی فرم دیگه مجبور نشم از اکسل وارد vba بشم بعد ران کنم یعنی نیازی به دیدن خود اکسل ندارم فقط میخوام فرم را ببینم و محاسبه کنم من تازه کار هستم اگر عامیانه بگید ممنون میشم.
                            با درود
                            در پنجره vb روی ThisWorkbook دابل کلیک کنید و کد زیر رو در محیط مربوطه کپی کنید.
                            کد PHP:
                            Private Sub Workbook_Open()
                                
                            Application.Visible False
                                UserForm1
                            .Show
                            End Sub 

                            کامنت

                            • majid_mx4

                              • 2012/06/25
                              • 699

                              #15
                              با سلام

                              جناب آقای Abootorab بسیار ممنون و تشکر بنده را پذیرا باشید من تازه اومد که دیدم زحمتش افتاده گردن شما امیدوارم که دوست خوبمان هم به کد دلخواهش رسیده باشند پیشا پیش سال نو مبارک و در امان خدا .


                              با تشکر میر

                              کامنت

                              چند لحظه..