اجرای کدهای VBA با کلیک بر روی تب شیت

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

    • 2010/09/17
    • 14

    اجرای کدهای VBA با کلیک بر روی تب شیت

    سلام
    میخوام کدی بنویسم که با کلیک بر روی تب شیت 2 یک پیغام نشان بدهد مبنی بر اینکه مایل به آپدیت اطلاعات شیت هستید یا خیر که با انتخاب بله ، کدی که نوشته شده اجرا شود.
  • mrexcel

    • 2010/02/03
    • 435

    #2
    RE: اجرای کدهای VBA با کلیک بر روی تب شیت

    براي اين كار بايد در محيط vb بر روي sheet مورد نظر كليك راست كرده سپس در قسمت event حادثه گزينه activate را انتخاب مبكنبم و كد مورد نظر را در قسمت مورد نظر تايپ ميكنيم . از اين به بعد هر گار وارد اين صفحه ميخواهيم بشويم اين كد انجام ميپذيرد
    زنگ تفريح دنيا هميشگي نيست ، ساعت بعد حساب داريم

    کامنت

    • phpa80

      • 2010/09/17
      • 14

      #3
      RE: اجرای کدهای VBA با کلیک بر روی تب شیت

      نوشته اصلی توسط mrexcel
      براي اين كار بايد در محيط vb بر روي sheet مورد نظر كليك راست كرده سپس در قسمت event حادثه گزينه activate را انتخاب مبكنبم و كد مورد نظر را در قسمت مورد نظر تايپ ميكنيم . از اين به بعد هر گار وارد اين صفحه ميخواهيم بشويم اين كد انجام ميپذيرد
      ممنون
      یه سوال دیگه هم دارم .
      آیا با DotNet نمیشه تو آفیس کار کرد ؟ مثلا نمیشه با C# توسعه داد و فایل macroEnabled ایجاد کرد ؟
      منظورم اینه که محیط توسعه به جای VBA ، دات نت باشه .

      کامنت

      • phpa80

        • 2010/09/17
        • 14

        #4
        RE: اجرای کدهای VBA با کلیک بر روی تب شیت

        ببخشید کسی نیست راهنمایی کنه؟
        علاوه بر سوال فوق میخواستم بدونم دستور pastespecial در VBA چی هست بطوری که مقادیر محاسبه شده(value) رو از شیت 1 در در شیت 2 کپی کنه ؟

        کامنت

        • mrexcel

          • 2010/02/03
          • 435

          #5
          RE: اجرای کدهای VBA با کلیک بر روی تب شیت

          ضمن تشكر از شما دوست عزيز خواهش ميكنم سئوالات را دل همديگر ننويسيد براي اين كه بهتر بتوان ان را پاسخ داد و جستجو نمود
          براي پاسخ به اين سئوال هر دو استاد مسئول تالار تخصص دارند كه اميدوارم راهنمائي بفرمايند
          زنگ تفريح دنيا هميشگي نيست ، ساعت بعد حساب داريم

          کامنت

          • phpa80

            • 2010/09/17
            • 14

            #6
            RE: اجرای کدهای VBA با کلیک بر روی تب شیت

            منتظرم
            کسی هست اون دو تا پست قبلیم رو جواب بده ؟

            کامنت

            • shamsololama

              • 2010/02/15
              • 940

              #7
              RE: اجرای کدهای VBA با کلیک بر روی تب شیت

              با درود فراوان
              برای اینکه سل یا سلهایی رو کپی کنی و در همان شیت یا شیت دیگری پیست اسپیشال ولیو کنی می شه از کد زیر استفاده کنید
              در این کد همان طور که میدانید Selection.Copy برای کپی کردن سلهایی که انتخاب کرده ایم و Range("F9").Select برای انتخاب مقصد که می خواهیم کپی کنیم که می تواند در شیت دیگری هم باشد که کافی است Sheet2.select قبل از آن بنویسید تا ابتدا شیت دو را انتخاب کند
              و کد آخر هم همانطور که پیداست برای کپی کردن PasteSpecial Paste که برابر با Value است

              روش اول
              Selection.Copy
              Range("F9").Select
              Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
              در روشی دیگر می توانید بدون اینکه از کپی پیست استفاده کنید آن را انجام دهید و برای این کار سلول مقصد را برابر با سلولی که می خواهد انتقال داده شود قرار میدهیم
              مثلا اگر می خواهیم سلول A1 را از شیت 1 کپی کنیم و در سل B1 شیت دو پیست کنیم به طریق زیر می نویسیم که در این حالت بطور پیش فرض مقدار ولیو انتقال پیدا می کند

              Sheet2.Range("b1") = Sheet1.Range("a1")

              در مورد اینکه دات نت را در آفیس استفاده کنیم نمیشود ولی برعکس آن شدنی است یعنی اکسل را در دات نت استفاده کنید و در همانجا ارتباط بین آنها را به صورتی که میخواهیم برقرار کنیم
              ---------------------------------------------------------------------------------------------------
              بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
              shamsololama@yahoo.com
              09177733411

              کامنت

              • phpa80

                • 2010/09/17
                • 14

                #8
                RE: اجرای کدهای VBA با کلیک بر روی تب شیت

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

                کامنت

                • shamsololama

                  • 2010/02/15
                  • 940

                  #9
                  RE: اجرای کدهای VBA با کلیک بر روی تب شیت

                  با درود فراوان

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

                  Application.Run "Macro3"

                  که اگر ماکرو در فایل دیگری باشد باید به اول اسم ماکرو نام فایل نیز بنویسیم

                  Application.Run "book1.xls!Macro3"

                  و اگر فایل باز نباشد آدرس نیز به آن اضافه می کنیم تا دچا اشکال نشود
                  ---------------------------------------------------------------------------------------------------
                  بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
                  shamsololama@yahoo.com
                  09177733411

                  کامنت

                  • phpa80

                    • 2010/09/17
                    • 14

                    #10
                    RE: اجرای کدهای VBA با کلیک بر روی تب شیت

                    ممنون مشکل قبلی هم با مساعدت شما حل شد ولی یک مشکل دیگه اضافه شد !
                    چون اون ماکرویی که میخوام با کلیک کردن روی شیت اجرا بشه داره از شیت دیگری کپی میکنه به همین خاطر با کلیک بر روی شیت وقتی اون Event اجرا میشه روی دور باطل! میفته و دائما بین دوشیت سوئیچ میکنه و در نتیجه آخر سر ارور میده .
                    این کدی هست که در شیت PrmMembers نوشته شده :
                    کد:
                    Sub CopyandSort()
                    
                    
                    Sheets("PrmMembers").Select
                    Range("BN4:BP273").Select
                     Selection.Copy
                    Sheets("Result").Select
                    Range("B2:D271").Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                            :=False, Transpose:=False
                    
                    
                    End Sub
                    اینم کدی هست که در Event شیت Result نوشتم تا با کلیک کردن بر روی آن ، کدهای ماکروی فوق اجرا بشه ولی با کلیک بر شیت result چون ماکروی فوق اجرا میشه ، توی دور نامتناهی میفته.
                    چکار کنم ؟
                    کد:
                    Private Sub Worksheet_Activate()
                    Application.Run "CopyandSort"
                    End Sub

                    کامنت

                    • phpa80

                      • 2010/09/17
                      • 14

                      #11
                      RE: اجرای کدهای VBA با کلیک بر روی تب شیت

                      درست شد. یک فرم طراحی کردم.
                      ممنون

                      کامنت

                      • shamsololama

                        • 2010/02/15
                        • 940

                        #12
                        RE: اجرای کدهای VBA با کلیک بر روی تب شیت

                        نوشته اصلی توسط phpa80
                        ممنون مشکل قبلی هم با مساعدت شما حل شد ولی یک مشکل دیگه اضافه شد !
                        چون اون ماکرویی که میخوام با کلیک کردن روی شیت اجرا بشه داره از شیت دیگری کپی میکنه به همین خاطر با کلیک بر روی شیت وقتی اون Event اجرا میشه روی دور باطل! میفته و دائما بین دوشیت سوئیچ میکنه و در نتیجه آخر سر ارور میده .
                        این کدی هست که در شیت PrmMembers نوشته شده :
                        کد:
                        Sub CopyandSort()
                        
                        
                        Sheets("PrmMembers").Select
                        Range("BN4:BP273").Select
                         Selection.Copy
                        Sheets("Result").Select
                        Range("B2:D271").Select
                        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                :=False, Transpose:=False
                        
                        
                        End Sub
                        اینم کدی هست که در Event شیت Result نوشتم تا با کلیک کردن بر روی آن ، کدهای ماکروی فوق اجرا بشه ولی با کلیک بر شیت result چون ماکروی فوق اجرا میشه ، توی دور نامتناهی میفته.
                        چکار کنم ؟
                        کد:
                        Private Sub Worksheet_Activate()
                        Application.Run "CopyandSort"
                        End Sub
                        با درود فراوان

                        در کد بالا که فکر میکنم خود شما هم متوجه شده اید و رفع مشکل کرده اید دلیل دور باطل

                        از Sheets("Result").Select است که در ماکرو قرار داده اید و هر زمان که ماکرو به Sheets("Result").Select می رسد باعث می شود که ماکرو یک بار دیگر از اول اجرا شود (به دلیل اینکه در EVENT شیت خود زیر روال اکتیو این دستور را نوشته اید) و با اجرا شدن دوباره این ماکر دوباره به Sheets("Result").Select خواهیم رسید که این دورباطل را ایجاد کرده است و به پایان ماکر نخواهیم رسید

                        همانطور که گفته اید مشکل را حل کرده ایم اما نمی دانم از چه راهی

                        معمولا برای چنین کار های بهتر این است که بدون رفتن به شیت های مبدا اطلاعات را به شیت مقصد انتقال دهیم تا فقط شاهد ورود اطلاعات باشیم و بین شیت ها جابجایی صورت نگیرد
                        ---------------------------------------------------------------------------------------------------
                        بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
                        shamsololama@yahoo.com
                        09177733411

                        کامنت

                        Working...