vba در اکسل و استفاده از access (یک تجربه)

(اگرvba بلد هستید یا نیستید حتما تا اخرش رو بخونید)

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

رشته من صنایع هست و یادگیری اکسل هم برای بچه های صنایع از نون شب هم واجب تر هست!تقریبا 3 سال هست که اکسل رو به صورت جدی دنبال می کنم.و در موارد زیر از اون استفاده کردم:

حسابداری

برنامه ریزی و کنترل پروژه

گزارشگیری های خاص از دیتابیس های مختلف

تهیه برنامه نگهداری و تعمیرات با اکسل

برنامه ریزی تولید

کنترل موجودی

مهندسی مالی و اقتصاد مهندسی و اقتصاد سنجی

کاربرد اکسل در تحقیق در عملیات


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


خلاصه من هم تصمیم گرفتم برای تهیه دیتا بیس ها به سراغ اکسس برم.و تصمیم رو قطعی کردم تا اون رو یاد بگیرم.یک کتاب گرفتم با عنوان آموزش تصویری اکسس 2007دفعه اول اون رو طی 2 روز مطالعه کردم.ولی کمی گیج بودم.چون مدام به اکسل مقایسه می کردم.بی خیال اکسس شدم و اون رو رها کردم.یک ماه بعد دوباره سراغش آمدم و این دفعه طی 4 روز مطالعه کردم.البته این دفعه در کنارش از مجموعه تصوری آموزش اکسس محصول شرکت لیندا استفاده کردم که کمک بسیار بزرگی به من کرد.حالا اکسس خیلی برام جذاب بود.وخیلی هم ساده!واقعا ساده تر از اون چیزی که فکرش رو بکنید.البته از این سایت هم استفاده می کردم.خیلی خلاصه بگم:

اکسس از 4 بخش  اصلی تشکیل شده:

1)جداول:محل نگهداری اطلاعات خام با شرایطی که ما برای ورود اطلاعات تعریف می کنیم(مثل عدد باشه یا متن)

2)بازجست ها(یاqueries).اگر کمی خودمونی بگیم این همون گزارش هایی هست که با کمک ابزارهای اکسل تهیه می کنیم(ابزارهایی مثل فیلتر و فرمول ها و...)

3)فورم ها:این قسمت به نظر من خیلی برای کاربر های اکسل جذاب هست .چرا؟چون اگر شما بخواهید یک فورم رو در محیط اکسل طراحی کنیدو فرمول نویسی کنید.کلی وقت شما رو میگره ولی شما در اکسس بعد از طراحی جداولتون با چند کلیک ساده(شاید به 10 کلیک هم نرسه) فورم مورد نظرتون رو ایجاد می کنید.البته در کمتر از 1 دقیقه!(البته خیلی خلاصه گفتم  ولی ماهیت کارش همین هست)

4)گزارش ها:گزارش ها نماهایی از داده های شما هستند که به صورت فرم، پرس و جو، جدول و صفحه داده می باشند،اما هدف خاصی دارند;گزارشها به منظور چاپ طراحی می شوند.


بعد یادگیری اکسس دوست داشتم برنامه هایی مثل برنامه های زیر تهیه بکنم:

نسخه عمومي كامل حسابداری آسان حساب

یا نرم افزار نگهداری و تعمیرات cworks

ولی یک مشکلی که اکسس داره این هست که تهیه کردن فرم های خاص و ایجاد رابطه بین اونها کمی سخت میشه ولی برای من تازه کار کمی سخت بود.

با چند تا از دوستانم که فارغ التحصیل رشته کامپیوتر بودند صحبت کردم، اکسس رو به من پیشنهاد نمی دادند.و مدام ازsql server حرف می زدند.ولی با خودم می گفتم یعنی بیام برای یک اکسس و درست کردن یک بانک اطلاعاتی یک همچون زبانی رو یاد بگیرم؟

