Amoozesh-Vb-In-excelبرنامه نویس در اکسل

36
ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ وﯾﮋوال ﺑﯿﺴﯿﮏ در ﻣﺤﯿﻂ اﮐﺴﻞ ﺗﻬﯿﻪ و ﺗﻨﻈﯿﻢ: وﺣﯿﺪ اﺑﺮاﻫﯿﻤﯽwww.ParsBook.org

Transcript of Amoozesh-Vb-In-excelبرنامه نویس در اکسل

Page 1: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

در محیط اکسلویژوال بیسیک برنامه نویسی

تهیه و تنظیم:

وحید ابراهیمی

www.ParsBook.org

Page 2: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

به نام حق

) در این VB in Excelاین کتاب شروعی است براي یادگیري برنامه نویسی در محیط اکسل (کتاب سعی شده نکات به اختصار آورده شود تا در حد امکان مطلوب واقع گردد.

براي ارسال نظرات با آدرس الکترونیکی زیر مکاتبه نمایید:

[email protected]

ارادتمندتان

وحید ابراهیمی

www.ParsBook.org

Page 3: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

1 | P a g e

شروع برنامه نویسی .1

خد داسد. سػ اصلی VBA ایداد یک تشاه تا سؽای هختلفی تشای ؽشع

تاؽذ. یک سػ عاد هی VBE یا واى VB یشایؾگش ؽتي کذا دس داخل هغتقین

تش سی صفس گغتشد هسیػ command buttonدیگش یض خد داسد آى ایداد یک

آى اعت. کاس سا تا سػ ال ؽشع اکغل ؽشع تشاه یغی تا کلیک تش سی

.کین هی

VBEایداد اخشای یک تشاه دس رش اصلی: 1.1

ؽد: تشاه یغی اکغل هشازل صیشادام هیتشای ایداد یک تشاه دس هسیػ

Visual Basic Editor یا واى رد ب هحیط براه یسی -1

تشای ادام ایکاس چذ سػ خد داسد:

F11 +ALT اعتفاد اص کلیذای هیاثش: ·

Tools-> Macro-> Visual Basic Editor اعتفاد اص هی اکغل: ·

فؾشدى آیکى Visual Basicیا واى اس اتضاس Toolbarاعتفاد اص ·

Visual Basic Editor

ؽین. ت ش زال تا یکی اص سؽای فق اسد هسیػ تشاه یغی هی

Module اتخاب گضی Insertهی : سد ت Moduleایجاد -2

ProcedureSubایجاد یک ری یا -3

عپظ ام تشاه Sub ؽتي فشهاى )کلو کلیذی( -

Enter فؾشدى دگو -

ؽد. دس یک خػ خذیذ اظاف هی End Subتالفاصل تطس اتهاتیک فشهاى -

Subتیي فشهاای : کذای تشاه سا خػ ت خػVBAشتي کذای براه -4

End Sub یغین. هی

ت ػاى هثال:

Sub MyProgram ()

Range("A1:A10").Value = "Visual Basic for Applications"

www.ParsBook.org

Page 4: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

2 | P a g e

Range("A11") =10

Range("B11").Value = 20

Range("C11").Value = "=A11+B11"

End Sub

: تشای اخشای تشاه چذیي سػ خد داسد اجرای براه -5

F5فؾشدى کلیذ ·

Toolbar اص Rub Sub/User Formفؾشدى آیکي ·

F11 +ALT اعتفاد اص Excel تاصگؾت ت هسیػ ·

Command Buttonایداد یک تشاه تا اعتفاد اص رش دیگر: 1.1

:دس ایي سػ هشازل صیش سا ادام هی دین

uttonBommand Cایجاد <<<

کین: هی تش سی هسیػ اکغل هغیش صیش سا غی Command Button تشای قشاس دادى

View هی ToolbarControl Toolbox

سا تطسهغتقین اص آى اتخاب کیذ.( Control Toolboxیض فؼال ؽذ تاؽذ هیتایذ Visual Basic Editor)الثت اگش قثال اس اتضاس <

سا Command Button ظاش هیؾد. Control Toolboxتؼذ اص غی هغیش فق

و دس کیک د اتخاب آشا تش سی صفس گغتشد هسیػ اکغل اکغل قشاس هیذین.

. هسیػ اکغل ظاش هیؾد

www.ParsBook.org

Page 5: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

3 | P a g e

Visual Basic Editor تالفاصل Command Buttonتا کلیک کشدى تش سی <<

ؽکل تایپ . تالفاصل هیتایذ دعتسات خد سا واذ ظاش هی ؽد VBE واى یا

کیذ. )ؽکل تؼذی(

ؽد ک: هالزظ هی VBAتا دقت دس ایي کذای

"Visual Basic for Application"سا تا ػثاست A10 تا A1( عللای Value)هقذاس دعتس ال

کذ. پش هی

قشاس هیذذ. C11سا دس علل A11 B11 دعتس تؼذی یض زاصل خوغ عللای

A11 B11سا یض تا سػ دیگشی تشاتش تا زاصلدوغ D11دعتس آخش یض هقذاس علل

ؽین ک ایي دعتس تا دعتس قثلی هتفات اعت. قشاس هیذذ. تا اذکی دقت هتخ هی

خشخی ساتػ تشاه

www.ParsBook.org

Page 6: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

4 | P a g e

گشدین. )هیتاى اص تشای اخشای ایي تشاه ت هسیػ اکغل تشهی :اجرای براه <<

F11 + ALT .)یض اعتفاد کشد

اص زالت غشازی Control Toolbox اص Exit Design Modeتا فؾشدى آیکي

ؽد تشاه اخشا هی Command Button ؽین. پظ اص آى تا کلیک تش سی خاسج هی

ک خشخی آى دس ؽکل ؾاى داد ؽذ اعت.

:CELLSدستر

عللا آا سا هؾخص هیکذ. ت ػاى ایي دعتس تا اعتفاد اص هختصات

سا هؾخص هی کذ. E2یؼی 5 عتى 2عطش CELLS(2,5) هثال

سا قشاس هی دذ 15اسصػ 25دس عل Cells(2,5).Value = 15دس دعتس: '

د دعتس صیش یک هفم سا دس تش داسذ:

Cells(2,5).Select

RANGE("E2").SELECT

دس دعتس صیش

Range(Cells(2, 5), Cells(1, 5)).Value = 10

سا هی گزاسد 11دس علای هؾخص ؽذ اسصػ

دعتس:

