PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : property ، method ، event و سایر کدها در اکسل



Javid Mokhtari
2012/03/25, 23:37
با سلام به همه.

از همه ی دوستان VB درخواست دارم تا هر چه در مورد property ، method و event ها در اکسل بلدن با توضیحات کامل و در صورت امکان با یک ضمیمه به اشتراک بذارن .می خوام یک تایپیک مرجع در مورد property ، method و event ها ایجاد بشه تا همه استفاده کنن.مهم نیست که موضوع پیچیده است یا ساده ،فقط هر کی هرچی میدونه به اشتراک بذاره(در ضمن ،سعی شود از موضوعات تکراری جلوگیری شود واگر یکی اشتباهی مورد تکراری قرار داد ،اون رو حذف کنه).اینجوری دوستان مبتدی هم میتونن به پیشرفت یادگیریشون سرعت بدن....................از ساده ها شروع میکنیم تا پیشرفته ها.................

Javid Mokhtari
2012/03/26, 22:25
سلام آقای وطن پرست.میشه توضیحی در مورد کدتون بدین(اونی که زیرش خط کشیدم)...میخوام اینجارو پر بارش کنم.
myList = myList & i & " - " & ActiveWorkbook.Sheets(i).Name & " " & vbCr

~M*E*H*D*I~
2012/03/26, 22:38
من خواستم به صورت ستونی تو input box اضافه بشه mylist دوم باعث شده شیت ها پشت سر هم بچسبن به هم یعنی
sheet1-sheet2.... بعد به input box اضافه کردم این ساده بود که

Javid Mokhtari
2012/03/26, 22:57
اقای وطن پرست اینارو میدونم.گفتم که;می خوام تایپیک رو جامع کنم تا همه استفاده کنن.لطفاً اگه ممکنه توضیحاتتون رو کامل کنید.انگار دارید برای یک تازه کار توضیح میدین.(مثل اینکه تا از دوستان سئوال نشه،نمی خوان اطلاعاتشون رو در اختیار دیگران قرار بدن.خودم هم سعی می کنم هر روز حداقل یک مورد رو توضیح بدم.البته در حد سواد خودم.)
با نشکر

~M*E*H*D*I~
2012/03/27, 10:14
با سلام
در ادامه توضیح طبق خواسته آقا جاوید این مطالبم اضافه میکنم راستش تو توضیح قبل من فقط به mylist توجه کردم.
در زبان VBA ثابت هایی وجود دارند که اصطلاحا بهش میگن Miscellaneous Constants که به شرح زیر هستند

نوع ثابت

vbCrLf
vbCr
vbLf
vbNewLine
vbNullChar
vbNullString
vbObjectError
vbTab
vbBack
vbFormFeed
vbVerticalTab
این ثابت ها با اضافه شدن به کد اعمالی از قبیل رفتن به سر سطر، ایجاد تب خالی ، ایجاد line جدید انجام می دن ، به عنوان مثال تو کدی که آقا جاوید پرسیدن Vbcr باعث میشه به سر سطر بریم یعنی لیست شیت ها زیر هم قرار بگیرند در ادامه هم برای ایجاد فاصله بین Select sheet to go to و لیست شیت ها 2بار از این ثابت استفاده شده که اگه حذف بشه این فاصله از بین میره در واقع حذف این ثابت ها در ساختار برنامه خللی ایجاد نمیکنه و استفاده از اونها جهت تنظیمهای ظاهر برنامه کاربرد داره برای درک بهتر پیشنهاد می کنم عملا از این ثابت ها استفاده بشه تا تغییرات حاصل رو ببینید

Javid Mokhtari
2012/03/29, 15:43
Do...untilحلقه هست ولی select case یک شرط چندگانه است.

حلقه Do While ... Loop :
این حلقه نسبت به حلقه های دیگر بسیار ساده می باشد.در این حلقه،ابتدا شرط را بررسی می کند و اگر شرط درست باشد حلقه را ادامه می دهد در غیر اینصورت حلقه متوقف می شود و به شکل زیر می باشد:

DO WHILE condition
کدی که باید اجرا شود
LOOP

مثال:
Dim x as integer
Do while x<5
msgbox x
Loop
توضیح:
در خط اول متغیری(x)از نوع عددی تعریف کردیم.
در خط دوم شرط می گذاریم که تا زمانی که x<5 باشد،حلقه را اجرا کند.
در خط سوم مقدار کنونی x از طریق یک کادر پیغام نشان داده می شود
و خط سوم اشاره به ابتدای حلقه دارد.
یعنی اولین بار که حلقه اجرا می شود،x=1می شود.بررسی می کند که آیا xکوچکتر از 5 است یا نه.اگر شرط درست باشد وارد حلقه می شود و در انتهای حلقه یک واحد به x اضافه میشود.یعنی x=2می شود.دوباره شرط را چک می کند که آیا x<5است یا نه.چون2 کوچکتر از 5 است،پس وارد حلقه می شود و دستورات داخل حلقه را اجرا می کند(یعنی مقدار x از طریق کادر پیغام اعلام می شود).
__________________________________________________ __________________________________________________ ____________________
حلقه Do...until :
تا زمانی که شرط به یک مقدار مورد نظر نرسد،حلقه ادامه دارد ولی اگر حلقه به مقدار مورد نظر برسد،حلقه متوقف می شود.
مثال:
c=0............................................... ...مقدار دهی اولیه به متغیر c (نوشتن این قسمت اختیاری است).
Do until c =10..........اینجا می گوئیم که: "تا زمانی که cبرابر ده نشده است،حلقه را اجرا کن
c=c+1..................یک واحد به مقدار cاضافه می شود
loop.....................اشاره به ابتدای حلقه دارد
تا زمانی که cبه عدد ده نرسیده است حلقه تکرار می شود.

__________________________________________________ __________________________________________________ __________________
Select Case:
از این دستور برای انجام عملیات زیاد بر رو یک متغیر استفاده می شود
مثال:
Select Case Cells(1, 1)..........سلول(1,1)را در نظر بگیر یا انتخاب کن
Case 1...............................اگر مقدار شیئ انتخابی (A1) برابر 1 باشد
MsgBox 1...........................پیغام مبنی بر اینکه مقدار برابر 1 است ، صادر کن
Case 2...............................اگر مقدار شیئ انتخابی (A1) برابر 2 باشد
MsgBox 2...........................پیغامی مبنی بر اینکه مقدار برابر 2است ، صادر کن
End Select
یا می توان به صورت زیر نیز نوشت:
Select Case Sheet1.Range("a1")
Case Is = 1
MsgBox Sheet1.Range("a1")
Case Is = 2
MsgBox Sheet1.Range("a1")
Case Is = 3
MsgBox Sheet1.Range("a1")
End Select

__________________________________________________ __________________________________________________ __________________
حلقه FOR...NEXT :
این حلقه بیشتر برای شمارش مورد استفاده قرار می گیرد و صورت کلی آن را می توان به شکل زیر در نظر گرفت:

FOR Dim=start TO end
دستوراتی که باید اجرا شود
NEXT