نمی تونستم قبول بکنم و حوصله اینکه خودم رو درگیر برنامه نویسی هم بکنم رو نداشتم.پس تا همین حد اکسس کافی بود!ولی من واقعا به یک برنامه که سریع بتونم باهاش یک پایگاه داده درست بکنم احتیاج داشتم.


برای مدتی بی خیال اکسس شدم و ترجیم می دادم با همون vba و اکسل کارهام رو انجام بدم.ولی هر وقت شروع به کد نویسی می کردم به خودم نفرین می کردم که این کار توی اکسس 3 سوته بود!

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

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

سر کلاس روش تحقیق بودم که استاد درس (که استادی بسیار با سواد و با درجه علمی بالا هم هستند)با یک حالت بغض آلودی گفت:60 ساله شدم ولی کد نویسی رو در اکسل یاد نگرفتم!باید کارهام رو بسپارم به دانشجو هام.!(البته ایشون به نرم افزار spss و eviews وexcel تسلط کافی دارند ولی علاقه شدیدی به یادگیری برنامه نویسی در vbaدارند)

وقتی این حرف رو شنیدم باعث شد طوری دیگه به قضیه نگاه بکنم.یعنی قضیه رو باید جدی می گرفتم.

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

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

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

چراش رو در پست بعدی می گذارم.

===============

در ایجا جا داره که از تمام کسانی که باعث شدند من اکسل رو به طور جدی دنبال بکنم تشکر می کنم:

1)از آقای سعید علی محمدی که استاد بنده بودند و شالوده یادگیری اکسل  وقدرت این برنامه رو ایشون به من یاد دادند.

2)وب سایت و مطالب بسیار بسیار آموزنده  و کاربردی جناب آقای فرشید میدانی

3)جناب آقای شمس العلما که قدرت vba  و خلاقیت رو به من نشان دادند.

4)کتاب های و ترجمه های جناب آقای بهرام صمدیان که واقعا برای من آموزنده بودند.

5)مرتضی دوست و همشهری عزیزم

===============

از تمامی دوستان متخصص خواهش دارم که بنده رو راهنمایی بکنند .چون من در ابتدای راه هستم و قطعا کاستی ها و کمبود ها و لغزش هایی هم دارم.

با تشکر

تابعی برای یافتن آخرین مقدار یک محدود – Visual Basic Function for find last Value in a range

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

اگر برایتان مقدور است

اردشیر

 

 

 

با سلام خدمت دوست عزیز

 

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

کار با این توابع را با ذکر مثالی نشان داده ام.

فرمول خانه D1 و D2 در شکل نشان داده شده است ،

 

 

A

B

C

D

E

F

1

Day

Num

 

Mon

< - - - -

=INDEX(A:B,COUNTA(A:A),1)

2

Sun

2

 

14

< - - - -

=INDEX(A:B,COUNTA(B:B),2)

3

Mon

4

 

 

 

 

4

Tue

6

 

 

 

 

5

Wed

8

 

 

 

 

6

Thu

10

 

 

 

 

7

Fri

12

 

 

 

 

8

Sat

14

 

 

 

 

9

Sun

 

 

 

 

 

10

Mon

 

 

 

 

 

 

اما اگر ! محدوه شما غیر پیوسته باشد حالت خاصی پیش می‌آید و فرمول نویسی آن با مراجع دورانی به سختی میسر است و می‌دانیم که مراجع دورانی حداکثر Iterations = 32767 خواهد بود و این درحالی است که شما 32536  خانه در اکسل دارید، پس اینهم نا کارآمد است. (البته اینکار انجام شدنی است).

 

اما راه حل اصولی اینگونه موارد نوشتن یک تابع ساده است و من این تابع را برای شما می‌نویسم ، برای استفاده از این تابع مراحل زیر را برای ایجاد آن طی کنید .

 

 

  • کلید Alt+F11 را با هم بزنید تا به محیط ویژوال بیسک بروید.
  • از منوی Insert   گزینه Module را انتخاب کنید.
  • کدهای زیر را در آنجا Paste  کنید.
  • از ویژال بیسیک با زدن گزینه Close خارج شوید.

 

 