Range(("A1"), Cells(1, 5)).Value = 10

CELLSاعتفاد ؽذ ن اص دعتس Rangeیک دعتس تشکیثی هی تاؽذ. ک ن اص

www.ParsBook.org

Page 7: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

5 | P a g e

RANGE صست هی تاى علا سا اص د دعتس 2هالزظ ؽذ ک ت

اعتفاد ود. ", " اتخاب کشد اص ػالهتای تا ػالهتای ":" یا CELLSدعتس

یادداؽت: ساوای خاهؼی تشای کاس تا عللا ازی تی ؽذ ک تطس خذاگا یض آهذ

اعت.

اتخاب سطر ستى

د دعتس صیش غشیق اتخاب عطش عتى عطش کلی هی تاؽذ:

Range("A:F").Value = 100

Range("1:5").Value = 100

گزاسد ؽد.دس ایي دعتسا تواهی عتای هاتیي 111ک هؾخص ؽذ دس آا هقذاس

تواهی عطای ها تیي یض اسصػ هؾخص ؽذ سا هی گیشذ.

دعتس صیش:

Range("A:A,F:F").Value = 100

تگزاس. 111سا ت تایی اسصػ Fى عت Aدعتسی اعت ک ت تشاه هی گیذ عتى

هی تاى ت خای عتا اص عطشا یض اعتفاد ود.

دعتس صیش:

Range("A1:A5,C1:C5,D1:D5").Value = 4

ودى تثییذ. RUNسا اسد کیذ تید سا تا

هؼشفی عللا تا اعتفاد اص هتغیشا

www.ParsBook.org

Page 8: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

6 | P a g e

دعتس صیش سا اد کیذ:

A = 1

B = 2

C = 3

Range(Cells(A, A), Cells(B, B)).Value = 6

سا هی تاى تشای تشاه تؼشیف کشد دس دعتس A B Cک دس ایي صست هتغیشای

CELLS .اعتفاد ود

www.ParsBook.org

Page 9: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

7 | P a g e

. ایجاد دکو جذیذ در صفح اکسل:1

سا COMMAND BUTTONدس هی هاکش DESIGN MODEاص اتضاس ای

کیناتخاب هی

دکو خذیذ سا اتخاب کشد تش سی آى داتل کلیک هی کین تا صفس یژال تیغیک

تاص ؽد.

دس صفس ایداد ؽذ دعتس صیش سا اسد هی کین:

Range("A1:A10").Value = 10

سا تذذ. 11سا گشفت ت آى هقذاس A10تا A1تا ایي دعتس ت اکغل گفت ؽذ ک

تشای هؾخص کشدى ازی ای دس اکغل اص ػثاست ("@")RANGE اص ػثاست

VALUE= . .تشای تغییش هقذاس عللا اعتفاد هی کین

زال اص ایي صفس خاسج ؽذ تش سی دکو گیا)دس هی یژال تیغیک اس

سا هی صین. EXIT DESIGN MODEخاکغتشی سگ تاالی صفس( کلیذ کشد

یذ ساعت کلیذ کشد هؾخصات سا سا اتخاب کشد دس ایي زالت تش سی دکو خذ

هؾخصات دکو اص قثیل سگ ام ... سا هی تاى تغییش داد.

زال اص ایي صفس خاسج ؽذ تش سی دکو گیا)دس هی یژال تیغیک اس

سا هی صین. EXIT DESIGN MODEخاکغتشی سگ تاالی صفس( کلیذ کشد

خاسج ؽذین زال تش سی دکو کلیک کشد هؾاذ هی DESIGNتی ک اص زالت ق

سا قشاس هی دذ. 11کین ک دسعلای هؾخص ؽذ اسصػ ػذدی

11قشاس داد دس ایي زالت ت خای " "یک ػثاست سا دس داخل 11هی تاى ت خای

آى ػثاست ؽت هی ؽد.

VBدس اتتذای یک خػ تشاه یغی دس هسیػ 'تخ: دس صستی ک اص ػالهت

اعتفاد ؽد آى خػ عثض ؽذ ػولیاتی تش سی آى خػ اخشا خاذ ؽذ. ایي خػ

زالت اخشایی ذاسد Commentاهیذ هی ؽد. )تظیسات( Commentاصطالزا

www.ParsBook.org

Page 10: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

8 | P a g e

ا ت خاایی تشاه تغیاس Commentاص آى تشای اسای تظیسات اعتفاد هیؾد.

کوک هیکذ.

دعتس صیش سا هی یغین:

Range("D1").Value = Range("B1") + Range("C1")

دعتس صیش سا دس یک عػ دیگش هی یغین:

Range("E1").Value = "=A1+A2"

خوغ صد هی ؽد. A1 A2اسصؽای هخد دس 1Eهالزظ هی ؽد ک دس عطش

ت ػالهت = دس داخل کتیؾي تخ ؽد. کت :

اگش ت هسیػ اکغل تاصگشدین دسعللایی ک فشهل ؽت هی ؽد تخ کین دیذ هی

ؽد ک هستای ایي عللا تا ػالهت = ؽشع هی ؽد. یؼی اکغل ت هستای یک

هقذاس. پظ ها علل گا هیکذ اگش تا ػالهت = ؽشع ؽد آشا فشهل تلقی هی کذ

ن اص ویي سػ اعتفاد هیکین قتی دس ظش داسین ک فشهلی سا دس یک علل اسد

کین هی تایغت تا ػالهت = ؽشع کین.

SELECTدستر

اص RANGE تا ادام ایي دعتس علای هسد اؽاس اتخاب هی ؽد هی تاى تؼذ اص

دعتس تاال اعتفاد ود.

سد کیذ:دعتس صیش سا ا

Range("F1:F10").Select

هی کین.هالزظ هی ؽد ک عطشای هسد اؽاس ای اتخاب ؽذ. RUN دکو سا

هی تاؽذ. ANDاعتفاد ود ک دس ایي زالت ت هؼی ,هی تاى ت خای : اص ػالهت

RANGE VALUEهاسدی ک دس تاال اؽاس گشدیذ خالص ای اص ع دعتس

SELECT .تد ک اؽاس ای هختصش ت آى گشدیذ

تد تا آهادگی الصم تشای سد ت هثسث تشاه یغی هطالثی ک اسای ؽذ هقذه ای

ایداد ؽد.

www.ParsBook.org

Page 11: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

9 | P a g e

هتغیرا در یژال بیسیک . 3

پاک کشدى اغالػات تا اعتفاد اص تشاه یغی:

اغالػاتی سا دس یک ؽیت اکغل اسد هی کین

سػ ال تذیي صست اعت ک هی تاى یک هاکش تشای آى ؽت تش سی عل

سا اتخاب ود. clear contact ؽت ؽذ ساعت کلیک کشد گضی

سػ دم تذیي صست اعت ک اص فشهل صیش اعتفاد ود:

Range("B6:D14").ClearContents

(Variablesهتغیرا)

گای اقات دس فشهل یغی دس اکغل یاص ت هتغیش هی ؽد

ػذدی زشفی تاسیخ هتغیشای هطقی

ااع هتغیش:

Stringزشفی

Integer ػذدی

Date

سا هی گیشد. False یا Trueک هقادیش ( booleanهطقی)

ام هتغیر:

–ثایذ تاؽذ اص . کشکتش تایذ تاؽذ دس اتتذای آى ػذد 252اعن هتغیش زذاکثش

فاصل ویتاى دس ام ػاى هتغیش اعتفاد ود.

هؼشفی هتغیش:

تشای هؼشفی هتغیش ت ؽکل صیش ػول هی کین:

Dim ام هتغیش As ع هتغیش

Dim password As String, birthday As Date

" گزاسد هی ؽد. هتغیشای زشفی دس داخل " # #دس داخل 9هتغیش ای تاسیخ

هثال :فشض کین ع ؽیت داسین ک دس ش ع ؽیت اغالػات داسین. هی خاین اغالػات

ؽیت یک سا پاک کشد ؽیت د سا دس ؽیت یک قشاس داد اغالػات ؽیت عم سا اص

اتای ؽیت دم تیغذ:

داد هی کین ایذ ای اصلی سا ت تش گیشی اص تشای ایي هظس اتتذا هاکشیی سا ای

.کذای ایي هاکش هی گیشین تشای ؽتي تشاه اعتفاد هی وایین

www.ParsBook.org

Page 12: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

10 | P a g e

تضیح یا دآری:

سا هی دذ. aدس اکغل تؼذاد سدیفای پشؽذ دس دسعتى =COUNT(A:A)فشهل )