در بالا:
Dim:نام متغیر اختیاری ما می باشد.
start:نقطه ی شروع حلقه می باشد(منفی هم می تواند باشد).
end:نقطه پایانی حلقه می باشد(منفی هم می تواند باشد).
NEXT:اشاره به ابتدای حلقه دارد.
هر بار که حلقه تکرار می شود،مقداری به مقدار (i) اضافه می شود.

مثال:

for i =1 to 10
msgbox i
next i

در مثال بالا...
ابتدا(i)مقدار 1 را در خود ذخیره می کند و وارد حلقه می شود.
پیغامی صادر می شود که مقدار (i)را نشان می دهد.
عبارت NEXT باعث می شود که حلقه از نو اجرا شود ،با این تفاوت که یک واحد به مقدار (i)اضافه شده و دوباره وارد حلقه می شود.پس (i) ابتدا مقدار 1 سپس 2 سپس 3 سپس 4 و ... را به خود می گیرد.این عمل تا عدد 10 انجام می گیرد.در واقع ما 10 بار پیغام (i) را دریافت می کنیم.

افزایش انعطاف حلقه با Step:
در مثال بالا که گفته شد یک مشکل وجود دارد و آن هم گامهای حلقه می باشد.پیش فرض گام های(step) حلقه برای پیمایش ،1 واحد است.یعنی هر بار که حلقه تکرار می شود فقط 1 واحد به مقدار قبلی متغیر اضافه می شود.حال قصد داریم با دستور Step این مشکل رو حل کنیم.

FOR Dim=start TO end STEP step_value
دستوراتی که باید اجرا شود
NEXT

در بالا step_value ،نشان دهنده ی گام های حلقه می باشد.به مثال زیر توجه کنید:


for i =2 to 8 step 2
msgbox i
next i

ابتدا (i) مقدار 2 را به خود می گیرد و وارد حلقه می شود.دستورات را اجرا می کند و وقتی به Next می رسد 2 واحد به مقدار قبلی (i) اضافه می کند.یعنی i=4 می شود و دوباره وارد حلقه میشود.در واقع ما 4 بار پیغام دریافت خواهیم کرد.چون در 8 ،4 تا 2 داریم.مقدار i به صورت روبرو می شود 8 <--6 <--4 <--2

یک مثال کاربردی:

فرض کنید می خواهیم از طریق حلقه FOR...NEXT عددهای بزرگتر از 5 را از طریق کادر پیغام نشان دهیم:

For i = 1 To 10
If i > 5 Then
MsgBox i
End If
Next i
__________________________________________________ __________________________________________________ ________________
حلقه For...Each:
صورت کلی آن را می توان چنین در نظر گرفت:
FOR EACH dim IN location
دستوراتی که باید اجرا شود
NEXt

dim:نام متغیر ماست که به دلخواه می توان هر نامی را برای آن انتخاب کرد(که قبل از حلقه باید نوع متغیرتان را مشخص کنید)
location:محدوده یا محل متغیر را در خود ذخیره می کند(محدوده ای که متغیر در آن قرار دارد)

این حلقه شباهت زیادی به حلقه For...Next دارد.اما حلقه For..Each یک خاصیت شیئ گرائی دارد و هدف خود را بیشتر در مجموعه ای از آرایه ها دنبال می کند.جست و جوی این حلقه بصورت تک به تک است و تمام اعضای موجود در خود را دنبال می کند.برای مثال وقتی می نویسیم:for each c in range("A1:A10")v
c:نام متغیر ماست(از نوع محدوده)که در محدوده ی A1:A10 وجود دارد.
یا به طور عامیانه کد بالا می گوید:«برای هر c که در محدوده ی A1:A10 وجود دارد»

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

Dim c As Range
For Each c In Range("a1:a10")
c = 1
Next

در خط اول ابتدا متغیری به نام c و از نوع Range تعریف کردیم
در خط دوم تعیین کردیم که متغیر c در محدوده یA1:A10 قرار دارد
در خط سوم به c مقدار 1 نسبت دادیم
خط چهارم Next اشاره به ابتدای حلقه دارد.
طریقه عملکرد حلقه:
اولین بار که حلقه اجرا می شود متغیر c سلول A1 را به خود نسبت می دهد بعد وارد حلقه می شود و مقدار 1 را به c(که همان A1 است)می دهد
وقتی به Next رسید،میره به ابتدای حلقه و میره سراغ محدوده ی بعدی،یعنی A2.پس c سلول A2 را به خود نسبت می دهد.و باز مقدار 1 را به c اختصاص می دهد و وقتی به Next رسید دوباره میره ابتدای حلقه و میره سراغ محدوده ی بعدی،یعنی A3.دوباره عملیات بالا را تکرار می کند.این کار آنقدر ادامه پیدا میکند تا به انتهای محدوده یعنی A10 برسد.در واقع ما به سلول های A1:A10 مقدار 1 را دادیم.

مثال:
فرض کنید محدوده ای را داریم و از طریق حلقه ی For...Each می خواهیم آدرس محدوده مورد نظر را سلول به سلول از طریق یک کادر پیغام(Msgbox)نشان دهیم.

Dim c As Range
For Each c In Range("a1:a5")
MsgBox c.Address
Next

intro
2012/03/29, 20:03
سلام خدمت اساتيد محترم
نوشته ها تون بسيار زيبا ست ولي بنظر من اگه اين موارد همراه با تمرين عملي نباشه زياد خاطرمون نخواهد موند بنابراين پيشنهاد ميكنم براي هر يك از موارد تمرين بسيار ساده اي هم قرار بديد تا بتونيم خودمونو آزمايش كنيم .

Javid Mokhtari
2012/03/29, 22:00
با سلام .
اگه نیاز به مثال های دیگری هم بود بگین.البته سعی می شود در پایان هر موضوع یک مثال کلی و کاربردی نیز ارائه شود.

http://persiandrive.com/67479

mahsa shayesteh
2012/03/29, 22:06
سلام به دوستای گلم
ممنون از آقای مختاری که پیش قدم شدن برای آموزش سیستماتیک ، فک میکنم موضوعات یه کمی پراکندس اگه جهت داشته باشه خیلی عالی میشه

Javid Mokhtari
2012/03/29, 22:28
سلام به دوستای گلم
ممنون از آقای مختاری که پیش قدم شدن برای آموزش سیستماتیک ، فک میکنم موضوعات یه کمی پراکندس اگه جهت داشته باشه خیلی عالی میشه


با تشکر از خانم شایسته.در جهت بهبود و آرایش مطالب،دوستان اگر نظری دارن حتماً بگن...

~M*E*H*D*I~
2012/03/29, 22:37
سلام
البته این موضوعی که آقا جاوید روش کار میکنه ( مبحث event method,...) بحثی بسیار مهم و البته خیلی گسترده هس، دوستان نباید انتظار داشته باشن مباحث از پایه اینجا مطرح بشه مباحث اولیه رو خود دوستان مطالعه کنن اینجا نکات کاربردی و ریز مطرح بشه خیلی بهتر هست ، فک کنم اگه بحث یه کم بیشتر پیش بره جهت خودشو پیدا میکنه