Function FINDLASTVALUE(CellRange As Range)

 

' THIS FUNCTION FIND FINAL VALUE IN A SPECIFIC RANGE

 

For Each C In CellRange

 

    If C.Value <> "" Then

        FINDLASTVALUE = C.Value

    End If

   

Next C

 

End Function

 

حال در اکسل تابعی به نام FINDLASTVALUE دارید که توسط آن می‌توانید مقدار آخرین خانه هر محدوده را پیدا کنید .

بعنوان مثال در اکسل می‌نویسیم :

=FINDLASTVALUE(A:A)

که آخرین مقدار را در محدوده ستون A برای ما پیدا می‌کند.

http://farsaran.blogfa.com/post-13.aspx

محافظت دینامیکی سلولها از تغییر - توسط ویژوال بیسیک

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

هدف از این کار اینست که اطلاعات ورودی دستخوش تغییرات خواسته یا ناخواسته نشود .

 

برای دریافت فایل کلیک کنید!

http://farsaran.blogfa.com/post-14.aspx


کتاب فارسی-Lock Excel Files With VBA

این کتاب توسط آقای صمدیان تهیه شده است

برای تهیه آن به وبلاگ زیر مراجعه کنید.

http://amar80.blogfa.com/

کتاب Excel VBA Professional projects

کتاب فارسی Excel VBA Professional projects به همراه کتاب Lock Excel Files With VBA

توضیحات نویسنده:

لطف خدا ديگر بار شامل اينجانب گرديد تا با كتابي ديگر در خدمت دوستان باشم. 

Excel VBA Professional projects

كتاب حاضر نسخه بهبود يافته كتاب Excel VBA Professional projects مي باشد كه دو سال قبل منتشر شد. كتاب حاضر پس از غلط گيري و تصحيح برخي خطاهاي موجود از نو تهيه و آماده شد . حجم كتاب از لحاظ تعداد فصل و صفحه تفاوتي با نسخه قبلي ندارد ، بهبودي كه در اين زمينه به چشم مي خورد كاهش حجم كتاب از لحاظ كيلوبايتي است كه اين امر مطالعه كتاب را سريعتر و سهل تر از قبل ساخته است.

كتاب Excel VBA Professional projects را با داشتن 567 صفحه دراندازه A4 و با چند پروژه عملي به جرات مي توان يكي از معتبرترين مراجع در زمينه برنامه نويسي اكسل به شمار آورد. با كمي جستجو در اينترنت خواهيد ديد كه منابع بسيار كمي براي اين مبحث مهم به زبان فارسي وجود دارد.

دانلود فصل اول كتاب Excel VBA Professional projects

دانلود فصل دوم كتاب Excel VBA Professional projects

دانلود فصل سوم كتاب Excel VBA Professional projects

 

Lock Excel Files With VBA

كتاب جديدي كه براي اولين بار معرفي مي شود كتاب Lock Excel Files With VBA مي باشد توجه كنيد كه اين كتاب كوچك كتابي تاليفي بوده و نام آن به خاطر همخواني با كتاب قبلي به صورت لاتين انتخاب شده است. اين كتاب بحث جديدي را در سطح برنامه نويسي اكسل مطرح مي كند كه چگونه يك فايل را قفل گذاري كنيم تا فايل بر اساس شرط يا شرطهايي باز شده و اجرا شود. براي مثال فايل حاوي برنامه پس از تعداد دفعات تعيين شده از كار بيفتد يا اينكه اجراي آن به وجود فايل يا به مقدار فايل ديگري بستگي داشته باشد! يا اينكه يك كاربر به قسمتي از برنامه و كاربر ديگر به قسمتي ديگر دسترسي داشته باشد. در اين كتاب كم حجم اما نادر روشهايي را خواهيد آموخت تا فايلهاي حاوي برنامه هاي VBA  را با قفل گذاري محافظت نماييد. به تصور اينجانب اين مبحث تاكنون در جامعه اكسل مطرح نشده و مطلبي ناب حتي در سطح جهان مي باشد چرا كه جستجوهاي اينجانب براي يافتني منبعي در اين باب بي ثمر ماند.


