میخوام کدی بنویسم که با کلیک بر روی تب شیت 2 یک پیغام نشان بدهد مبنی بر اینکه مایل به آپدیت اطلاعات شیت هستید یا خیر که با انتخاب بله ، کدی که نوشته شده اجرا شود.
اجرای کدهای VBA با کلیک بر روی تب شیت
Collapse
X
-
RE: اجرای کدهای VBA با کلیک بر روی تب شیت
براي اين كار بايد در محيط vb بر روي sheet مورد نظر كليك راست كرده سپس در قسمت event حادثه گزينه activate را انتخاب مبكنبم و كد مورد نظر را در قسمت مورد نظر تايپ ميكنيم . از اين به بعد هر گار وارد اين صفحه ميخواهيم بشويم اين كد انجام ميپذيردزنگ تفريح دنيا هميشگي نيست ، ساعت بعد حساب داريم -
RE: اجرای کدهای VBA با کلیک بر روی تب شیت
ممنوننوشته اصلی توسط mrexcelبراي اين كار بايد در محيط vb بر روي sheet مورد نظر كليك راست كرده سپس در قسمت event حادثه گزينه activate را انتخاب مبكنبم و كد مورد نظر را در قسمت مورد نظر تايپ ميكنيم . از اين به بعد هر گار وارد اين صفحه ميخواهيم بشويم اين كد انجام ميپذيرد
یه سوال دیگه هم دارم .
آیا با DotNet نمیشه تو آفیس کار کرد ؟ مثلا نمیشه با C# توسعه داد و فایل macroEnabled ایجاد کرد ؟
منظورم اینه که محیط توسعه به جای VBA ، دات نت باشه .کامنت
-
RE: اجرای کدهای VBA با کلیک بر روی تب شیت
ضمن تشكر از شما دوست عزيز خواهش ميكنم سئوالات را دل همديگر ننويسيد براي اين كه بهتر بتوان ان را پاسخ داد و جستجو نمود
براي پاسخ به اين سئوال هر دو استاد مسئول تالار تخصص دارند كه اميدوارم راهنمائي بفرمايندزنگ تفريح دنيا هميشگي نيست ، ساعت بعد حساب داريمکامنت
-
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")
در مورد اینکه دات نت را در آفیس استفاده کنیم نمیشود ولی برعکس آن شدنی است یعنی اکسل را در دات نت استفاده کنید و در همانجا ارتباط بین آنها را به صورتی که میخواهیم برقرار کنیم---------------------------------------------------------------------------------------------------
بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
shamsololama@yahoo.com
09177733411کامنت
-
RE: اجرای کدهای VBA با کلیک بر روی تب شیت
با درود فراوان
برای اجرای ماکروی مورد نظر به وسیله کد و یا یک ماکروی دیگر از کدی زیر استفاده می شود
Application.Run "Macro3"
که اگر ماکرو در فایل دیگری باشد باید به اول اسم ماکرو نام فایل نیز بنویسیم
Application.Run "book1.xls!Macro3"
و اگر فایل باز نباشد آدرس نیز به آن اضافه می کنیم تا دچا اشکال نشود---------------------------------------------------------------------------------------------------
بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
shamsololama@yahoo.com
09177733411کامنت
-
RE: اجرای کدهای VBA با کلیک بر روی تب شیت
ممنون مشکل قبلی هم با مساعدت شما حل شد ولی یک مشکل دیگه اضافه شد !
چون اون ماکرویی که میخوام با کلیک کردن روی شیت اجرا بشه داره از شیت دیگری کپی میکنه به همین خاطر با کلیک بر روی شیت وقتی اون Event اجرا میشه روی دور باطل! میفته و دائما بین دوشیت سوئیچ میکنه و در نتیجه آخر سر ارور میده .
این کدی هست که در شیت PrmMembers نوشته شده :
اینم کدی هست که در Event شیت Result نوشتم تا با کلیک کردن بر روی آن ، کدهای ماکروی فوق اجرا بشه ولی با کلیک بر شیت result چون ماکروی فوق اجرا میشه ، توی دور نامتناهی میفته.کد: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
چکار کنم ؟
کد:Private Sub Worksheet_Activate() Application.Run "CopyandSort" End Sub
کامنت
-
RE: اجرای کدهای VBA با کلیک بر روی تب شیت
با درود فراواننوشته اصلی توسط phpa80ممنون مشکل قبلی هم با مساعدت شما حل شد ولی یک مشکل دیگه اضافه شد !
چون اون ماکرویی که میخوام با کلیک کردن روی شیت اجرا بشه داره از شیت دیگری کپی میکنه به همین خاطر با کلیک بر روی شیت وقتی اون Event اجرا میشه روی دور باطل! میفته و دائما بین دوشیت سوئیچ میکنه و در نتیجه آخر سر ارور میده .
این کدی هست که در شیت PrmMembers نوشته شده :
اینم کدی هست که در Event شیت Result نوشتم تا با کلیک کردن بر روی آن ، کدهای ماکروی فوق اجرا بشه ولی با کلیک بر شیت result چون ماکروی فوق اجرا میشه ، توی دور نامتناهی میفته.کد: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
چکار کنم ؟
کد:Private Sub Worksheet_Activate() Application.Run "CopyandSort" End Sub
در کد بالا که فکر میکنم خود شما هم متوجه شده اید و رفع مشکل کرده اید دلیل دور باطل
از Sheets("Result").Select است که در ماکرو قرار داده اید و هر زمان که ماکرو به Sheets("Result").Select می رسد باعث می شود که ماکرو یک بار دیگر از اول اجرا شود (به دلیل اینکه در EVENT شیت خود زیر روال اکتیو این دستور را نوشته اید) و با اجرا شدن دوباره این ماکر دوباره به Sheets("Result").Select خواهیم رسید که این دورباطل را ایجاد کرده است و به پایان ماکر نخواهیم رسید
همانطور که گفته اید مشکل را حل کرده ایم اما نمی دانم از چه راهی
معمولا برای چنین کار های بهتر این است که بدون رفتن به شیت های مبدا اطلاعات را به شیت مقصد انتقال دهیم تا فقط شاهد ورود اطلاعات باشیم و بین شیت ها جابجایی صورت نگیرد---------------------------------------------------------------------------------------------------
بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
shamsololama@yahoo.com
09177733411کامنت




کامنت