Javid Mokhtari
2012/03/29, 22:43
با تشکر از آقای وطن پرست.دوستان اگه مباحث پایه رو خودشون بخونن سرعت ما هم تو گذاشتن مطالب بیشتر میشه.دوستان اگه کسی مشکلی داشتن میتونن همینجا بپرسن.در ضمن،ممکن است به جای ارسال یک پست مرتبط با یک پست دیگر، آن پست به روز آوری شود تا مطالب پراکنده نباشد.

Javid Mokhtari
2012/03/30, 00:32
لینک ها...:

نادیده گرفتن خطا در اجرای کد (http://forum.exceliran.com/thread-51.html)
دسترسی به توابع داخلی اکسل از طریق وی بی (http://forum.exceliran.com/thread-1144.html)
کار با Spin Button (http://forum.exceliran.com/thread-1099.html)
ایجاد فرم سفارشی با VB (http://forum.exceliran.com/thread-1260-post-6099.html#pid6099)
قفل کردن کلید های کیبورد با VB (http://forum.exceliran.com/thread-49.html?highlight=)
استفاده از آرایه ها در کد نویسی (http://forum.exceliran.com/thread-607.html?highlight=%D8%A7%D8%B1%D8%A7%DB%8C%D9%87)
بدست آورد کد رنگ و قلم سلول (http://forum.exceliran.com/thread-242.html)

Javid Mokhtari
2012/03/30, 02:22
برخی Event های عمومی در اکسل :

شما قبل از اینکه بخواهید برنامه ای بنویسید،ابتدا باید رویدادی مناسب برای کدتان انتخاب کنید.انتخاب رویدادهای نادرست در طراحی می تواند مشکلات زیادی ایجادکند.

click:
وقتی بر روی یک کنترل یک بار کلیک شود،کد های موجود در این رویداد اجرا می شود.

DBLclick:
وقتی بر روی یک کنترل دو بار کلیک شود،کد های موجود در این رویداد اجرا می شود.

KeyDown:
اگر کنترل مورد نظر فعال باشد و دکمه ای از کیبورد فشار داده شود،کد های این رویداد اجرا می شود.

Key Press:
زمانی که کلید کیبورد فشار داده شود و پائین نگه داشته شود،کد های موجود در این رویداد اجرا می شود.

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

Resize:
اگر اندازه کنترل تغییر پیدا کند،کد های موجود در این رویداد اجرا می شود.

MouseDown:
زمانی که کلید موس فشار داده شود،کد های موجود در این رویداد اجرا می شود.

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

GotFocus:
زمانی که یک کنترل فوکوس را به دست می گیرد،کد های موجود در این رویداد اجرا می شود.

LostFocus:
زمانی که یک کنترل فوکوس را از دست می دهد،کد های موجود در این رویداد اجرا می شود.

برخی Event های کاربردی مهم اختصاصی کنترل ها:

change:
این رویداد مختص کنترل های کادر متنی(مثل textbox)می باشد.این رویداد زمانی فعال می شود که محتویات کنترل مورد نظر تغییر کند.فرض کنید یک Textbox داریم،حال اگر در داخل تکست باکس یک کاراکتر تایپ کنیم،این رویداد فعال می شود.چون محتویات تکست باکس مورد نظر تغییر پیدا کرده است.اگر ما بخواهیم در تکست باکس مورد نظر کلمه "علی" را بنویسیم، رویداد change سه بار اجرا می شود.می نویسیم "ع" محتویات باکس تغییر کرد،پس رویداد اتفاق می افتد.دوباره،مینویسیم "عل" محتویات باکس تغییر کرد،پس رویداد دوباره اتفاق می افتد.دوباره،مینویسیم "علی" محتویات باکس تغییر کرد،پس رویداد دوباره اتفاق می افتد.

Enter:
این رویداد زمانی اتفاق می افتد که ما وارد یک کنترل شویم.فرض کنید 2 تا تکست باکس داریم و ما در باکس اولی هستیم(یعنی باکس 1 فعال است یا فوکوس را در دست دارد)حال برای باکس2 و در رویداد مذکور کد زیر را می نویسیم:
Private Sub TextBox2_Enter()
MsgBox "Hi"
End Sub
حالا اگر ما وارد باکس 2 شویم یا انتخاب کنیم،پیام "Hi" ظاهر می شود.

Exit:
بر عکس رویداد Enter می باشد.یعنی اگر از یک کنترل خارج شویم،این رویداد اتفاق می افتد.

رویداد های مهم Userform:
Activate:
زمانی که فرم فعال می شود این رویداد اتفاق می افتد
Deactivate:
عکس رویداد Activate می باشد.یعنی زمانی که فرم غیر فعال یا بسته می شود،این رویداد اتفاق می افتد
Initialize:
قبل از اینکه فرم فعال شود،این رویداد اتفاق می افتد.یعنی قبل از اینکه رویداد Activeteاتفاق بیافتد،این رویداد اتفاق می افتد.از این رویداد بیشتر برای مقدار دهی اولیه به یک شیئ یا یک متغیر مورد استفاده می شود.
QueryClose:
این رویداد زمانی اتفاق می افتد که بخواهیم از طریق دکمه ی خروج سریع(x)فرم استفاده کنیم(همون دکمه ی Close پنجره ها).

khakzad
2012/03/30, 12:49
سلام
ممنون
فرق این 3تا دقیقا چیه keydown,key press,key up
اخه دو حالت داریم یا کلید رو پایین نگه می داریم.یا اینکه ی بار می زنیم میاد بالا و برمی گرده یر جاش
حالت سومش مال چیه؟

khakzad
2012/03/30, 12:49
سلام
ممنون
فرق این 3تا دقیقا چیه keydown,key press,key up
اخه دو حالت داریم یا کلید رو پایین نگه می داریم.یا اینکه ی بار می زنیم میاد بالا و برمی گرده یر جاش
حالت سومش مال چیه؟

Javid Mokhtari
2012/03/30, 21:30
سلام
ممنون
فرق این 3تا دقیقا چیه keydown,key press,key up
اخه دو حالت داریم یا کلید رو پایین نگه می داریم.یا اینکه ی بار می زنیم میاد بالا و برمی گرده یر جاش
حالت سومش مال چیه؟


رویدادهای keydown,key press فرق آنچنانی با هم ندارند.همینکه کلیدی از کیبورد فشار داده شود،کد مورد نظر اجرا می شود
اما KeyUP زمانی اجرا می شود که شما کلیدی را فشار داده اید ،زمانی که آن را رها می کنید تا کلید به حالت اول خود برگردد،کد اجرا می شود.
مثلاً فرض کنید کلید enter را فشار داده و پائین نگه داشته اید.تا زمانی که کلید enter پائین است کد اجرا نمی شود اما همینکه کلید enter را رها کنید،کد اجرا می شود.

Javid Mokhtari
2012/03/31, 01:32
توابع

توابع مهم و کاربردی در VB

Len:
تعداد کاراکتر های موجود در یک رشته را نشان می دهد:
msgbox Len("Hello..............که جواب برابر 5 خواد بود
یا
textbox1.text=Len("Hello.............که مقدار 5 در باکس 1 قرار می گیرد.

Sqr:
جذر عدد را می گیرید...........................Msgbox Sqr(25..........که جواب برابر 5 خواهد بود.

َAbc:
قدر مطلق عدد را نشان می دهد...........Msgbox Abs(-25..........که جواب برابر 25 خواهد بود.

Int:
عدد را به طرف عدد صحیح گرد می کند.....Int(6.4...Int(5.7...که جواب به ترتیب برابر 5 و 6 خواهد بود

Mid:
برای انتخاب بک قسمت از یک رشته مورد استفاده قرار می گیرد.
صورت کلی آن را به این صورت می توان فرض کرد: Mid(string,start,length
string:رشته ای که می خواهید عمل جست و جو در آن صورت گیرد.
Start:شماره کاراکتری که عمل انتخاب کاراکتر باید از آن شروع شود.
length:تعداد کاراکتری که بعد از کاراکتر start باید انتخاب کند.
فرض کنید که می خواهید رشته ی "excel" را از رشته ی "exceliaranian" جدا کنید.....Mid("exceliaranian", 1, 5
در مثال بالا،از اولین کاراکتر شروع و تا5 کاراکتر بعد از آن را انتخاب می کند.که جواب excel می شود.
اگر در قسمت length چیزی نوشته نشود،اکسل از کاراکتر start شروع و تا آخرین کاراکتر رشته را انتخاب می کند.
مثال...:
Mid("exceliaranian", 6 ....که حاصل iranian خواهد بود

Mod:
باقیمانده حاصل از تقسیم دو عدد بر هم را نشان می دهد.
مثال:
5 8Mod که حاصل 3 خواهد بود

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

صورت کلی آن به شکل زیر است:

LEFT(string,length as long

string:نام رشته ای که می خواهید جداسازی در آن صورت گیرد که باید از نوع رشته ای باشد(یعنی بین " " نوشته شود)
long:تعداد کاراکتر که باید جدا شود.

برای مثال فرض کنید رشته ای به نام Myiran دارین و می خواهید از قسمت چپ رشته ، دو کاراکتر را انتخاب کنید.کد مربوطه به شکل زیر خواهد بود
Left("Myiran", 2
کد بالا از قسمت چپ رشته و از اولین کاراکتر شروع و تا 2 کاراکتر را انتخاب می کند که حاصل ، My خواهد بود.

RIGHT:
همانند LEFT است با این تفاوت که عمل جداسازی رو از سمت راست آغاز می کند.
مثل:
Right("Myiran", 4
که نتیجه ، iran خواهد شد.

UCase(Upper case:
برای تبدیل حروفات کوچک به بزرگ یک رشته مورد استفاده قرار می گیرد.
مثال:
UCase("hello
که نتیجه به صورت HELLO خواهد بود.

LCase(Lower Case:
عکس حالت UCase می باشد.
برای تبدیل حروفات بزرگ به کوچک یک رشته مورد استفاده قرار می گیرد.
مثال:
LCase("HELLO
که نتیجه به صورت hello خواهد بود.

توابعی برای تبدیل:----------------------------------------------------------------------------------------------------

Cstr(convert to string:
مقدار عددی را به مقدار رشته ای تبدیل می کند.
مثال:
Cstr(43
که نتیجه "43" خواهد بود

Cint(convert to integer:
برای تبدیل اعداد(چه رشته ای باشد ، چه عددی)به یک عدد صحیح مورد استفاده قرار می گیرد
مثال:
Cint(58.13.........که حاصل ، 58 خواهد بود
Cint("58.13.........که حاصل باز 58 خواهد بود

Val(convert to value:
برای تبدیل مقادیر رشته ای به عددی مورد استفاده قرار می گیرد.
تفاوتی که این تابع با سایر توابع تبدیل کننده رشته به عدد(مثل Cint و CDbi)دارد ،در این است که تابع Val مقادیر غیر عددی را نیز قبول می کند.درواقع این تابع مقادیر عددی را از داخل یک رشته که شامل عدد و حروف می باشد ، جدا می کند.
مثال:
Val("43...........که نتیجه 43 خواهد بود
Val("43excel...........که نتیجه 43 خواهد بود

توجه داشته باشید که اگر عدد قبل از متن قرار گیرد،عدد را تشخیص داده و جدا می کند.ولی اگر عدد بعد از متن قرار گیرد ، هیچ مقدار برگشتی نخواهید داشت.
برای مثال:حاصل مقادیر برگشتی زیر صفر خواهد بود(زیرا عددی قبل از متن وجود ندارد)..................
Val("excel43
Val("excel

CLng(convert to long:
برای تبدیل اعداد یا رشته های بزرگ به عدد مورد استفاده قرار می گیرد
مثال:(CLng(200000000.9...................که حاصل 2000000001 خواهد بود
(CLng(200000000.3...................که حاصل 200000000 خواهد بود
چون CLngعمل گرد کردن را نیز انجام می دهد.

CDbl(convert to double:
مقدار عددی را رشته ای را به عددی با دقت اعشار دوبل(مضاعف)تبدیل می کند.
مثال:
CDbl("43.1254............که جواب 43.1254

Javid Mokhtari
2012/04/05, 22:03
MsgBox و InputBox

MsgBox(MessageBox:
از این تابع برای نمایش دادن کادر پیام(که حاوی پیامی برای اخطار؛هشدار،اطلاع رسانی،نمایش مقادیر برگشتی توابع به صورت لحظه ای،تعیین موقعیت و ...)استفاده می شود.
شکل عمومی آن بصورت زیر می باشد:
MsgBox (strPrompt,intStyle,strTitle

strPrompt:متنی که توسط کادر پیام باید نمایش داده شود.

intStyle:نوع و تعداد دکمه هایی که باید در کادر پیام نشان داده شود.که به شرح زیر می باشد:
مقدار عددی..........نام.......................... ....شرح
0 ......................VbOKOnly.................... دکمه ی OK در کادر پیام ظاهر می شود
1.......................VbOKCancel................ .دکمه های OK و Cancel در کادر پیام ظاهر می شود
2.......................VbAbortRetryIgnore......د کمه های Abort ، Retry و Ignore در کادر پیام ظاهر می شود
3.......................VbYesNoCancel............. دکمه های No ، Yes و cancel در کادر پیام ظاهر می شود
4.......................VbYesNo................... ...دکمه های No ، Yes در کادر پیام ظاهر می شود
5.......................VbRetryCancel............. ..دکمه های Retry و cancel در کادر پیام ظاهر می شود

strTitle:عنوان کادر پیام را در خود ذخیره می کند.

به مثال زیر توجه کنید:
MsgBox "exceliranian", vbOKOnly, "Hi
در کد بالا کادری ظاهر می شود که بر چسب یا عنوان این کادر Hi و یک دکمه ی OK و توضیحات داخل کادر exceliranian خواهد بود.
برای تعیین نوع دکمه هایی که در کادر پیام باید ظاهر شود به جای نوشتن نام دکمه ، می توان از مقدار عددی آن نیز استفاده کرد.یعنی کد بالائی را به شکل زیر نیز می توان نوشت:
MsgBox "exceliranian", 0, "Hi

تعیین دکمه پیش فرض در MsgBox:
فرض کنید در کادر پیامی که تعیین کرده اید ،بیش از یک دکمه وجود دارد.و حالا دوست دارید وقتی کادر پیام ظاهر می شود دکمه ای را که شما تعیین می کنید را به طور پیش فرض انتخاب کند(این حالت برای جلوگیری از اشتباهات استفاده می شود.مثلاً در همین اکسل اگه تغییراتی را در فایلتون انجام بدهید و بدون ذخیره کردن بخواهید خارج شوید،کادر پیامی ظاهر می شود که سه دکمه دارد و دکمه ی Save به طور پیش فرض انتخاب شده است.)

مقدار عددی.......................نام............. ..................شرح
0 .........................VbDefaultButton1......... ...........اولین دکمه از سمت چپ پیش فرض است
256.......................2 VbDefaultButton..................دومین دکمه از سمت چپ پیش فرض است
512.......................VbDefaultButton3........ ............سومین دکمه از سمت چپ پیش فرض است

برای این کار کافیه بعد از تعیین نوع دکمه های نمایش ، با علامت جمع(+)دکمه ی پیش فرض خودتون رو انتخاب کنید.
مثال:
MsgBox "exceliranian", 1 + vbDefaultButton2, "Hi
یا
MsgBox "exceliranian", vbOKCancel + vbDefaultButton2, "Hi
یا
MsgBox "exceliranian", vbOKCancel +256, "Hi

در مثال بالا دو دکمه OK و Cancel ظاهر می شود و دکمه ی دوم (کهCancel است)پیش فرض قرار می گیرد.

ایجاد نشانه یا علامت در کادر MsgBox:
این کار مزایای زیادی دارد.مثلاً برای آنکه کاربر را از اهمیت پیام آگاه کنید ، می توانید یک نشانه در پشت پیام کادر قرار دهید.در زیبائی کار هم نقش بسزائی دارد.

مقدار عددی..........نام.......................... ....شرح
16 ......................VbCritical.................. ..نشانه بحرانی(یک دایره ی قرمز که وسطش یک ضربدر کشیده شده است)
32.......................VbQuestion............... ..علامت سئوال
48.......................VbExclamation............ ..نشانه اخطار(یک مثلث که وسطش یک علامت تعجب وجود دارد.)
64.......................VbInformation............ .نشانه اطلاعات
مثال:
MsgBox "exceliranian", vbOKCancel + vbCritical + vbDefaultButton2, "Hi

تعیین مقدار برگشتی در MsgBox(تعیین اینکه چه دکمه ای توسط کاربر فشار داده شده است):
ما اینجا یک کادر پیام درست کردیم و به نظر همه چیز درسته.اما یک مشکل اساسی وجود دارد که باید حل شود.و اون این هست که ، چگونه باید مشخص کنیم که چه دکمه ای توسط کاربر انتخاب شده است تا دستورات مربوط به اون اجرا شود.چون اگر این مشکل حل نشود،شما هر دکمه ای از MsgBox را که انتخاب کنید همگی یک دستور مشابه رو اجرا می کنند.
برای حل این مشکل کافیه MsgBox را در یک متغیر ذخیره کرده و با یک دستور شرطی ، دستورات مربوط به هر دکمه را تعیین کنید(تعیین نام متغیر اختیاری است).
به یک نقطه باید توجه کرد که اگر MsgBox به یک متغیر نسبت داده شود باید مشخصات MsgBox داخل پرانتز ()قرار گیرد.
مثال:
x = MsgBox("exceliranian", vbOKCancel + vbCritical + vbDefaultButton2, "Hi")
If x = vbOK Then
MsgBox "OK is selected"
ElseIf x = vbCancel Then
MsgBox "cancel is selected"
End If
یا برای راحتی می توان از مقدار عددی آنها نیز استفاده کرد:
x = MsgBox("exceliranian", vbOKCancel + vbCritical + vbDefaultButton2, "Hi")
If x = 1 Then
MsgBox "OK is selected"
ElseIf x = 2 Then
MsgBox "cancel is selected"
End If
__________________________________________________ __________________________________________________
InputBox:
از این تابع بیشتر برای دریافت مقادیر از طریق پرسش و پاسخ مورد اسفاده قرار می گیرد.
InputBox بسیار شبیه MsgBox می باشد اما با چند مورد تفاوت:
1_دکمه های موجود در InputBox همیشه OK و Cancel می باشد که ثابت هستند.
2_هیچ نشانه یا علامتی نمی توان در آن مشخص کرد.
3_InputBox علاوه بر نمایش یک پیام،می تواند مقادیری را نیز دریافت کند.
صورت کلی آن به شکل زیر است:

INPUTBOX(strprompt,strtitle,strdefault,intXpos,int Ypos
strprompt:متن یا پرسشی که باید داخل کادر نمایش داده شود.
strtitle:عنوان کادر.
strdefault:مقدار پیش فرض که باید داخل کادر ورود مقادیر قرار گیرد.
intXpos,intYpos:مختصات کادر پیام برای ظاهر شدن(تعیین می کنیم که کادر تحت چه مختصاتی ظاهر شود).
مثال:فرض کنید می خواهیم مساحت مربع یا مستطیل را بدست آوریم:
b = InputBox("b_value")
c = InputBox("c_value")
A = b * c
ما اینجا دو تا Inputbox گذاشتیم تا مقادیر bوc را از کاربر دریافت کند و بعد مساحت را از طریق فرمول A = b * c بدست آوردیم.حال مساله اینجا این است که چگونه مقدار محاسبه شده ی A را نشان دهیم.چون اگر فقط کد بالا را بنویسیم ، مساحت محاسبه می شود ولی مقدار آن نمایش داده نمی شود.اولین روش و ساده ترین روش استفاده از MsgBox است.یعنی کد بالا را می توان به شکل زیر کامل کرد:
b = InputBox("b_value")
c = InputBox("c_value")
A = b * c
MsgBox A

~M*E*H*D*I~
2012/04/07, 10:38
سلام
ممنون از دوست پرتلاشمون اقا جاوید

~M*E*H*D*I~
2012/04/07, 15:55
با سلام خدمت دوستان

در ادامه موضوعاتی که دوست عزیزمون آقا جاوید ارائه کردن من هم مطالب زیر رو اضافه می کنم

1-خصوصیت filedialog
به طور كلي هنگامي كه شما قصد داريد پنجره هايي كه امكان ذخيره كردن، و يا باز كرد فايل را دارد باز كنيد از اين خصوصيت استفاده مي كنيد، درواقع به 4 نوع زير از اين خصوصيت استفاده مي شود
1-1:.open
از اين خصوصيت جهت باز كردن فايل (ها) استفاده ميشود
1-2:.saveas
از اين خصوصيت جهت ذخيره فايل استفاده مي شود
1-3:.file picker
از اين خصوصيت عمدتا براي انتخاب فايل و يافتن مسيري كه فايل در آن ذخيره شده استفاده مي شود
1-4:.folder picker
اين خصوصيت نيز همانند خصوصيت فوق عمل ميكند با اين تفاوت كه مسير فولدر را برميگرداند.
نحوه تعريف:
نحوه تعريف متغيري با اين خصوصيت از قوانين تعريف متغير پيروي نموده به شرح زير تعريف مي گردد
Dim fd as filedialog
بعد از تعريف متغير مي بايست نوع dialog box يا همان پنجره مورد نظر را به متغير اختصاص دهيد
Set fd=application.filedialog(….)
در كد فوق داخل پرانتز بايد يكي از 4 نوع پنجره كه بالا تعريف شد انتخاب كنيد با باز كردن پرانتز از ليستي كه مشاهده مي كنيد مي توانيد نوع باكس يا پنجره مورد نظرتان را انتخاب كنيد مثلا msoFileDialogFolderPicker
با اجراي كد بالا باكس مورد نظر شما باز ميشود فرض كنيد folderpicker را انتخاب كرده ايد در اين صورت پنجره اي كه باز ميشود ليست فولدر هاي درايو جاري را نشان مي دهد شما ميتوانيد يك فولدر را انتخاب كنيد( درصورتي كه file بود چند انتخاب مي توانستيد انجام دهيد) براي اينكه يك باكس باز شود filedialog از متد show استفاده مي كند وقتي باكس راOK كنيد show مقدار -1 و اگر cancel كنيد مقدار 0 برمي گرداند.
مثلا با انتخاب folderpicker مي توانيد تعيين كنيد كه اگر show مقدارش -1 بود مسيرفولدر انتخاب شده را را در يك متغير ذخيره كن بعد فايل جاري را در اين مسير ذخيره كن.

Javid Mokhtari
2012/04/08, 17:40
با سلام و تشکر از آقای وطن پرست.
مثل اینکه دوستان نمی خوان منو تو این راه کمک کنن...!!

~M*E*H*D*I~
2012/04/08, 20:15
سلام

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

~M*E*H*D*I~
2012/04/09, 16:23
با سلام

2-intersect
اين متد اشتراك بين 2 يا چند محدوده را برمي گرداند، تعداد محدوده هايي كه اين متد ساپورت مي كند 30 ناحيه است ، در ضمن انچه اين متد برمي گرداند از نوع range است.
نحوه استفاده:



Dim iters as range
Set inters=application.intersect(range("rng1"),range("rng2")….)

Javid Mokhtari
2012/04/16, 10:28
کنترل نوع داده ها

IsDate:
کنترل می کند که آیا آرگومان از نوع تاریخ است.
IsEmpty:
کنترل می کند که آیا آرگومان مقدار گرفته است.
IsNull:
کنترل می کند که آیا آرگومان مقدار Null دارد( Null مقدار محسوب می شود).
IsNumeric:
کنترل می کند که آیا آرگومان مقدار عددی گرفته است.

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

If Not IsNumeric(TextBox1) Then
MsgBox "Format is not numeric"
End If

mokaram
2012/04/21, 00:25
با تشکر از آقا جاوید عزیز که مثل همیشه پر تلاش و سخت کوشانه کار آموزش را ادامه میدن
ممنون رفیق

Javid Mokhtari
2012/04/24, 01:35
قالب بندی ها(Formats)

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

فرمت های پر کاربرد خود اکسل:

Currency:
نمایش اعداد را با جدا کننده ی هزارتائی،نمایش تا دو رقم اعشاری،نمایش واحد ارزی(ریال)
مثال:
قالب بندی سلول A1:فرض کنید A1=10000 می باشد...:
Range("a1").Value = Format(Range("a1").Value, "currency
که عدد A1 به شکل «ريال 10,000.00»در خواهد آمد

Standard:
نمایش اعداد را با جدا کننده ی هزارتائی،نمایش تا دو رقم اعشاری(بدون نمایش واحد ارزی)
مثال:
Range("a1").Value = Format(Range("a1").Value, "standard
که عدد A1 به شکل « 10,000.00»در خواهد آمد

Percent:
مقدار را به صورت درصدی(%) نمایش می دهد.

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

0:
به جای آن یا یک عدد وارد می شود یا صفر قرار می گیرد(یعنی اگر ما فرمت را 000 تعیین کنیم و عدد 15 را وارد کنیم عدد حاصل به شکل 015 در خواهد آمد )

#:
به جای آن یا یک عدد قرار می گیرد یا هیچ چیز قرار نمی گیرد(یعنی اگر ما فرمت را ### تعیین کنیم و عدد 15 را وارد کنیم عدد حاصل به شکل 15 در خواهد آمد )

,:
جدا کننده ی هزارتائی است(یعنی اگر ما فرمت را ###,# تعیین کنیم و عدد 15000 را وارد کنیم عدد حاصل به شکل 15,000 در خواهد آمد )
مثال:
Range("a1").Value = Format(Range("a1").Value, "#,###


.(نقطه):
نشانه اعشار است.

%:
عدد را بر 100 تقسیم و با نماد % نشان می دهد.

:(دو نقطه)
تاریخ را به ساعت ، دقیقه و ثانیه تقسیم می کند
مثال:
Range("a1").Value = Format(Range("a1").Value, "00:00:00

/:
قالب بندی به شکل تاریخ.
مثال:
Range("a1").Value = Format(Range("a1").Value, "00/00/00
یا......
Range("a1").Value = Format(Range("a1").Value, "##/##/##

نمونه...... (http://persiandrive.com/286595)
[hr]
آیا می دانید فرق تقسیم(/) با تقسیم (\) در چیست..!!؟

تقسیم(/) نتیجه را بصورت اعشاری نمایش می دهد.
اما...;
تقسیم (\) نتیجه را بصورت عدد کامل یا همون صحیح نمایش می دهد.
مثال:
5.66666=17/3
5=3\17

Javid Mokhtari
2012/05/14, 10:45
Method ها و Proprty های کاربردی


Activecell :
سلول فعال را نشان می دهد.می توان برای مقدار دهی سلول فعال یا پیدا کردن آدرس سلول فعال از آن استفاده کرد.
مثال :Application.ActiveCell = 1 که مقدار سلول فعال را 1 می دهد.
MsgBox Application.ActiveCell.Address که آدرس سلول فعال را از طریق کادر پیام نشان می دهد.
Activeaheet:
گاربرگ فعال را نشان می دهد----------
که نام کاربرگ فعال را نشان می دهد.MsgBox Application.ActiveSheet.Name

ActiveWindow:
کاربرگ فعال را نشان می دهد
MsgBox Application.ActiveWindow.Caption

ActiveWorkbook:
کارپوشه فعال را نشان می دهد.
MsgBox Application.ActiveWorkbook.Name

Rows:
برای پیدا کردن شماره سطر به کار می رود که می تواند در جاهای مختلفی کاربد داشته باشد.
Application.Rows(1).Select که سطر 1 را انتخاب می کند.
Application.Rows(ActiveCell.Row).Select که سطر سلول فعال را انتخاب می کند

Columns:
همانند Row است با این تفاوت که شماره ستون را نشان می دهد.

Quit:
برای خروج از برنامه اکسل(کل برنامه اکسل را می بندد)
Application.Quit

Close:
کاربرگ برنامه اکسل را می بندد
مثال:
ActiveWorkbook.Close

Address:
برای نمایش آدرس یک محدوده به کار می رود.
MsgBox Application.Activecell.address----که آدرس سلول فعال را نشان می دهد

Selection:
برای بدست آوردن آدرس محدوده های انتخاب شده به کار می رود.
MsgBox Application.Selection.Address

Activate:
برای فعال نمودن اشیاء مورد استفاده قرار می گیرد.
مثال:
Sheet2.Activate----که شیت 2 را فعال می کند
Cells(1, 10).Activate---که سلول J1 را فعال می کند

Select:
برای انتخاب نمودن اشیاء مورد استفاده قرار می گیرد.
مثال:
Sheet2.Select----که شیت 2 را انتخاب می کند
Cells(1, 10).Select---که سلول J1 را انتخاب می کند

RecentFiles:
مجموعه ای از فایل هایی که قبلاً توسط اکسل باز شده است را بر می گرداند.
مثال:
ّFor each filename in Application.RecentFoles
MsgBox filename.Name
Next filename

PrintOut:
برای فرستادن شیت ها به حالت چاپ مورد استفاده قرار می گیرد.
مثال:
Sheet1.PrintOut--------که شیت 1 را چاپ می کند
یا:
Sheets("sheet1").PrintOut

PrintPreview:
برای فرستادن شیت ها به حالت پیش نمایش چاپ مورد استفاده قرار می گیرد.
مثال:
Sheet1.PrintPreview
یا:
Sheets("sheet1").PrintPreview

visible:
برای نمایش یا عدم نمایش اشیاء مورد استفاده قرار می گیرد که مقدار آن به صورت منطقی(True_False)مشخص می شود.
مثال:
Sheet1.Visible = False---که شیت 1 را غیر قابل نمایش(مخفی) می کند.
Sheet1.Visible = True---که شیت 1 را قابل نمایش(آشکار) می کند.

اما در کنار حالت True_False برای نمایش اشیاء(که حالت پیشنهادی VB هستش) می توان از خاصیت های زیر هم استفاده کرد:
xlSheetHidden:شیت مربوطه را در حالت مخفی تنظیم می کند.
xlSheetVeryHidden:شیت مربوطه را در حالت مخفی تنظیم می کند.
xlSheetVisible:شیت مربوطه را در حالت نمایش(آشکار) تنظیم می کند.

فرق بین xlSheetHidden و xlSheetVeryHidden :

اگر شما حالت نمایش شیت را بر روی xlSheetHidden تنظیم کنید،از طریق ابزار های خود اکسل می توانید شیت مربوطه را از حالت مخفی در آورید.
ولی اگر بر روی xlSheetVeryHidden تنظیم کنید،این کار از طریق ابزار های خود اکسل قابل انجام نخواهد یود.

Clear:
برای پاک کردن تمام حالت های اعمال شده(اعم از:قالب بندی ها،محتویات،کامنت ها و ...)بر روی سلول ها مورد استفاده قرار می گیرد.
Range("A1:B10").Clear

ClearContents:
فقط محتویات سلول مورد نظر را پاک می کند
Range("A1:B10").ClearContents

ClearFormats:
قالب بندی های سلول های مورد نظر را پاک می کند.
Range("A1:B10").ClearFormats

ClearComments:
برای پاک کردن توضیحات سلول های مورد نظر مورد استفاده قرار می گیرد.
Range("A1:B10").ClearComments
================================================== ===========================================
91/03/20
================================================== =============
Count:
برای شمارش به کار می رود.
مثال:
Sheets.Count.........که تعداد شیت های موجود را می شمارد.برای مشاهده مقدار برگشتی میتوانید از MsgBox استفاده کنید:
MsgBox Sheets.Count

Index:
برای پیدا کردن ایندکس(شماره یا رتبه)به کار میرود.
مثال:
MsgBox ActiveSheet.Index.................که شماره شیت فعال را بر میگرداند.

Union:
برای کار با چندین سطر یا ستون مختلف به کار می رود:
Union(Rows(1), Rows(3), Rows(5)).Activate..............که سطر های 1و3و5 را انتخاب میکند.
Union(Columns(1), Columns(3), Columns(5)).Activate..................که ستون های 1و3و5 را انتخاب میکند.
.
.
.
یا می توانید ترکیبی از هر دو را استفاده کنید:
Union(Columns(1), Rows(3), Rows(5)).Activate........................که سطر های 3و5 و ستون 1 را انتخاب میکند.

Name:
نام والد ها رو نشون میده.
MsgBox Sheet1.Name.....................................ن ام شیت 1 را نشان میدهد.
MsgBox ActiveWorkbook.Name.........................نام ورک بوک را نشان می دهد.
MsgBox Application.Name................................ نام عنوان برنامه(Application)را نشان می دهد.

Full Name:
مسیر ذخیره شده ی فایل را نام و فرمت آن نشان می دهد:
MsgBox ActiveWorkbook.FullName

Pach:
مسیر ذخیره شده ی فایل را نشان می دهد:
MsgBox ActiveWorkbook.Path

Window State:
برای تنظیم نمای پنجره اکسل به کار می رود که داری سه حالت ثابت است که در زیر با مثال آورده شده است:
Application.WindowState = xlMaximized...................حالت بزرگ نمائی
Application.WindowState = xlMinimized.................... حالت عدم نمایش(حالت پنجره)
Application.WindowState =xlNormal

Open:
برای باز کردن WorkBook به کار می رود:
Workbooks.Open ("D:|ExcelFiles|Book1.xls

Save:
برای ذخیره کردن فایل مورد نظر:
Workbooks("D:|ExcelFiles|Book1.xls").Save

Save As:
همانند Save است با این تفاوت که در قسمت آخر باید مسیر جدید و نام جدید فایل را وارد کنید:
Workbooks("D:|ExcelFiles|Book1.xls").SaveAs ("E:|ExcelFiles|NewBook1.xls

ایجاد WorkSheet جدید:
برای این کار از دستور WorkSheets.Add استفاده می شود:
مثال:
Worksheets.Add

می توان از طریق Name نامی را نیز برای آن تعیین کرد:
Worksheets.Add.Name = "Newsheet

می توان از طریق before و after محل قرار گیری شیت جدید را تعیین کرد:
Worksheets.Add(before:=Sheet7).Name = "Mysheet
Worksheets.Add(after:=Sheet7).Name = "MySheet
دقت کنید که اگر نام شیت ها تکراری باشد Error خواهد داد.

می توان از طریق Count تعداد شیت جدیدی که قرار است درست شود را نیز تعیین کرد:
Worksheets.Add(after:=Sheet4).Count = 1

Javid Mokhtari
2012/06/08, 17:06
پست 30 به روز آوری شد %

~M*E*H*D*I~
2012/06/12, 08:53
با سلام خدمت دوستان
در چند بخش اطلاعاتی در موردCommand bars تقدیم میکنم امیدوارم مفید باشه
1-نحوه ساختن Command bar
به طور کلی در مجموعه نرم افزار های آفیس به دو شیوه می توان به شخصی سازی Toolbar پرداخت :
الف: استفاده از Customize dialog box
ب: Microsoft® Visual Basic® for Applications (VBA) code
در نرم افزار Access شما قادر هستید از روش الف منو ها و pop-up منو ها(منوهای جهنده) را تولید نمایید ،اما در سایر نرم افزار های مجموعه افیس می بایست از VBA برای توسعه منو ها و pop-up منو ها استفاده نمایید.
جهت ساخت command bar یا همان منو های شخصی مجموعه ای از روش ها(method) گرد آوری شده است.
برای ساخت toolbar , menu bar,و pop-menu bar می بایست از متد msoBarMenuBar یا msoBarPopup استفاده نمود.
در زیر نمونه ای جهت ایجاد موارد فوق مشاهده می کنید:





Sub Create_Menu()
Dim MyBar As CommandBar
Dim MyPopup As CommandBarPopup
Dim MyButton As CommandBarButton

Delete_Menu

Set MyBar = CommandBars.Add(Name:="My Menu", _
Position:=msoBarFloating, temporary:=True)

With MyBar
.Top = 125
.Left = 850

Set MyPopup = .Controls.Add(Type:=msoControlPopup)
With MyPopup
.Caption = "Popup 1"
.BeginGroup = True
Set MyButton = .Controls.Add(Type:=msoControlButton)
With MyButton
.Caption = "Button 1a"
.Style = msoButtonCaption
.BeginGroup = True
.OnAction = "Macro1a"
End With
Set MyButton = .Controls.Add(Type:=msoControlButton)
With MyButton
.Caption = "Button 1b"
.Style = msoButtonCaption
.BeginGroup = False
.OnAction = "Macro1b"
End With
End With
Set MyPopup = .Controls.Add(Type:=msoControlPopup)
With MyPopup
.Caption = "Popup 2"
.BeginGroup = False
Set MyButton = .Controls.Add(Type:=msoControlButton)
With MyButton
.Caption = "Button 2a"
.Style = msoButtonCaption
.BeginGroup = True
.OnAction = "Macro2a"
End With
Set MyButton = .Controls.Add(Type:=msoControlButton)
With MyButton
.Caption = "Button 2b"
.Style = msoButtonCaption
.BeginGroup = False
.OnAction = "Macro2b"
End With
End With
.Width = 100
.Visible = True
End With

End Sub

Nima
2012/06/12, 09:17
با سلام خدمت دوستان
در چند بخش اطلاعاتی در موردCommand bars تقدیم میکنم امیدوارم مفید باشه
1-نحوه ساختن Command bar
به طور کلی در مجموعه نرم افزار های آفیس به دو شیوه می توان به شخصی سازی Toolbar پرداخت :
الف: استفاده از Customize dialog box
ب: Microsoft® Visual Basic® for Applications (VBA) code
در نرم افزار Access شما قادر هستید از روش الف منو ها و pop-up منو ها(منوهای جهنده) را تولید نمایید ،اما در سایر نرم افزار های مجموعه افیس می بایست از VBA برای توسعه منو ها و pop-up منو ها استفاده نمایید.
جهت ساخت command bar یا همان منو های شخصی مجموعه ای از روش ها(method) گرد آوری شده است.
برای ساخت toolbar , menu bar,و pop-menu bar می بایست از متد msoBarMenuBar یا msoBarPopup استفاده نمود.
در زیر نمونه ای جهت ایجاد موارد فوق مشاهده می کنید:





Sub Create_Menu()
Dim MyBar As CommandBar
Dim MyPopup As CommandBarPopup
Dim MyButton As CommandBarButton

Delete_Menu

Set MyBar = CommandBars.Add(Name:="My Menu", _
Position:=msoBarFloating, temporary:=True)

With MyBar
.Top = 125
.Left = 850

Set MyPopup = .Controls.Add(Type:=msoControlPopup)
With MyPopup
.Caption = "Popup 1"
.BeginGroup = True
Set MyButton = .Controls.Add(Type:=msoControlButton)
With MyButton
.Caption = "Button 1a"
.Style = msoButtonCaption
.BeginGroup = True
.OnAction = "Macro1a"
End With
Set MyButton = .Controls.Add(Type:=msoControlButton)
With MyButton
.Caption = "Button 1b"
.Style = msoButtonCaption
.BeginGroup = False
.OnAction = "Macro1b"
End With
End With
Set MyPopup = .Controls.Add(Type:=msoControlPopup)
With MyPopup
.Caption = "Popup 2"
.BeginGroup = False
Set MyButton = .Controls.Add(Type:=msoControlButton)
With MyButton
.Caption = "Button 2a"
.Style = msoButtonCaption
.BeginGroup = True
.OnAction = "Macro2a"
End With
Set MyButton = .Controls.Add(Type:=msoControlButton)
With MyButton
.Caption = "Button 2b"
.Style = msoButtonCaption
.BeginGroup = False
.OnAction = "Macro2b"
End With
End With
.Width = 100
.Visible = True
End With

End Sub







با تشکر از شما اگه امکانش باشه یه نمونه کاملتر یعنی در قالب یه فلیل بزارین خیلی عالی میشه

~M*E*H*D*I~
2012/06/12, 09:20
سلام و تشکر
همونطور که گفتم این موارد بخش اول توضیحات هست انشالله اگه عمر و فرصتی باشه بقیه مطالب هم جمع بندی کنم در نهایت یک فایل خواهم گذاشت.

Javid Mokhtari
2012/06/12, 11:47
با تشکر از شما اگه امکانش باشه یه نمونه کاملتر یعنی در قالب یه فلیل بزارین خیلی عالی میشه


با سلام.
تو پست 96 یه نمونه گذاشتم.
http://forum.exceliran.com/thread-1254-post-8196.html#pid8196

~M*E*H*D*I~
2012/06/17, 07:20
با سلام

حذف کردن command bar :
برای حذف منو های ایجاد شده می بایست از کد نویسی استفاده شود، تابع زیر این مورد را توضیح میدهد:



Function CBDeleteCommandBar(strCBarName As String) As Boolean
On Error Resume Next
Application.CommandBars(strCBarName).Delete
End Function


در کد فوق در صورتی که نام منو وجود نداشته باشد پیغام Error صادر خواهد شد strCBarName نامی است که ما برای منوی شخصی خود انتخاب کرده ایم به هر دلیلی این نام از طریق کد پیدا نشود پیغام subscript out of range صادر می شود لذا کد on error resume next جهت نادیده گرفتن این پیغام استفاده میشود البته لزوما نیاز به تعریف تابع نیست و میتوان از Sub procedure استفاده کرد، البته استفاده از تابع به علت سهولت بکار گیری بهتر است کافیست تابع فوق به همراه نام منو در داخل پرانتز فراخوانی گردد.

mokaram
2013/03/10, 22:33
اساتید محترم میشه یه سری توضیح کامل و مبسوط درباره لیست باکس ارایه بدید
ممنون

~M*E*H*D*I~
2014/05/12, 13:28
با درود

استاد مختاری عزیز ایت تایپیک رو قبل از اینکه خدمت بره ایجاد کرده بود و مطالب بسیار خوب و کاربردی هم در مورد مباحث VBA در این تایپیک قرار داده شد

اگر عمری باشه این تایپ به سبک و سیاق دیگه ای ادامه پیدا خواهد کرد از دوستان و اساتید عزیز خواهش می کنم اموخته های خودشون رو به اشتراک بذارند

1- لطفا هر موضوع در تایپیک جداگانه ای مطرح بشه
2- حتی الامکان از کد استفاده کنید و اگر فایل می ذارید حتما در انجمن آپلودش کنید و یا drive که از بین نره
3-کدها رو حتما در تگ PHP قرار بدید
4- برای هر موضوع نام مناسبی قرار بدید که گویای مطلب باشه
5- مطالب اموزشی فقط در همین تالار مطرح بشن

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