خرید کتاب فارسی Excel VBA Professional projects

برنامه نویسی در Excel را شروع کنید

برنامه نویسی در محیط اکسل برای تازه کارها کار سختی است و بهمین دلیل می توانید از برنامه های آماده نوشته شده در به زبان VBA اکسل، در اینترنت استفاده نمایید. برای شروع کار باید با اصطلاحات Subroutine - Module  آشنا باشید.

تعریف سابروتین در برنامه نویسی

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

نامهای procedure, method, function و routine همه نامهای دیگری برای سابروتین هستند و معادل آن در زبان فارسی "رویه" است.

ادامه مطلب

تابع جمع زدن سلولهای رنگی در Excel

در اکسل 2003 راه مستقیمی برای انجام عملیات‌های ریاضی مانند جمع زدن، میانگین و ... بر روی خانه‌هایی که دارای یک رنگ هستند وجود ندارد و با تکنیک Find و استفاده از Copy/Paste به سختی می‌توان اینکار را انجام داد.

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


ادامه مطلب

معرفی و دانلود Addins ادغام فایل ها و شیت ها در اکسل

ا نصب این Addins شما قادر خواهید بود که محتویات فایل های مختلف اکسل را با هم ادغام (Merge) نمایید و به صورت یک Worksheet مشاهده نمایید. این Addins اکسل کاملا رایگان و به صورت کامل ارائه شده است. بعد از نصب این Addins در قسمت Data اکسل 2007 گزینه ای به نام RDB Merge Addins  اضافه می گردد

دانلود

معرفی Addins در تجزیه اطلاعات یک شیت Excel

هنگامیکه در یک Sheet از Excel  داده هایی را دارید مثلا اطلاعات فروش بر حسب شهرهای مختلف و یا اطلاعات ورود و خروج پرسنل یک شرکت و می خواهید که این اطلاعات را با معیار خاصی تجزیه کنید این Addins به شما کمک می کند که اینکار را به سادگی انجام دهید.

تصور کنید که باید اطلاعات فروش را طوری تجزیه کنید که در هر شیت Excel اطلاعات مربوط به یک شهر نمایش داده شود و یا به مدیر هر قسمت گزارش ورود و خروج پرسنل همان قسمت را بدهید و از دادن کل Sheet که در آن همه اطلاعات بخش های مختلف آمده است خودداری کنید چاره ای بجز بکار گیری ابزار Filter , Copy-Paste ندارید و اگر 20 شهر باشد و هر روز بخواهید این کار را انجام دهید کار بسیار پیچیده خواهد شد.

این Addins که به صورت رایگان قابل Download و نصب است اطلاعات شما را با شرط خاصی که در یک ستون از داده ها  است، تجزیه می کند و می تواند نتیجه کار را به صورت Sheet و یا فایل Excel درآورد.

ادامه مطلب

ماکرو VBA در Excel برای مرتب کردن Worksheet ها


برای مرتب کردن sheet ها در Excel به ترتیب حروف الفبا ابزاری موجود نیست. برای اینکار شما می توانید یک Macro در Excel توسط زبان برنامه نویسی VBA ایجاد کنید که با اجرای آن Macro در Excel شیت های اکسل مرتب می شوند.

در زیر برنامه ویژوال بیسیک این Macro آورده شده است که شما با کپی کردن آن در فایل اکسل مورد نظر خود، می توانید شیتهای آن فایل را مرتب نمایید.

ادامه مطلب