اشکال در انتهای کد vba

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

    • 2014/03/08
    • 19

    اشکال در انتهای کد vba

    با سلام و خسته نباشید؛
    ابتدائاً اگر سوالم را در جای خودش مطرح نکرده باشم عذر می خوام چون تازه وارد هستم.

    لطفاً کدهای فایل پیوستی را ( که کوتاه است) مطالعه فرموده و فایل اصلاح شده آنرا درصورت امکان به این آدرس ایمیل فرمائید:
    abdollahes@yahoo.com

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

    با تشکر - منتظر جواب شما هستم.
    فایل های پیوست شده
  • امين اسماعيلي
    مدير تالار ويژوال بيسيك

    • 2013/01/17
    • 1198
    • 84.00

    #2
    ba drod
    kolan nafahmidam chera az len estefade karde bodi
    کد:
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
       
       If Sheet2.Range("D1").Value = "" Then
        MsgBox "khali"
       Sheet1.Select
        Sheet1.Range("b5").Select
        Cancel = True
        Exit Sub
       End If
        
    End Sub
    در پناه خداوندگار ایران زمین باشید و پیروز

    کامنت

    • navid136220

      • 2014/03/08
      • 19

      #3
      با سلام و خسته نباشید خدمت مدیر محترم جناب آقای اسماعیلی

      همین کدهایی که شما زحمت کشیده و اصلاح کردید را نیز امتحان کردم باز در موقع اجرای آخر کدها، وقتی که خانه «b5 » شیت اول، به حالت انتخاب در می آید بعد از آن دیگه شیت به حالت غیرعادی در می آید یعنی یا نمی توان عدد نوشت یا وقتی که عدد می نویسی در خانه مذکور نوشته نمی شود ولی در خانه «b5 » شیت دوم درج می شود در حالیکه میخواهم در آخر کار وقتی که خانه «b5 »شیت اول به حالت انتخاب در آمد بتوان عدد نوشت تا آن عدد به طور خودکار در خانه «d1 » شیت دوم ظاهر شود.
      خیلی خیلی ممنون از شما به خاطر پاسخ سریعتان و وقتی که می گذارید. - اسکندرزاده

      کامنت

      • navid136220

        • 2014/03/08
        • 19

        #4
        با سلام و خسته نباشید خدمت مدیر محترم جناب آقای اسماعیلی

        همین کدهایی که شما زحمت کشیده و اصلاح کردید را نیز امتحان کردم باز در موقع اجرای آخر کدها، وقتی که خانه «b5 » شیت اول، به حالت انتخاب در می آید بعد از آن دیگه شیت به حالت غیرعادی در می آید یعنی یا نمی توان عدد نوشت یا وقتی که عدد می نویسی در خانه مذکور نوشته نمی شود ولی در خانه «b5 » شیت دوم درج می شود در حالیکه میخواهم در آخر کار وقتی که خانه «b5 »شیت اول به حالت انتخاب در آمد بتوان عدد نوشت تا آن عدد به طور خودکار در خانه «d1 » شیت دوم ظاهر شود.
        خیلی خیلی ممنون از شما به خاطر پاسخ سریعتان و وقتی که می گذارید. - اسکندرزاده

        کامنت

        • majid_mx4

          • 2012/06/25
          • 699

          #5
          با سلام

          ضمن تشکر فراوان از دوست و استاد محترم جناب آقای اسماعیلی

          دوست عزیز

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

          و نتیجه را اعلام کنید .

          با تشکر میر

          کامنت

          • navid136220

            • 2014/03/08
            • 19

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

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

            با تشکر مجدد از پاسخ شما

            کامنت

            • majid_mx4

              • 2012/06/25
              • 699

              #7
              با سلام

              دوست عزیز

              از اینکه نتوانستم منظور خودم را برسانم پوزش می طلبم

              بنده به خیال اینکه دستورات دیگری نیز در ماکرو وجود دارد این اتفاق می افتد چون خود این دستور به خودی خود دارای هیچ فرمانی مبنی بر قفل کردن و یا ... نیست . ( امکان دارد بازهم تکرار میکنم امکان دارد مشکل با پرینتر نیز عامل دیگری باشد که خودم این را صفر می دانم )

              ( هر دو دستور بالا را تست کردم و بدون هیچ مشکلی و اتفاقی اجرا شد )

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

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

              امیدوارم که توانسته باشم منظورم را رسانده باشم .

              با تشکر میر

              کامنت

              • navid136220

                • 2014/03/08
                • 19

                #8
                با سلام و خسته نباشید خدمت شما دوستان عزیز که جهت حل مشکل بنده وقت میگذارید؛

                فرمایش های شما را انجام دادم (هم در یک فایل دیگر کپی کردم و تست، و هم در کامپیوترهای دیگر یکبار با پرینتر و یکبار بدون پرینتر چک کردم ) ولی باز همان مشکل برقراربود و شیت هنگ می کرد و وقتی بعد از اجرا می خواستم در خانه b5 شیت اول، عددی بنویسم ظاهراً به صورت نامرئی (بدون رنگ فونت) می نوشت ولی در عمل در خانه b5 شیت دوم درج میشد یعنی من فکر می کنم که این کدهایی که من نوشتم در موقع انتقال از شیت دوم به شیت اول (بعد از ظاهر شدن پیغامی با متن خالی)، دچار مشکل و سردرگمی میشود و به همین خاطر بعد از اجرای کدها و انتخاب ظاهری خانه b5 در شیت اول، هنگ می کند.
                هر چند مشکلم سرجاشه ولی به خاطر پاسخ ها و عنایت های شما عزیزان متشکرم.

                با تشکر

                کامنت

                • majid_mx4

                  • 2012/06/25
                  • 699

                  #9
                  با سلام

                  لطفا فایل ضمیمه ار مشاهده نمایید ( فیلم اجرای دستورات شما بدون هیچ تغییری )

                  این فایل در ویندوز 7 ---- 64bit آفیس 2010 ---32bit اجرا شده .

                  مطمئنن دستورات ایرادی ندارند .
                  موفق باشید میر
                  فایل های پیوست شده

                  کامنت

                  • navid136220

                    • 2014/03/08
                    • 19

                    #10
                    با سلام و احترام

                    واقعاً متشکرم از لطف شما که حتی فایل ویدیوئی اجرای کدها را نیز قرار دادید. و اما در مورد نحوه اجرای شما، باید عرض کنم که شما وقتی در شیت اول بنام فرم اطلاعات هستید دستور پرینت صادر می کنید درسته در این حالت خطایی رخ نمی دهد ولی منظور من این است که وقتی در شیت دوم بنام فرم اصلی هستیم و دستور پرینت صادر می کنیم شرط بررسی شود که اگر خانه d1 در این شیت دوم خالی بود عمل پرینت متوقف شود و شیت دوم غیرفعال و به شیت اول انتقال یابد و خانه b5 شیت اول به حالت انتخاب و آماده ویرایش درآید.

                    با تشکر مجدد و صمیمانه از جناب آقای میر

                    کامنت

                    • majid_mx4

                      • 2012/06/25
                      • 699

                      #11
                      با سلام

                      لطفا به جای دستور زیر

                      کد:
                      If Len(Sheets(2).Range("d1")) = 0 Then
                      از دستور

                      کد:
                       If Len(ActiveSheet.Range("d1")) = 0 Then
                      استفاده نمایید.
                      راه دیگر این است که نام فایل اصلی خود را به انگلیسی تغییرمثال Asli دهید.

                      سپس از دستور زیر استفاده نمایید

                      کد:
                      If Len(Sheets("Asli").Range("d1")) = 0 Then
                      موفق باشید میر
                      Last edited by majid_mx4; 2016/02/10, 15:19.

                      کامنت

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

                        • 2013/01/17
                        • 1198
                        • 84.00

                        #12
                        vala man code ro ke mizanam erori pish nemiad
                        nemidonam moshkel shoma az kojas ke hang mikone.
                        در پناه خداوندگار ایران زمین باشید و پیروز

                        کامنت

                        • Javid Mokhtari
                          مدير تالار ويژوال بيسيك

                          • 2012/01/16
                          • 1212
                          • 73.00

                          #13
                          نوشته اصلی توسط navid136220
                          با سلام و احترام

                          واقعاً متشکرم از لطف شما که حتی فایل ویدیوئی اجرای کدها را نیز قرار دادید. و اما در مورد نحوه اجرای شما، باید عرض کنم که شما وقتی در شیت اول بنام فرم اطلاعات هستید دستور پرینت صادر می کنید درسته در این حالت خطایی رخ نمی دهد ولی منظور من این است که وقتی در شیت دوم بنام فرم اصلی هستیم و دستور پرینت صادر می کنیم شرط بررسی شود که اگر خانه d1 در این شیت دوم خالی بود عمل پرینت متوقف شود و شیت دوم غیرفعال و به شیت اول انتقال یابد و خانه b5 شیت اول به حالت انتخاب و آماده ویرایش درآید.

                          با تشکر مجدد و صمیمانه از جناب آقای میر
                          سلام برادر...

                          من هم کدهارو تست کردم مشکلی نبود...

                          آیا این فایلی که شما قرار دادین دقیقا همان فایلی است که برای شما خطا میدهد...؟

                          لطفا یک فیلم کوتاه از روند اجرا و خطای فایلتون قرار بدهید...
                          [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
                          بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

                          شرکت در دوره:
                          [/FONT][/SIZE]
                          [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
                          [/B][/FONT][/SIZE]
                          [/CENTER]
                          [/INDENT]
                          [/FONT]

                          کامنت

                          • navid136220

                            • 2014/03/08
                            • 19

                            #14
                            با سلام و خسته نباشید خدمت جناب آقای میر و تمامی دوستان عزیز که پاسخگوی بنده هستند؛

                            فایل ویدیویی مربوط به اشکال بوجود آمده را پیوست نمودم انشاء الله که گویا باشد.

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

                            کامنت

                            • Javid Mokhtari
                              مدير تالار ويژوال بيسيك

                              • 2012/01/16
                              • 1212
                              • 73.00

                              #15
                              نوشته اصلی توسط navid136220
                              با سلام و خسته نباشید خدمت جناب آقای میر و تمامی دوستان عزیز که پاسخگوی بنده هستند؛

                              فایل ویدیویی مربوط به اشکال بوجود آمده را پیوست نمودم انشاء الله که گویا باشد.

                              با تشکر مجدد
                              دوست عزیز به احتمال زیاد مشکل در خود رویداد Beforeprint هستش.

                              برای اینکه از این موضوع مطمئن بشیم شما در شیت asli یک CommandButton ایجاد کرده و کد زیر رو داخلش قرار بدین و کد رو اجرا کنید.ببینید باز مشکل پابرجاست...

                              نتیجه رو هم اعلام کنید.

                              کد PHP:

                                 
                              If Len(Sheets("asli").Range("d1")) = 0 Then
                                      MsgBox 
                              "khali"
                                      
                              Sheets("faree").Select
                                      Sheets
                              ("faree").Range("b5").Select
                                      
                              Exit Sub
                                  
                              Else
                                      
                              Sheet1.PrintOut
                                 End 
                              If 
                              [FONT=Tahoma][INDENT][CENTER][SIZE=3][FONT=courier new][B][FONT=comic sans ms][SIZE=3][FONT=arial]دوره های آموزش رایگان اکسل از صفر تا پیشرفته بصورت تصویری
                              بیش از [COLOR=#008000]60[/COLOR] جلسه آموزش ویدئویی رایگان

                              شرکت در دوره:
                              [/FONT][/SIZE]
                              [SIZE=5] [FONT=Tahoma][FONT=courier new][B][URL]https://javidsoft.ir/courses/[/URL][/B][/FONT][/FONT][/SIZE][/FONT]
                              [/B][/FONT][/SIZE]
                              [/CENTER]
                              [/INDENT]
                              [/FONT]

                              کامنت

                              چند لحظه..