درودنقل قول:
من كه نتونستم دانلود كنم. تا حالا هم هيچ وقت موفق به دانلود از سايت PersianGig نشدم. پيشنهاد مي كنم يه جاي ديگه آپلود كنيد. مثلاً upload2.net يا Rapidshare.de يايا 4shared يا... .کد:http://files-upload.com
Printable View
درودنقل قول:
من كه نتونستم دانلود كنم. تا حالا هم هيچ وقت موفق به دانلود از سايت PersianGig نشدم. پيشنهاد مي كنم يه جاي ديگه آپلود كنيد. مثلاً upload2.net يا Rapidshare.de يايا 4shared يا... .کد:http://files-upload.com
خير!نقل قول:
توي سلول ها نميشه. البته ميشه با فرمول نويسي شرطي، پيغام خطا رو داخل خود سلول نوشت و يا با قالب بندي شرطي، رنگ سلول رو بسته به جواب شرط تغيير داد. ولي اگه بخوايم با TextBox كار كنيم، قضيه فرق مي كنه و يه كارهايي ميشه كرد.
سلامنقل قول:
يه نمونه اينجا آپلود كردم.
در اين نمونه، يك Listbox ويك Combobox قرار داره كه با انتخاب هر يك از موارد داخل ليست باكس يا كمبوباكس، به ترتيب، خانه هاي D5 و E5 هم مقدار با اون گزينه ميشن.
خانه B1 هم تبديل به Combobox شده كه با انتخاب گزينه هاي اون، هيچ اتفاقي نمي افته. اما ميشه با Lookup Wizard طوري تنظيمش كرد كه مثلاً با انتخاب نام هر شخص، فاميل اون شخص جلوش نوشته بشه. اگه خواستيد براي اون هم نمونه بدم.
(گوشه پايين سمت راست، روي Download File كليك كنيد)کد:http://www.4shared.com/file/20931901/b31ac26c/Alaki.html
از راهنماییتون ممنونم . اگه لطف کنید توضیح بیشتری بدید .نقل قول:
اگه ميخوايد از فرمول هاي شرطي، يا قالب بندي شرطي استفاده كنيد، در اين پست توضيح نسبتاً كامل داده شده:نقل قول:
اما اگه ميخوايد از TextBox استفاده كنيد بايد يه TextBox (از نوار ابزار Control Toolbox) به كاربرگ اضافه كرده و با برنامه نويسي VB كاري كنيد كه بسته به مقدار داخل TB مثلاً برنامه Media Player لود شده و يك فايل صوتي يا تصويري رو اجرا كنه. اگه خواستيد نمونه عملي بگذارم، ولي فكر مي كنم همون روش اول، تر و تميز تر باشه.کد:http://forum.p30world.com/showpost.php?p=1165418&postcount=13
چشم سعی می کنم امشب فایلو یک جای دیگه اپلود کنم
سلام
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] عزیز تاپیک رو مهم کردم مثل MicrosoftWrd پر بار بشه
ممنون از شما
من ادرس فایلو اشتباه نوشته بودم تصحیح کرد
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
Tnk u very muchنقل قول:
نوشت Not Foundنقل قول:
javad2625 از راهنماييتون متشكرم.
دوست عزیز javad2625
ببخشید فکر کنم الان درست شده باشه یکبار دیگه امتحان کنید
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
راستی چرا مثل قبلا وقتی لینکها را پیست می کنیم فعال نیستند ؟
دوستان پس چی شد جواب ؟
آخه عزيز دلنقل قول:
اين لينك هم كار نمي كنه! فقط يه صفحه سفيد مياد.
نميشه يه جاي ديگه آپلود كني؟ مثلاً:
ياکد:http://files-upload.com/
ثبت نام هم نميخواد.کد:www.upload2.net
در ضمن مديران اين تالار، ارسال لينك به صورت «Hyperlink» رو به دليلي كه حتماً براي خودشون موجهه ممنوع كرده اند. لينك ها رو بايد داخل علامت Code بگذاريم.
خدا کنه درست باشه !!!!
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دوست عزیز
طبق خواسته شما جای دیگه اپلود کردم لطفا امتحان کنید ببینید اینبار می شه دانلود کرد.
نقل قول:درودنقل قول:
دوستان سلام
من یاد گرفتم چطور می شه یک فرم را در اکسل ایجاد کرد ولی مشکلی که دارم این است که نمی دونم چطور کنترلهای روی فرم را به شیت ها اتصال بدم من یک شیت نمونه درست کردم که در ان یک فرم هست در صفحه اول می خوام با وارد کردن اطلاعات دراون این اطلاعات در صفحه دوم ذخیره بشه و سپس معدل نیز محاسبه شده ودر صفحه دوم در فیلد مربوطه ذخیره بشه اگرکسی از دوستان می دونه لطفا راهنمایی کنه ممنون می شم
نمونه را در لینک زیر ذخیره کردم
[URL]http://www.emamifard.persiangig.com/book1.xls
ايجاد فرم در اكسل
با امكانات اكسل نميشه فرم هايي به سبك Access درست كرد. اين كار فقط از طريق زبان هاي برنامه نويسي مثل Visual Basic امكان پذير هست. (منظورم VB تحت اكسل نيست)
اما به سبكي كه در نمونه گذاشتيد (يعني درج چند textbox در كاربرگ و انتقال داده هاي اونها به جدول امكان پذير هست. فقط يه مقدار برنامه نويسي نياز داره.(اگه ميخوايد آموزش VB در اكسل رو هم شروع كنيم)
من نمونه شما رو كدنويسي (برنامه نويسي) كردم.
http://www.4shared.com/file/21297811/8a82510/Book1.html
(اگه Macro Security رو روي High تنظيم كرده باشيد يا ماكروها رو Disable كرده باشيد، برنامه اجرا نميشه)
Tools> Options> Security> Macro Security: Settings: Low> OK> OK
اقا جواد خیلی ممنون واقعا عالی بود
اگر لطف کنی و برنامه نویسی vb در اکسل را همونطوری که گفتی شروع کنی خیلی عالی می شه که تا فرصت باقی مونده تا پایان تعطیلات به یه جایی برسه
ولی اگر مقدور نیست لااقل در مورد همین کاری که روی فایل ارسالی من انجام دادی یک توضیح کاملی بدی ممنون می شم
چراجدول را چاپ ميكند و متن داخل آن پرينت نميشود؟
باشه. از فردا شروع مي كنيم.نقل قول:
اگه خودتون رنگ متن رو سفيد نكرده باشيد، احتمالاً اشكال از اكسل هست و بايد اون رو پاك كرده، مجدداً Install كنيد.نقل قول:
اكسل خودم هم يه مدت اينجوري شده بود آخر هم نفهميدم چي شده. مجبور بودم جدول هاش رو ببرم توي Word پرينت كنم.
ولي اگه پلاگين خاصي براش نصب كرديد مثل ٌWord2PDF convertor يا Adove Acrobar writer و... اون رو Uninstall كنيد شايد حل شد.
برنامه نويسي ويژوال بيسيك در اكسل
درس اول: مفاهيم پايه، برنامه نويسي شيء گرا يعني چه؟
جعبه ابزار ويژوال بيسيك را فعال كنيد.
در 2003: View> Toolbars> Control Toolbox (يك نوار ابزار جديد روي صفحه ظاهر مي شود)
در 2007: Microsoft Office> Excel Options> Customize> Choose Commands From: Developer Tab> Controls> Add> OK (يه آيكون جديد به قسمت Quick Access اضافه ميشه)
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
به هر كدوم از كنترل ها (ابزارها) ي جعبه ابزار يه شيء (Object) ميگيم. مثلاً Textbox, CommandButton و... .
در زبان هاي برنامه نويسي جديد، بر خلاف گذشته، هر برنامه اي از تعدادي شيء و مقداري برنامه متني تشكيل شده. در حالي كه قبلاًبرنامه ها فقط متن خالي بودند. به همين دليل، زبان هاي جديد رو شيء گرا (Objective) مي نامند.
تمرين كار با كنترل ها (اشياء) ويژوال بيسيك:
دو TextBox به كاربرگ اضافه كنيد و برنامه اي بنويسيد كه با تغيير متن TB اول، متن دومي، معادل اولي بشه. يعني هر چيزي كه توي اولي مي نويسيم، توي دومي هم نوشته بشه.
روش كار:
دو TextBox به كاربرگ (شيت) اضافه كنيد و روي اولي، دوبار كليك كنيد تا وارد محيط برنامه نويسي بشيم.
(تذكر: بايد در جعبه ابزار، گزينه Design Mode فعال باشه تا بتونيم اين كارها رو بكنيم)
در اونجا، دو خط برنامه مي بينيد كه با Private Sub شروع شده و با End Sub تموم ميشه. به قسمت هايي از برنامه كه با اون دو عبارت شروع و ختم ميشن، يك روال (Sub) ميگيم. داخل اون روال (بين دو خط برنامه موجود) كد زير رو بنويسيد:
(وقتي ميگم كد بنويسيد يعني برنامه بنويسيد)
حالا، همونجا گزينه Save رو زده، برنامه رو ذخيره كرده و بدون اين كه محيط برنامه نويسي رو ببنديد به محيط كار اكسل برگرديد.کد:Private Sub TextBox1_Change()
TextBox2.Text = TextBox1.Text
End Sub
حالا، محيط كار رو از حالت Design Mode خارج كنيد (با كليك روي دكمه Design Mode در جعبه ابزار) و داخل TB اول متن دلخواهي رو بنويسيد. ببينيد چه اتفاقي مي افته؟!
بله! متن TB دوم مطابق TB اول تغيير مي كنه.
تا اينجاي كار رو داشته باشيد و با چيزهايي كه گفتم كمي ور بريد تا آشناتر بشيد و اگه سوالي داشتيد بگيد تا بقيه مطالب رو اگه خواستيد بعداً ادامه بديم.
تذكر: اگه Macro Security رو روي High تنظيم كرده باشيد يا ماكروها رو Disable كرده باشيد، بعداً كه فايل رو دوباره باز مي كنيد، برنامه ها اجرا نخواهند شد.
در 2003: Tools> Options> Security> Macro Secuity: Settings> Low> OK> OK
در 2007: Microsoft Office> Excel Options> Trust Center> Trust Center Settings> Macro Security> Enable All Macros> OK> OK
حالا بگذاريد خودم هم يه سوال از حرفه اي تر ها بپرسم كه من هم يه چيزي ياد گرفته باشم:
چطور ميشه با برنامه نويسي، اولين خانه خالي از يك رديف يا يك ستون رو پيدا كرد؟
من از اين كد استفاده مي كنم:
شما روش بهتري سراغ نداريد؟کد:ActiveSheet.Range("A65536").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
متشكرم
دوست عزیز javad2625
خیلی عالی بود لطفا ادامه بده
برنامه نويسي ويژوال بيسيك در اكسل
درس دوم: كار با مولفه ها (Properties)
سه Textbox و يك CommandButton به كاربرگ اضافه كنيد. (در حالت Design Mode)
(اگه خواستيد، رنگ كل جدول رو كمي تيره كنيد، تا TB ها رو بهتر ببينيد)
روي يكي از TB ها راست كليك و گزينه Properties رو انتخاب كنيد تا ستون تنظيمات ظاهر شود.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
به هر كدام از خونه هاي ستون تنظيمات، يك مولفه (Property) ميگيم.
مولفه Name نام اون شيء رو به ما ميگه. (مثلاً TextBox1) كه البته مي تونيم اين نام رو به دلخواه تغيير بديم.
مولفه Backcolor رنگ زمينه TB (يا CB) رو تنظيم مي كنه.
مولفه ForeColor رنگ متن TB (يا CB) رو تنظيم مي كنه.
مولفه Text متن پيشفرض TB رو تعيين مي كنه. (براي تغيير متن CB ها بايد از مولفه Caption استفاده كنيم)
مولفه LinkedCell اون TB رو به يكي از خانه هاي جدول لينك مي كنه به طوري كه هر چيزي داخل TB بنويسيم داخل اون خونه هم نوشته ميشه.
و....
تمرين:
رنگ زمينه و متن TB ها و CB موجود رو به دلخواه تنظيم كرده Textbox1 تا TextBox3 رو به خانه هاي G1 تا G3 لينك كنيد و برنامه اي بسازيد كه با كليك روي CommandButton1 مقدار عددي TextBox3 در خانه G4 نوشته بشه.
تذكر:
وقتي ميگيم مقدار عددي، يعني اگه داخل اون TB عدد باشه، مقدار عددي رو بنويسه، اما اگه متن باشه، مقدار 0 رو بنويسه.
روش كار:
در حالت Design Mode روي تك تك TB ها كليك كرده، جلوي مولفه LinkedCell آدرس خانه هاي دلخواه از جدول مثلاً G1 براي TB1 و G2 براي TB2 و... رو مي نويسيم.
روي CommandButton1 دوبار كليك مي كنيم تا وارد محيط كدنويسي (برنامه نويسي) بشيم.
در روال (Sub) موجود، كد زير رو مي نويسيم:
همونطور كه مي بينيد براي فهميدن مقدار عددي TB3 از دستور Val استفاده كرديم.کد:Private Sub CommandButton1_Click()
Range("G4").Value = Val(TextBox3.Text)
End Sub
حالا همونجا دكمه Save رو زده، برنامه رو ذخيره مي كنيم و بدون بستن محيط كدنويسي، به محيط اكسل بر مي گرديم (اگر هم ببنديم مهم نيست).
گزينه Design Mode رو غير فعال كرده و ستون Properties رو مي بنديم. حالا داخل TB هاي 1 تا 3 متن دلخواهي رو بنويسيد. چه اتفاقي مي افته؟
دكمه CommandButton1 رو بزنيد. چه اتفاقي مي افته؟
اگه داخل Tb3 عدد بنويسيم و CB1 رو بزنيم چي ميشه؟
بله! مقدار عددي TB3 در خانه G4 نوشته ميشه.
حالا يك سوال علمي:
كسي مي تونه برنامه اي بنويسه كه با كليك روي CommandButton1 مقدار عددي TextBox3 در 2 ضرب شده و داخل خانه G5 نوشته بشه؟
هر كي تونست، كد رو بنويسه اينجا بگذاره.
مخصوصاً شما جناب Mefmef. جواب رو ميتونيد بگيد؟
خیلی عالی هست دوست عزیز javad 2625
دستت درد نکنه خیلی عالی است با جزییات کافی
ببخشید من بار اول چون عجله داشتم فقط تونستم تشکر کنم و همین عجله باعث شد تا دو تا پست بفرستمنقل قول:
كسي مي تونه برنامه اي بنويسه كه با كليك روي CommandButton1 مقدار عددي TextBox3 در 2 ضرب شده و داخل خانه G5 نوشته بشه؟
هر كي تونست، كد رو بنويسه اينجا بگذاره.
مخصوصاً شما جناب Mefmef. جواب رو ميتونيد بگيد؟
واما در پاسخ به سوال شما با بگویم که متاسفانه من هنوز تعریف بعضی از دستوراتی را که تا به حال استفاده کردید را نمی دانم مثلا Rang چه کاری را انجام می دهد یا برای دسترسی پیدا کردن به محتوی یک سلول چکار باید کرد اگر لطف کنید عملکرد این دستورات را بگویید یا منبعی را معرفی کنید که با استفاده از ان بتوان این اطلاعات را بدست اورد فکر کنم بهتر بتوانم به سوالات پاسخ بدهم
درود بر همگي مخصوصا ... دوست عزيز آقا جواد
يه سوال دارم.... اميدوارم كه تكراري نباشه .. چون وقتي براي مطالعه كامل پستها ندارم..
فرض كنين كه شما سطر اول رو نوشتين : رديف ... نام ... تاريخ ... و ...
و سطرهاي دوم رو با مطالب مربوط به آنها پر كردين ...
حالا ميخواين سطر اول قفل باشه ... كه هر وقت كه ميخواين بر اساس هر ستون (تاريخ يا نام) سورت كنين ... سطر اول كه شامل عنوان هر ستونه سورت نشه ...
بايد چكار كرد؟
سلام خانم ولايي
به اين تاپيك خوش اومديد.
قفل كردن يه سطر، ستون يا خانه، بحثي جدا از سورت كردن يا نكردن رديف اول هست. اگه مي خوايد رديف اول قفل بشه، روي اولين خانه از رديف دوم كليك كرده، گزينه Window> Freeze Panes رو بزنيد.
اما اگه مي خوايد، رديف اول در عمليات Sorting ناديده گرفته بشه، موقع زدن Data> Sort گزينه Header Row رو فعال نگه داريد.
دوست عزیز javad2625
ما منتظریم لطفا ادامه بدید
ممنون می شیم
نقل قول:
درود ... شما لطف دارين...
سوالم مورد دومي بود كه شما جواب دادين ... اما مورد اول رو هم كه لطف كردين و جواب دادين ... يكي دو ماه قبل دنبالش بودم...
دوباره و چند باره ممنون و بدرود
سلامنقل قول:
به خاطر تاخير ببخشيد. اول جواب سوال، بعد هم ادامه مطلب.
شما توي پستتون به نكته جالبي اشاره كرديد.
من گفته بودم: چطور ميشه به يك سلول مقدار دهي كرد؟
شما گفتيد: من روش «مقدار دهي به سلول» و «دسترسي به محتواي سلول» رو نمي دونم.
نكته جالب اينجاست كه تمام مولفه هايي كه در ويژوال بيسيك باهاشون سر و كار داريم، هم ميشه اونها رو «مقدار دهي» كرد (Property Set) و هم اين كه مقدار فعلي اونها رو فهميد (Property Get). (به جز اونهايي كه ReadOnly باشند).
براي فهميدن مقدار فعلي يك خانه از جدول، آدرس اون رو داخل پرانتز جلوي دستور Range نوشته و بعد هم عبارت Vaue. رو اضافه مي كنيم. مثلاً:
براي نوشته شدن متن خانه A5 در TextBox3:
يا براي نوشته شدن متن TextBox3 در خانه A5:کد:TextBox3.Text = Range("A5").Value
کد:Range("A5").Value = TextBox3.Text
درباره اين موارد بعداً بيشتر توضيح خواهيم داد. اما عجالتاً جواب سوال قبل اينه:
براي نوشتن دو برابر مقدار عددي TextBox3 در خانه G5:
کد:Range("G5).Value = 2 * Val(TextBox3.Text)
برنامه نويسي ويژوال بيسيك در اكسل
درس سوم: آشنايي با رويدادها (Events)
برنامه نويسي، هنر پاسخگويي به رويداد هاست.
رويداد چيست؟
هر عملي كه كاربر روي ماوس يا صفحه كليد انجام دهد يك رويداد است.
مثلاً حركت دادن ماوس يا زدن يك دكمه صفحه كليد رو، يك رويداد ميگيم. برنامه نويس ميتونه براي تمام رويدادهايي كه ممكنه توسط كاربر اتفاق بيفته، عكس العمل مناسبي رو طراحي كنه.
يك TextBox و يك CommandButton نسبتاً دراز به كاربرگ (WorkSheet) اضافه كنيد.
(هميشه وقتي ميگم شيئي رو به كاربرگ اضافه كنيد بايد اين كار در حالت Design Mode انجام بشه).
روي TB دوبار كليك كنيد تا وارد محيط كدنويسي بشيم. بالاي پنجره كدنويسي، دو تا منوي آبشاري (ComboBox) مي بينيم كه داخل يكي نوشته TextBox1 و داخل ديگري عبارت Change ديده ميشه.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
منوي اول حاوي فهرست اشياء موجود در كاربرگ فعلي است. يعني TextBox1, CommandButton1 و خود WorkSheet. منوي دوم، حاوي نام رويدادهايي است كه ممكنه براي اين شيء اتفاق بيفته. مثلاً
چند رويداد مهم:
رويداد Change وقتي رخ ميده كه متن موجود در TB تغيير كنه.
رويداد MouseDown وقتي كه كاربر روي TB كليك كنه. (در مورد Cb ها نام اين رويداد Click هست).
رويداد MouseMove وقتي كه ماوس روي اون TB (يا CB) حركت كنه.
و رويداد GotFocus وقتي كه اون TB فعال بشه. يعني نشانگر متن (خط چشمك زن عمودي) وارد TB بشه.
رويدادها به چه درد مي خورند؟
روي نام هر كدوم از رويدادها كه كليك كنيم يك روال (Sub) همنام با اون رويداد ساخته ميشه. داخل روال ها مي تونيم برنامه نويسي كنيم. به محض اين كه رويداد مربوطه اتفاق بيفته، برنامه داخل روال اجرا خواهد شد. مثلاً به محض اين كه متن TB1 تغيير كنه، روال TextBox1_Change اجرا خواهد شد به قول خارجي ها، fire مي شود. يا مثلاً تا روي CommandBotton1 كليك كنيم، روال CommandButton1_Click (در صورت وجود) اجرا ميشه.
تمرين:
برنامه اي بنويسيد كه به محض رخ دادن هر يك از رويدادهاي MouseDown و Change فوراً نام رويداد رو در CommandButton1 بنويسه.
راهنمايي: براي نوشتن چيزي روي CB بايد مولفه Caption اون رو تنظيم كنيم.
روش كار:
الآن يك روال به نام TextBox1_Change جلوي شماست. داخلش دستور زير رو بنويسيد:
ايندفعه كدهايي رو كه ميگم، با دست خودتون بنويسيد (Copy/Paste نكنيد) تا راهنماي Intellisense ويژوال بيسيك رو با چشم خودتون ببينيد. ضمناً مهم نيست با حروف بزرگ بنويسيد يا حروف كوچك
(البته نوشتن عبارت .Me ضروري نبود و فقط به خاطر كمك گرفتن از Intellisense در تايپ كلمات اون رو نوشتيم)کد:Private Sub TextBox1_Change()
Me.CommandButton1.Caption = "Text Changed! "
End Sub
حالا در منوي رويدادها، روي MouseDown كليك كرده و در روال ايجاد شده كد زير رو بنويسيد:
حالا، همونجا برنامه رو Save كرده به محيط كاربرگ برگرديد و گزينه Design Time رو غير فعال كنيد.کد:Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Me.CommandButton1.Caption = "Mouse Click!"
End Sub
ببينيد وقتي ماوس رو روي TextBox1 كليك مي كنيم و يا وقتي داخل اون چيزي مي نويسيم، چه اتفاقي مي افته؟
خوب! اين هم از درس امروز. فعلاً ديگه چيزي براي گفتن ندارم تا جلسه بعد.
ضمناً انتظار ندارم همه چيزهايي رو كه در قسمت كدنويسي گفتم فهميده باشيد، اما انتظار دارم سوال زير رو بتونيد جواب بديد:
يك TextBox ديگر به كاربرگ اضافه كرده و برنامه اي بنويسيد كه به محض كليك روي آن TB، كپشن CommandButton1 تبديل شود به:
"TextBox2 Clicked!"
اگه جواب رو مي دونستيد، نمونه كد رو همينجا بگذاريد. اگه نمي دونستيد بگيد تا خودم توضيح بدم.
ضمناً با چيزهايي كه گفتم كمي ور بريد و دستكاري كنيد و اگه سوالي براتون پيش اومد بگيد كه بگم.
خیلی عالی وممنونم ببخشید چون این فروم کلید تشکر نداره مجبورم پست بذارم برای تشکر
با سلام
از راهنمایی شما بسیار ممنونم
لطفا در صورت امکان مثالی از data/ validation بزنید و نحوه طراحی جدول با pivot را
بفرمایید
با تشکر فراوان
خدانگهدار
به نام خدا
با سلام
لطفا نحوه اختصاص دادن پیغام خطایی که در vb نوشته شده است را به یک سلول به
طور کامل توضیح دهید
با تشکر
خدانگهدار
سلامنقل قول:
با سلام
از راهنمایی شما بسیار ممنونم
لطفا در صورت امکان مثالی از data/ validation بزنید و نحوه طراحی جدول با pivot را
بفرمایید
با تشکر فراوان
خدانگهدار
آموزش Pivot Table (ابزار گزارش گيري در اكسل)
در مورد Data> Validation (ارزيابي داده ها)کد:http://forum.p30world.com/showpost.php?p=1141752&postcount=9
اين امكان براي تعيين محدوده مجاز داده هاي وارد شده به خانه هاي جدول است.
مثلاً اگر بخوايم داده هاي اون قسمت از جدول، فقط از نوع اعداد صحيح باشند، گزينه Whole Number رو انتخاب مي كنيم.
اگه بخوايم فقط عدد باشند (چه صحيح و چه اعشاري) گزينه Decimal
اگه بخوايم از يك ليست موجود انتخاب بشن، گزينه List
اگه بخوايم طول متن آونها بيشتر از حد معيني نشه Text Length
و اگه بخوايم يك فرمول شرطي بنويسيم كه بسته به جواب شرط صحت يا عدم صحت داده ها مشخص بشه گزينه Custom رو انتخاب مي كنيم.
فكر مي كنم به جز مورد آخر، كاربرد همه موارد قبل روشن باشه (اگه نيست بگيد تا توضيح بدم) اما درم مورد آخر بايد داخل قسمت Formula بعد از عبارت = يك شرط رو بنويسيم كه جواب اون True يا False باشه. مثلاً شرط بگذاريم كه اگه خانه A5 بزرگتر از 5 بود، اين عدد رو بپذير واگرنه قبول نكن. از اين فرمول استفاده مي كنيم:
يا اگه بخوايم شرط بگذاريم كه براي پذيرفتن داده ها، بايد هم A5 بزرگتر از 5 و هم A6 بزرگتر از 8 باشه مي نويسيم:کد:=A5>5
در قسمت Input Message هم هر پيغامي كه بنويسيم به محض كليك روي خانه مورد نظر، بالاي Office Assistant ظاهر خواهد شد. در قسمت Error Alert هم هر پيغامي بنويسيم، در صورت وارد شدن داده هاي ناصحيح، به عنوان پيغام خطا ظاهر خواهد شد.کد:= And(A5>5,A6>8)
درود بر شمانقل قول:
منظورتون رو درست متوجه نميشم. ولي هر پيغامي رو كه بخوايم از طريق VB داخل خانه هاي جدول بنويسيم بايد از دستور Range.Value استفاده كنيم. مثلاً اگه بخوايم داخل خونه A5 بنويسيم: "A4 must be greater than A3" از اين دستور استفاده مي كنيم:
اما اگه بخوايم اول چك كنيم كه آيا A4 بزگتر از A3 هست يا نه و اگه نبود پيغام خطاي مذكور رو در اون خونه بنويسيم:کد:Range("A5").Value = "A4 must be greater than A3"
اما براي نوشتن پيغام خطا در سلول ها، لزوماً نيازي به برنامه نويسي VB نخواهيم داشت. روش هاي ساده تري مثل استفاده از Data Validation يا فرمول نويسي شرطي هم هست.کد:If Not Range("A4").Value > Range("A3").Value Then
Range("A5").Value = "A4 must be greater than A3"
End If
فرمول نويسي شرطي:
کد:http://forum.p30world.com/showpost.php?p=1165418&postcount=13