Upload
fredmelekzada
View
17
Download
0
Embed Size (px)
Citation preview
در محیط اکسلویژوال بیسیک برنامه نویسی
تهیه و تنظیم:
وحید ابراهیمی
www.ParsBook.org
به نام حق
) در این VB in Excelاین کتاب شروعی است براي یادگیري برنامه نویسی در محیط اکسل (کتاب سعی شده نکات به اختصار آورده شود تا در حد امکان مطلوب واقع گردد.
براي ارسال نظرات با آدرس الکترونیکی زیر مکاتبه نمایید:
ارادتمندتان
وحید ابراهیمی
www.ParsBook.org
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل
19 | P a g e
واطس ک دس خػ دم تشاه هالزظ هی گشددعاختاس کلی یک کادس پیغام ؽاهل ع
اص ن خذا هی ؽد. ت ,تخؼ ػاى، ؽشذ گضی ای پیغام هی تاؽذ ک ت ػالهت
دس قغوت هیای فشهل تخ کیذ. VBA ػثاست
اکغل آسد ؽذ اعت . HELPدس Massage Boxاغالػات کاهل دس هسد کت:
www.ParsBook.org
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
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
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
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
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
VB in Excel برنامه نویسی ویژوال بیسیک در محیط اکسل
25 | P a g e
تشعیذ تا سا دس عتى هزکس تا خایی ک ت عل خالی I هالزظ هی ؽد ک تشاه اػذاد
ن خوغ هی کذ.تظیر تیؾتش تشاه ای تیؾتش دس هسد ایي زلق ؽشغی ت خلغ تؼذ
هکل هی ؽد.
اعتفاد هی ؽد هاداهیک ؽشغ تشقشاس تاؽذ دعتسات ادام WHILEقتی اص :کت
هیؾذ
ت اعتفاد هی ؽد زلق ت هسط قع ؽشغ زلق خاتو هی یاتذ) Untilقتی اص
ػثاستی زلق تا صهایک ؽشغ تشقشاس یغت اداه پیذا هی کذ(
www.ParsBook.org
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
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
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
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
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
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
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
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
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