اغالػات صیش ؽت ؽذ هی ؽین هی تیین ک VBAپظ اص ؽتي هاکش اسد هسیػ

اعت:

Sub dll()

dll Macro

Macro recorded 2009/12/20 by hamed.beirami

'Keyboard Shortcut: Ctrl+g

Range("A1:A32").Select

Selection.ClearContents

Sheets("Sheet2").Select

Range("A1:A30").Select

Selection.Copy

Sheets("Sheet1").Select

Range("A1").Select

ActiveSheet.Paste

Sheets("Sheet3").Select

ActiveWindow.SmallScroll Down:=-54

Range("A1:A70").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Sheet1").Select

Range("A31").Select

ActiveSheet.Paste

End Sub

هغال هخد ایي اعت ک دس اتای اغالػات اسد ؽذ دس ؽیت ال)پظ اص دلیت کشدى(

اغالػات ؽیت عم سا اسد وایذ.تشای ایي هظس تایذ تغییشاتی دس هاکش ؽت ؽذ دس

اظاف x1 ,x2 تؼشیف د هتغیش cاکغل ایداد کشد تا اعتفاد اص اغالػات عتى

ودى دس عطشای تشاه ؽت ؽذ ت ایي ذف سعیذ. تخؼ اصلی تشای زل ایي هغال

اعتفاد اص سػ آدسط دی هختصاتی تشای هؼشفی ازی ا اعت . صیشا ازی ک

کیناعتفاد cells(i,j) اتخاب هی ؽذ تغییش هیکذ هی تایغت اص دعتس

www.ParsBook.org

Page 13: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

11 | P a g e

Sub rep()

Range("A:a").Select

Selection.ClearContents

Sheets("Sheet2").Select

Dim x1, x2, x3

x1 = Cells(1, 3)

Range("A1", Cells(x1, 1)).Select

Selection.Copy

Sheets("Sheet1").Select

Range("A1").Select

ActiveSheet.Paste

Sheets("Sheet3").Select

x2 = Cells(1, 3)

Range("A1", Cells(x2, 1)).Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Sheet1").Select

x3 = x1 + 1

Cells(x3, 1).Select

ActiveSheet.Paste

ActiveWindow.SmallScroll Down:=-3

Range("B1").Select

End Sub

www.ParsBook.org

Page 14: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

12 | P a g e

در هحیط یژال بیسیک IFدستر شرطی . 4

(if then else)دعتسای ؽشغی

عاختاس الی عاد:

if ؽشغ then

دعتسات

end if

ػذدی قشاس داسد ک عي ؽخصی سا ؾاى هیذذ. هیخاین A1هثال: دس علل

پیغاهی تیغین B1تا تخ ت عي دس علل

Sub grade()

If Range("a1") >= 17 Then

Range("b1") = "good"

End If

End Sub

Ifعاختاس کاهل دعتس ؽشغی

If 1ؽشغ then

دعتسات

Elseif 2ؽشغ then

دعتسات

Elseif ؽشغ آخش then

دعتسات

Else

دعتسات

Endif

www.ParsBook.org

Page 15: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

13 | P a g e

11تا 11تیي Aػثاست 11هثال:تشاه ای تیغیذ ک تشای وشات تاالی

سا تایپ وایذ.Cػثاست 11 کوتش اص Bػثاست

خاب:

Sub grade()

If Range("a1").Value >= 17 Then

\ Range("b1").Value = "A"

ElseIf Range("a1").Value < 17 And Range("a1").Value >= 14

Then

Range("b1") = "B"

Else

Range("b1").Value = "C"

End If

End Sub

www.ParsBook.org

Page 16: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

14 | P a g e

در اکسل SELECT CASEساختار براه . 5

Select CASE

هی تاؽذ. دس خت اعتفاد اص IFدعتسی تا کاستشدی هاذ SELECT CASEدعتس

غتین عپظ تشای هتغیش هسد اؽاس Xایي دعتس ها یاصهذ تؼشیف هتغیشی هاذ

ؽشغ هسد یاص سا هی گزاسین.

Select Caseشکل کلی دستر

Select Case ام هتغیش

Case زالت ال

دعتسات

Case زالت دم

دعتسات

.

.

.

Case Else

دعتسات

End Select

www.ParsBook.org

Page 17: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

15 | P a g e

یک ؽیت A1دس صیش تشاه ای ؽت ؽذ اعت ک تشای هقادیش هختلف هخد دس عل

سا دس عل هقاتل آى هی گزاسد. … ,A , B, Cاکغل ػثاسات

Sub level( )

x = Range("a1").Value

Select Case x

Case 17 To 20

Range("b1").Value = " A"

Case 14 To 17

Range("b1").Value = " B"

Case 12 To 14

Range("b1").Value = " C"

Case 10 To 12

Range("b1").Value = " D"

Case 0 To 10

Range("b1").Value = " E"

Case Else

Range("b1").Value = "false"

End Select

End Sub

www.ParsBook.org

Page 18: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

16 | P a g e

FOR Each - NEXTساختار حلق ای

زلق ا دعتساتی غتذ ک هی تاى خت ادام دعتسات تکشاسی اص آا اعتفاد ود.

( یک membersتشای کاس تش سی ػعای) FOR Eachزلق

( اعتفاد هی ؽد. هدوػ ؽاهل تؼذادی ؽیء یکغاى اعت. ت collectionهدوػ)

اعت صیشا تؼذادی ػع ت ام collection یک Range("A1:A10")ػاى هثال

ای یک فایل اکغل هدوػ ای worksheetعلل اعت ک وگی اص یک خظ غتذ.

تؾکیل هی دذ. چاستای یک فایل اکغل هدوػ ای ت ام Worksheetsت ام

Charts .تؾکیل هی دذ

دس تشاه یغی هی تاؽذ: FOR Eachق الگی صیش الگی اعتفاد اص یک زل

For Each ػع In هدوػ

دعتسات

NEXT

عتى 11تا 1دس تشاه ای ک دس صیش ؽت ؽذ ػولیات هسد ظش تش سی سدیفای

A هخد دس 11ادام هی ؽد.تشاه ت گ ای ؽت ؽذ اعت ک اػذاد کوتش اص

کذ Bold عتى ال، سا

ت عادگی تشاه هسد اؽاس ت ؽشذ FOR-NEXTزال تا اعتفاد تشکیة د دعتس

ریل ؽت هی ؽد:

Sub range_level ()

Sub a()

For Each c In Range("a11:h20")

If x < 10 Then c.Font.Bold = True

Next

End Sub

www.ParsBook.org

Page 19: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

17 | P a g e

در براه: ROWاستفاد از دستر

تشاه تاال تشاه هاعثی تد اها دس فاص تؼذی تشاه یغی ها خااى ایي کت غتین

هتاعة ک ت اصای هقادیش هختلف دس یک عتى دس اکغل ػثاساتی تشاه ای ؽت ؽد

تا آى اػذاد سا دس هقاتل آا تیغذ.

اعت ک اص دعت دعتساتی هاذ ROWتا کت هخد دس ایي تشاه خد دعتس

VALUE هی تاؽذ ک دس ایداROW ت هفم سدیف هسد ظش هی تاؽذ. تشای یل

ت ذف تاال هی تایغت د هتغیش تؼشیف ود.

ظش ک ذف تشاه آى اعت هتغیش دم سدیف ػذد هد هتغیش ال تشای ػذد هسد

ظش ک تشای ایک دس هقاتل آى ػذد تایذ ػثاست هسد ظش تشاه تایپ گشدد، هسد یاص

اعت.هغ الصف تشاه هسد ظش ت ؽکل صیش ؽت هی ؽد:

Sub range_level()

Dim c As Range

For Each c In Range("a1:a10")

x = c.Value

i = c.Row

Select Case x

Case 17 To 20

Cells(i, 2) = "A"

Case 14 To 17

Cells(i, 2) = "B"

Case 12 To 14

Cells(i, 2) = "C"

Case 10 To 12

Cells(i, 2) = "D"

Case 0 To 10

Cells(i, 2) = "E"

Case Else

Cells(i, 2) = "ERROR"

End Select

Next

End Sub

www.ParsBook.org

Page 20: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

18 | P a g e

VBدر اکسل با استفاد از براه MSSAGE BOXساخت . 6

Massage Box :در اکسل

( اص ع تخؼ ت ؽشذ ریل عاخت ؽذ اعت:Massage Boxیک پدش پیغام)

گضی ای پیغام ؽشذ پیغام , ػاى پیغام

Massage box :ایی ک دس غل یک تشاه ت آا یاص داسین ؽاهل د گش هی تاؽذ

پیغاهایی ک صشفا اغالػاتی تد ت کاستش هفهی سا تذى آک ػولیاتی تش -الف

غاهای خػ آهذ گیی.سی داد ا ادام دذ اتقال هی دذ.هاذ پی

ت صست صیش اعت: VBAعاختاس عاد ایگ پیغاها ت صست صیش دس هسیػ

Sub message()

MsgBox "hello my frends"

End Sub

پیغاهای ػولیاتی ک تش سی داد ای هخد دس تاک اغالػاتی یا تشاه -ب

هساعثاتی کاستش، تغیشاتی ادام هی دذ. دس ایدا عاختاس اصلی یک پیغام، ک ؽاهل ش

ع قغوت یک پیغام اعت)ػاى، ؽشذ گضی( هؾاذ هی ؽد

ذ اداه دیذ ع گضی اتخاتی دس صیش هثالی آسد ؽذ اعت تا ؽشزی ک آیا هایل غتی

تل، خیش کغل سا ؽاهل هی گشدد. عپظ ت اصای اتخاب گضی تل تؼذادی اص داد ا سا

دلیت ود ت اصای گضی خیش، واى اغالػات سا اتخاب هی وایذ.

عاختاس چیي تشاه ای ت ؽکل صیش ؽت هی ؽد:

Sub message()

x = MsgBox("do you want to continue?", vbYesNoCancel, "message

box")

If x = vbYes Then

Rows("1000:2000").Select

Selection.Delete Shift:=xlUp

ElseIf x = vbNo Then

Rows("1000:2000").Select

End If

End Sub

www.ParsBook.org

Page 21: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

19 | P a g e

واطس ک دس خػ دم تشاه هالزظ هی گشددعاختاس کلی یک کادس پیغام ؽاهل ع

اص ن خذا هی ؽد. ت ,تخؼ ػاى، ؽشذ گضی ای پیغام هی تاؽذ ک ت ػالهت

دس قغوت هیای فشهل تخ کیذ. VBA ػثاست

اکغل آسد ؽذ اعت . HELPدس Massage Boxاغالػات کاهل دس هسد کت:

www.ParsBook.org

Page 22: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

20 | P a g e

FOR -NEXTحلق ای . 7

حلقه ها

ؽشع forخت ادام کاسای تکشاسی اص زلق ا اعتفاد هی ؽد. دس اتتذا تا زلق ای

هی کین .

عاختاس کلی ایي زلق ت ؽکل صیش ا عت:

For counter = start To end [Step step]

…………………

دعتسات

…………………

Next [counter]

تشاه ای هی یغین ک دس علای اکغل ت صست یکی دسهیاى پش وایذ: :هثالتشای

خت یل ت ایي ذف اص فشهل صیش اعتفاد هی ؽد:

For i=1 to 10 step 2

Cells(1,i)=i

Next i

stepدس زلق ا هی تاى اص اػذاد صج تا stepت ویي تشتیة تا اعتفاد اص تکیک

یک یا ع تش خغت. step اػذادفشد تا 2

www.ParsBook.org

Page 23: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

21 | P a g e

ت حلق ای ت در

هی تاى اهس تکشاسی پیچیذ تش تیؾتشی سا ادام داد. for تا اعتفاد اص چذیي زلق

ایداد دس هسیػ اکغل 11*11دس هثال صیش تالػ ها تش ایي اعت ک یک خذل ظشب

وایین.

زلق هی تاى ایي تشاه سا ت 2تشای سعیذى ت ایي هظس ت سازتی تا اعتفاد اص

ؽکل صیش ؽت:

Sub ZARB()

For i = 1 To 10

For J = 1 To 10

Cells(i, J) = i * J

Next J

Next i

End Sub

استفاد از ساختارای شرطی در حلق ا

سا تا تغییش فت هؾخص وایذ: 5ویي خذل هعاسب زال هی خاین ک دس

تشای ایي هظس تایذ تؼذ اص عطش چاسم تشاه خػ صیش سا ؽت:

If i = 5 Or j = 5 Or i=10 or j = 10 Then

Cells(i, j).Font.Size = 25

End If

هی تاى دس تشاه هخد کاس پیغاهی هثی تش ایک آیا هایل ت رخیش ودى تشاه

تشاه ایداد ود. ifغتیذ یا خیش، پظ اص

www.ParsBook.org

Page 24: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

22 | P a g e

DO-LOOPحلق ای شرطی -VBکاتر سازی تابع جوع در . 8

ودى ، غشیق خوغ (CONTER)دس ایي خلغ هی خاین پشع ایداد یک ؽواسذ

دس ایت هؼشفی زلق ؽشغی هقادیش ػذدی هخد دس یک عطش یا عتى ...

LOOP-WHILE .تپشداصین

(COUNTERشوارذ)

دس خلغات گزؽت دیذین ک تشای خوغ ودى تؼذاد اغالػات هخد دس یک عطش یا یک

دس یک عل اص علای اکغل اعتفاد هی ؽد. دس ایي ( )COUNT=عتى اص فشهل

، ؽواسػ تؼذاد کشکتشا صست COUNTER خاین تا اعتفاد اص هتغیش هشزل هی

پزیشد.

تذیي هظس اتتذا تایذ هقذاس کاتش سا تشاتش صفش گزاؽت دس هشزل تؼذی پظ اص گزاسدى

ن:قشاس هی دی 1ؽشغ تشاه، کاتش سا هغای کاتش +

دس هثال صیش تؼذاد وشات هخد داؼ آهصاى یک کالط خد داسد. هی خاین تشاه

اذ سا دس یک ای تیغین ک تؼذاد افشادی ک قثل ؽذ اذ تؼذاد افشادی ک قثل ؾذ

عطش اکغل ؽت خد وشات سا یض تشزغة قثلی یا سد ؽذى افشاد تغییش سگ

دذ:

اعتفاد واین.لزا IF یک ؽشغ FOR ایي ذف هی تایغت اص یک زلق تشای یل ت

تشاه ت ؽکل صیش ؽت هی ؽد:

Sub ccc()

counter = 0

For i = 1 To 20

If Cells(i, 1).Value >= 10 Then

counter = counter + 1

Cells(i, 1).Font.ColorIndex = 5

Else

Cells(i, 1).Font.ColorIndex = 3

End If

Next i

Cells(21, 1).Value = counter

Cells(22, 1).Value = 20 - counter

End Sub

www.ParsBook.org

Page 25: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

23 | P a g e

ػذد صفش سا COUNTERواطس ک هالزظ ؽذ، تشاه دس اتتذا تشای هقذاس هتغیش

دس ظش داسد. واطس ک ش عػ خذل تا ؽشغ خػ چاسم تشسعی هی ؽد چاچ

( یک ؽواس ت کاتش اظاف هی گشدد 11اخذ ایي ؽشغ تد)اػذاد تضسگتش اص

واطس تا اتوام تشاه ایي پشع خایگضیی اداه پیذا هی کذ.

یغت.ت خای ایي ػثاست VBA فشهل خاصی دس تشاه COUNTERکت: هتغیش

پزیشفت تاؽذ یض اعتفاد ود.اعتفاد اص VBAهی تاى اص ش هتغیش دیگشی ک تعػ

ایي ػثاست تا تشای اتقال دسعت تش هفم قاتل فن تش ؽذى تشاه تشای دیگش

اعتفاد کذگاى هی تاؽذ.

(accumulator)اثاس

دس ایي هشزل هی خاین پشع خوغ ودى اػذاد یک عطش یا یک عتى یا اػذادی

ک هسد تخ تشاه هی تاؽذ سا هذ ظش قشاس دین. ت ػاى هثال هی خاین تشاه

تایپ وایذ. B1سا خوغ ود تید سا دس عل 111تا 1ای تیغین ک اػذاد فشد

سا دس ظش گشفت زاصلدوغ سا هشتثا Sumغت هتغیشی هاذ تشای ایي هظس هی تای

تشای یل ت ایي هظس هی تایغت تشاه ای ت ؽشذ صیش ؽت: دس آى اثاس کین

Sub aaa()

Sum = 0

For i = 1 To 100 Step 2

Cells(i, 1) = i

Sum = Sum + i

Next

Cells(1, 2) = Sum

End Sub

تخ کیذ. دس ؽتي یک ؽواسذ ها ت ؽواس قثلی یک sum=sum+Iت ػثاست کت:

اتخاتی سا هذ Iاظاف هی کشدین لی دس خوغ ودى تؼذاد اػذاد دس ایي تشاه تایذ 1

ای ک تعػ ؽشغ هخد تشاه ایداد گشدیذ اعت. Iظش قشاس دین.

یض یک هتغیش اعت. SUMیض ػاى ؽذ، COUNTERواطس ک تشای هتغیش

هتغیشی خت اتخاب، خایگضیی، خوغ ودى دس ایت خایگضیی هدذد.

www.ParsBook.org

Page 26: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

24 | P a g e

DO-LOOPاستفاد از حلق شرطی

تشزغة –زلق ای ؽشغی زلق ایی اذ ک تا صهای ک ؽشغ تشقشاس تاؽذ یا ثاؽذ

هسد اعتفاد قشاس هی گیشد. -یاص تشاه

ت ؽکل صیش اعت: DO-LOOPعاختاس کلی یک زلق

رش ال: در ایي رش شرط در ابتذا بررسی هی شد

DO

دعتسات

LOOP WHILE یا UNTIL ؽشغ هسد ظش

رش دم: در ایي رش شرط اتا بررسی هی شد

DO WHILE یا UNTIL ؽشغ هسد ظش

دعتسات

LOOP

ت ایي هفم ک:

صهای ک تتی ادام تذی....ادام تذ ایي کاس سا تا

یا

ادام تذ ایي کاس سا تا صهای ک تی ادام تذی....

دس ایدا هی خاین تا رکش تشاه عاد ای کاستشد ایي زلق سا ت اختصاس تظیر دین.

تیغین ک اػذاد هخد دس یک VBAت ػاى و هی خاین تشاه ای دس هسیػ

سا تا خایی ک ػذد خد داسد خوغ وایذ.چیي تشاه ای تایذ ت ؽکل صیش عتى اکغل

ؽت ؽد:

Sub do_loop()

i = 0

Do

i = i + 1

Loop While Cells(i, 1)<>""

Cells(1, 2) = i – 1

End Sub

www.ParsBook.org

Page 27: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

25 | P a g e

تشعیذ تا سا دس عتى هزکس تا خایی ک ت عل خالی I هالزظ هی ؽد ک تشاه اػذاد

ن خوغ هی کذ.تظیر تیؾتش تشاه ای تیؾتش دس هسد ایي زلق ؽشغی ت خلغ تؼذ

هکل هی ؽد.

اعتفاد هی ؽد هاداهیک ؽشغ تشقشاس تاؽذ دعتسات ادام WHILEقتی اص :کت

هیؾذ

ت اعتفاد هی ؽد زلق ت هسط قع ؽشغ زلق خاتو هی یاتذ) Untilقتی اص

ػثاستی زلق تا صهایک ؽشغ تشقشاس یغت اداه پیذا هی کذ(

www.ParsBook.org

Page 28: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

26 | P a g e

یسی در اکسل FUNCTIONآغاز DO-LOOPاداه هبحث . 9

do-loopاداه

تا اذاص ای آؽا ؽذین. دس ایي خلغ هی DO-LOOPدس خلغ گزؽت تا زلق ؽشغی

خاین تا اسائ هثالایی تیؾتش تا کاستشد ایي زلق دس تشاه یغی یژال تیغیک

تپشداصین.

DO-LOOPدر حلق شرطی Until IsEmptyکاربرد عبارت

دس خلغ گزؽت هثالی صدین ک تالػ تش ایي تد ک تشاه ای ؽت ؽد تؼذاد علای پش

دا دیذین ک اص خػ تشاه صیش دس تشاه خت دس یک عتى اکغل سا ؾاى دذ. دس آ

سعیذى ت ایي ذف اعتفاد ودین:

Loop While Cells(i, 1)<>""

اعتفاد هی کین هی DO-LOOPت خای ایي ػثاست دس صستی ک اص زلق ؽشغی

تاین اص ػثاست صیش اعتفاد وایین:

Loop Until IsEmpty(Cells(i, 1))

ت ؽکل صیش اصالذ هی گشدد: لزا تشاه

Sub do_loop()

i = 0

Do

i = i + 1

Loop Until IsEmpty(Cells(i, 1))

Cells(1, 2) = i - 1

End Sub

سا تذى آک دس 111تا 1هی خاین تشاه ای تیغین هدوع هقادیش هثال دم:

ؾاى دذ.تشاه ت MASSAGE BOXاد سا ؾاى دذ، دس یک علای خذل ایي اػذ

ؽکل صیش ؽت هی ؽد:

Sub do_loop2()

i = 1

Sum = 0

Do

Sum = Sum + i

www.ParsBook.org

Page 29: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

27 | P a g e

i = i + 1

Loop While i <= 100

MsgBox Sum

End Sub

تؼذادی ػذد دس علای یک عتى اکغل خد داسد ک تشخی علای واى هثال سم:

B1عتى خالی فاقذ ػذد اعت. تشاه ای تیغیذ ک آخشیي ػذد آى عتى سا دس عطش

تیغذ.

تشاه هسد اؽاس ت ؽکل صیش ؽت خاذ ؽذ:

Sub do_loop3()

i = 1000

Do

i = i - 1

Loop While IsEmpty(Cells(i, 1))

MsgBox i

End Sub

در اکسل function ساخت

عاخت پشداخت VBAتا ایي هشزل هالزظ ودین چگ یک تشاه عاد دس هسیػ

هی ؽد. اکى صهاى آى فشا سعیذ اعت تا فشاگیشین چگ هی تاى ایي تشاه ای

تشاه ای عاد عاد سا ت ػاى تاتؼی اص تاتغ هخد دس اکغل ت کاس تشد. هی تاى

خذیذ یا پیچیذ سا ک ت ػاى تاتغ دس اکغل تؼشیف ؾذ اذ سا ؽت ت ػاى تاتغ

هؼشفی اعتفاد ود. هثال هی تاى تشاه ای ؽت ک هثالغ ػذدی)هثال لایر( هخد

دس تشاه سا ت صست زشف تیغذ عپظ ایي تشاه سا دس اکغل ت ػاى تاتؼی

تؼشیف ود.هی تاى تشاه ای ؽت ک تاسیخای هیالدی سا دس تشاه ای هسد

تالؼکظ تثذیل وایذ ... تواهی ایي تشاه ا یا ش تشاه دیگش اعتفادیواى ت ؽوغی

سا هی تاى ت ػاى تاتغ هسد اعتفادیواى دس اکغل تؼشیف ود.اها چگ؟

www.ParsBook.org

Page 30: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

28 | P a g e

ؽذ VBAخت یل ت ایي هظس اسد هسیػ

تشاه دس آخش SUBتشای ایک تشاه ای دس ایي هسیػ تیغین ت خای ػثاسات

END SUB اص ػثاستFUNCTION ت صست فشهت صیش اعتفاد هی ؽد.دقت

قشاس داسد، هتغیشایی ک هسد FUNCTION ؽد ک دس پشاتضی ک هقاتل ػثاست

" اص ن ,یاص تشاه اعت هی تایغت دس تشاه اعتفاد گشدد، اسد هی ؽد تا یک "

خذا هی ؽد.

FUNCTION( , , , ) AS VARIANT

هساعثات تشاه

END FUNCTION

هی خاین تاتؼی تیغین تا هؼشفی ودى ع هالف دس آهذ، ضی دسصذ هالیات،

خالص دس آهذ سا هساعث وایذ:

Function netprofit(income, cost, tax) As Variant

t = 1 - tax

netprofit = (income - cost) * t

End Function

سا اتخاب هی functionزالت insertهی ؽین.زال اص اص گضی excelاسد هسیػ

userگضی select a category orکین.دس پدش تاص ؽذ اص کوث تاکظ هقاتل ػثاست

difind یدا خد داسد. زال سا اتخاب هی کین.هالزظ هی کین ک تشاه خذیذ ها دس ا

تشای اخشای ایي تشاه د زالت پیؼ سی هاعت.

ک دس ایي زالت پدش ای تاص برای اجرای براه user difandاستفاد از گسی -الف

هی ؽد اص ها هی خاذ ک ش یک اص ع هتغیش تشاه سا هؾخص کین تا دس ایت

زاصل سا ت ها گضاسػ وایذ.

ایک اسد یکی اص علای اکغل ؽین دس شتي فرهل در یکی از سلای اکسل: -دم

ایدا هاذ ش تشاه دیگشی هی یغین:

=NETPROFIT(A1;B1;C1)

تذیی اعت علای داخل پشاتض ت تشتیة دس ایدا دس تش گیشذ دس آهذ، ضی دسصذ

هالیات هی تاؽذ.

www.ParsBook.org

Page 31: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

29 | P a g e

سازی در اکسل Function. اداه 11

functionاداه

تؼشیف FUNCTIONدس خلغ گزؽت دیذین ک چگ هی تاى دس هسیػ اکغل یک

ود.

یغی دس اکغل هی FUNCTIONدس ایي خلغ ت تشسعی چذ هثال دیگش تشای

پشداصین دس ایت ت ایي هغال ک چگ هی تاى تاتؼی سا تشای کلی اکغلایواى

تؼشیف ود. تاتؼی تا فشهل ثاتت ک دس تواهی اکغلای کاهپیتشهاى ػول وایذ.

هثال ال:

گیذ خیلی عال اعت ت 11هی خاین تاتؼی تیغین ک عي افشاد سا تگیشد چاچ صیش

عال سا ت ػاى خیلی پیش هؼشفی 25سا هاعة تاالی 25تا 11خاى، تیي

وایذ.عاختاس چیي تاتؼی ت ؽکل صیش هی تاؽذ:

Function check_old(old)

Select Case old

Case Is <= 18

check_old = "too young"

Case 18 To 65

check_old = "ok"

Case Is > 65

check_old = "too old"

End Select

End Function

www.ParsBook.org

Page 32: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

30 | P a g e

هثال دم:

ش فشد سا BMIهی خاین تشاه ای تیغین ک دس اتتذا تش زغة صى قذ افشاد

هساعث ؾاى دذ.عپظ تشاه دیگشی ک تا تخ ت ایي ػذد ؾاى دذ ک ایي اذاص

BMI ؾاى دذ کذاهیک اص ظؼیتای کن صی، شهال یا اظاف صى هی تاؽذ؟

ؽت هی ؽد:چیي تشاه ای ت ؽکل صیش

Function BMI(weight, height)

BMI = weight / (height ^ 2)

End Function

Function check_weight(BMI)

Select Case BMI

Case Is <= 15

check_weight = "under weight"

Case 15 To 25

check_weight = "normal"

Case Is > 25

check_weight = "over weight"

End Select

End Function

ای ک WORKSHEETتاتؼی ک ها دس آى خلغ هؼشفی ودین تا دس واى کت:

تشاه دس آى ؽت ؽذ اعت کاستشد داسد. چاچ ها تشاه ای داسین هی خاین

FUNCTION ای تغاصین ایي تاتغ سا تشاه اکغل ت ػاى یک تاتغ ویؾگی ک

قاتل اعتفاد دس توام اکغلای دیگش ک تش سی کاهپیتش هخد هی تاؽذ، تپزیشد قاتل

اعتفاد تاؽذ، هی تایغت اص سػ صیش اعتفاد ود:

هی FILEؽین.اص گضی اتتذا تشاه ؽت ؽذ سا هی تذین اسد هسیػ اکغل هی

SAVE AS سا اتخاب هی کین.دس پدش هخد اص کوث تاکظ صیش صفس آخشیي

سا اتخاب کشد دس ش خایی MICOSOFT EXCELL AD-INNگضی سا یؼی

ؽذ، رخیش هی وایین. SAVEک هایلین چیي تشاه ایی

سا اتخاب هی ADD-INSگضی TOOLSزال اسد اکغل خذیذی هی ؽین.اص هی

کین دس پدش هخد کاس تشاه ای ک ؽت ؽذ اعت سا تیک هی صین.اص ن اکى

تشاه خذیذ ؽت ؽذ ها ت ػاى تاتغ ثاتتی دس اکغل هاى قاتل اعتفاد اعت.

www.ParsBook.org

Page 33: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

31 | P a g e

(STRINGعولیات بر ری رشت ا) .11

(STRING)کار با رشت ا

ا ػثاسات، داد ا اػذاد ... هخد دس یک تشاه غتذ. دس ایدا هی خاین سؽت

کاس تا ایي دعت اص اغالػات سا تشسعی وایین. کاس تاسؽت ا اص ایي تاب داسای اویت

اعت ک ها هی تایذ تا تکاس گیشی هفاین صیش، تش داد ای هخد دس علای اکغل یا

ادام دین. داد ا سا تفکیک کین.غثق تذی کین یا قغوت خاصی اص ... هذیشیت تتشی

یک داد سا ک تشای ها اویت تیؾتشی داسد، هسد اعتفاد قشاس دین.

عولگر & -الف

چاچ تخاین د سؽت هخد دس یک تشاه سا پؾت عش ن تیاسین اص ایي ػولگش

اعتفاد هی وایین.

د ػثاست MASSAGE BOX ای خاین ؽت ک دس یک تشاه هثال ال:

VISUAL basic :سا ت ن استثاغ داد وایؼ دذ

Sub aaa()

s1 = "visual basic"

s2 = " for aplcation"

s = s1 & s2

MsgBox s

End sub

chr(13)یا vbnewlineکذ -ب

ادام هی دذ. ت ایي هؼی ک wordسا دس هسیطی هثل interایي ػولگش، ػولیات

سؽت دم دس عش تؼذی سؽت ال ؾاى داد خاذ ؽذ.

ت VBA this class name isهی خاین دس یک هغیح تاکظ ػثاستهثال دم:

دس صیش ػثاست قثلی قشاس گیشد، وایؼ داد ؽد. VBAصستی ک ػثاست

سؽت هسد ظش تایغتی ت ؽکل صیش ؽت ؽد:

Sub bbb()

s = "this class name is"

s = s & vbNewLine

s = s & "VBA"

MsgBox s

End Sub

www.ParsBook.org

Page 34: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

32 | P a g e

هی تاى خت اعتفاد دس chr(13)یا vbnewline: اص ش یک اص ػثاسات کت

تشاه، تش تشد.

:LENتابع –ج

ایي تاتغ تؼذاد کشکتشای هخد دس سؽت ؽوا سا هی ؽواسد. تخ ت ایي کت زائض

اویت اعت ک سؽت ؽوا هی تاذ داد ای هخد دس یک عل اکغل تاؽذ. عاختاس کلی

ت ؽکل صیش هی تاؽذ: LENتاتغ

Len( )

ک دس داخل پشاتض سؽت هسد ظش ها قشاس خاذ گشفت.

تعػ تشاه دس Ali Fatehiهی خاین تؼذاد کشکتش ای هخد دس ام هثال سم:

یک هغیح تاکظ وایؼ داد ؽد.تشاه هسد ظش ها تا اعتفاد اص تاتغ تاال هی تایغت

ؽکلی هاذ صیش داؽت تاؽذ:

Sub ccc()

s = Len("ALI FATEHI")

MsgBox s

End Sub

left-rightتابع -د

ایي تاتغ ت تشاه هی گیذ اص عوت چپ یا ساعت سؽت ها تؼذادی سا خذا کي ت ها

ؾاى تذ:

ت ؽکل صیش هی تاؽذ: عاختاس کلی ایي تاتغ

Left(string,i)

کشکتشی ک اص ایي سؽت هی تعذادک دس داخل پشتض اتتذا سؽت هسد ظش ها عپظ

اص ن ","تاعت خذا وایؼ داد ؽد، خایگضیي خاذ ؽذ. ایي د داد تا یک ػالهت

خذا هی ؽذ.

هی خاین تا اعتفاد اص تاتغ فق، تشاه ای تیغین ک چاس سقن عال هثال چارم:

سا خذا ود وایؼ دذ. عاختاس چیي 1359/12/22دس تاسیخ تغیاس هن 1359

تشاه ای ت ؽکل صیش ؽت خاذ ؽذ:

Sub ddd()

s = "1359/12/22"

t = Left(s, 4)

MsgBox t

End Sub

www.ParsBook.org

Page 35: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

33 | P a g e

TRIM:تابع -

تؼذ سؽت تاؽذ سا دس ظش گشفت تاقی هاذ سا دس ایي تاتغ ش چ کشکتش خالی قثل یا

ظش هی گیشد. تا ایي تظیر اظر اعت ک ها دس ایي تاتغ تا د عاختاس ساعت چپ

کاس خاین داؽت:

عاختاس کلی ت ؽکل صیش هی تاؽذ:

L/R TRIM()

وایؼ داد ؽد. VBAتا ع کلو "VBA"هی خاین دس سؽت ای هاذهثال پجن:

عاختاس چیي تشاه ای ت ؽکل صیش خاذ تد:

Sub eee()

s = " VBA"

t = Trim(s)

MsgBox t

End Sub

: MIDتابع -

ایي تاتغ ت ها هی گیذ:

تذ. عاختاس ایي سؽت سا دس ظش تگیش، اص فالى خا ؽشع کي، ایي تؼذاد سا ت ها ؾاى

تاتغ یض دقیقا ت ویي ؽکل هی تاؽذ:

MID(STRING,START,LENGTH)

تا کلو visual basic :هی خاین تشاه ای تیغین ک دس ػثاست هثال ششن

basic :دس یک هغیح تاکظ وایؼ داد ؽد.تشاه ت ؽکل صیش ؽت خاذ ؽذ

Sub fff()

s = "visual basic"

t = Mid(s, 8, 5)

MsgBox t

End Sub

www.ParsBook.org

Page 36: Amoozesh-Vb-In-excelبرنامه نویس در اکسل

VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل

34 | P a g e

INSTRتابع -ز

دس سؽت هسد ظش اصش خایی ک تخاین ؽشع هی کذ، سؽت ال سا INSTRتاتغ

دس ظش هی گیشد، دثال سؽت یا هتغیش خاصی تگشدد ؽواس آى سا ت ها تگیذ:

صیش هی تاؽذ:عاختاس کلی ت ؽکل

INSTR(START, STRING 1 , STRING 2)

ک ػثاسات داخل پشتض ت تشتیة ؽشع خغتد، سؽت هسد ظش دس ایت ػثاست

هسد ظش دس سؽت، هی تاؽذ.

ت ها aaapaa هی خاین تشاه ای تیغین ک دس آى دس صؽت ای هاذهثال فتن:

ي سؽت هی تاؽذ:کذاهیي کشکتش ای Pتگیذ ک زشف

Sub ggg()

s = "aaapaa"

i = InStr(1, s, "p")

MsgBox i

End Sub

هثال آخر:

سا ک تا هویض"/" اص ن خذا ؽذ اذ سا 1355/12/22یک تاسیخ هؾخص هاذ تاسیخ هن

دس ظش هی گیشین. تشاه ای تیغیذ ک عال ها سص سا خذا ود دس ع کادس

پیغام وایؼ دذ.

Sub hhh()

s = "1359/12/22"

i = InStr(1, s,"/")

j = InStr(i + 1, s,"/")

y = Mid(s, 1, i – 1)

m = Mid(s, i + 1, (j - 1) – i)

d = Mid(s, j + 1)

MsgBox y

MsgBox m

MsgBox d

End Sub

www.ParsBook.org