You are on page 1of 36

‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ وﯾﮋوال ﺑﯿﺴﯿﮏ در ﻣﺤﯿﻂ اﮐﺴﻞ‬

‫ﺗﻬﯿﻪ و ﺗﻨﻈﯿﻢ‪:‬‬

‫وﺣﯿﺪ اﺑﺮاﻫﯿﻤﯽ‬

‫‪www.ParsBook.org‬‬
‫ﺑﻪ ﻧﺎم ﺣﻖ‬

‫اﯾﻦ ﮐﺘﺎب ﺷﺮوﻋﯽ اﺳﺖ ﺑﺮاي ﯾﺎدﮔﯿﺮي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ در ﻣﺤﯿﻂ اﮐﺴﻞ ) ‪ ( VB in Excel‬در اﯾﻦ‬
‫ﮐﺘﺎب ﺳﻌﯽ ﺷﺪه ﻧﮑﺎت ﺑﻪ اﺧﺘﺼﺎر آورده ﺷﻮد ﺗﺎ در ﺣﺪ اﻣﮑﺎن ﻣﻄﻠﻮب واﻗﻊ ﮔﺮدد‪.‬‬

‫ﺑﺮاي ارﺳﺎل ﻧﻈﺮات ﺑﺎ آدرس اﻟﮑﺘﺮوﻧﯿﮑﯽ زﯾﺮ ﻣﮑﺎﺗﺒﻪ ﻧﻤﺎﯾﯿﺪ‪:‬‬

‫‪Ebrahimi.vah@gmail.com‬‬

‫ارادﺗﻤﻨﺪﺗﺎن‬

‫وﺣﯿﺪ اﺑﺮاﻫﯿﻤﯽ‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

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


‫سّؽِای هختلفی تشای ؽشّع ّ ایداد یک تشًاهَ تا ‪ّ VBA‬خْد داسد‪ .‬سّػ اصلی ّ‬
‫هغتقین ًْؽتي کذُا دس داخل ّیشایؾگش ‪ VB‬یا ُواى ‪ VBE‬هیتاؽذ‪ .‬یک سّػ عادٍ‬
‫دیگش ًیض ّخْد داسد ّ آى ایداد یک ‪ command button‬تش سّی صفسَ گغتشدٍ هسیػ‬
‫اکغل ّ ؽشّع تشًاهَ ًْیغی تا کلیک تش سّی آى اعت‪ .‬کاس سا تا سّػ اّل ؽشّع‬
‫هیکٌین‪.‬‬

‫رّش اصلی‪ :‬ایداد ّ اخشای یک تشًاهَ دس ‪VBE‬‬ ‫‪1.1‬‬


‫تشای ایداد یک تشًاهَ دس هسیػ تشًاهَ ًْیغی اکغل هشازل صیشاًدام هیؽْد‪:‬‬

‫‪ّ -1‬رّد بَ هحیط برًاهَ ًْیسی یا ُواى ‪Visual Basic Editor‬‬

‫تشای اًدام ایٌکاس چٌذ سّػ ّخْد داسد‪:‬‬

‫اعتفادٍ اص کلیذُای هیاًثش‪ALT + F11 :‬‬ ‫·‬

‫اعتفادٍ اص هٌْی اکغل‪Tools-> Macro-> Visual Basic Editor :‬‬ ‫·‬

‫اعتفادٍ اص ‪ Toolbar‬یا ُواى ًْاس اتضاس ‪ ّ Visual Basic‬فؾشدى آیکْى‬ ‫·‬


‫‪Visual Basic Editor‬‬

‫تَ ُش زال تا یکی اص سّؽِای فْق ّاسد هسیػ تشًاهَ ًْیغی هیؽْین‪.‬‬

‫‪ -2‬ایجاد‪ّ : Module‬سّد تَ هٌْی ‪ ّ Insert‬اًتخاب گضیٌَ ‪Module‬‬

‫‪ -3‬ایجاد یک رّیَ یا ‪Sub Procedure‬‬

‫‪ًْ -‬ؽتي فشهاى (کلوَ کلیذی) ‪ ّ Sub‬عپظ ًام تشًاهَ‬


‫‪ -‬فؾشدى دگوَ ‪Enter‬‬
‫‪ -‬تالفاصلَ تطْس اتْهاتیک فشهاى ‪ End Sub‬دس یک خػ خذیذ اظافَ هیؽْد‪.‬‬

‫‪ًْ -4‬شتي کذُای برًاهَ ‪ :VBA‬کذُای تشًاهَ سا خػ تَ خػ تیي فشهاًِای ‪ّ Sub‬‬


‫‪ End Sub‬هیًْیغین‪.‬‬

‫تَ ػٌْاى هثال‪:‬‬


‫()‪Sub MyProgram‬‬
‫"‪Range("A1:A10").Value = "Visual Basic for Applications‬‬

‫‪1|Page‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪Range("A11") =10‬‬
‫‪Range("B11").Value = 20‬‬
‫"‪Range("C11").Value = "=A11+B11‬‬
‫‪End Sub‬‬
‫‪ -5‬اجرای برًاهَ ‪ :‬تشای اخشای تشًاهَ چٌذیي سّػ ّخْد داسد‬

‫فؾشدى کلیذ ‪F5‬‬ ‫·‬

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

‫تاصگؾت تَ هسیػ ‪ ّ Excel‬اعتفادٍ اص ‪ALT + F11‬‬ ‫·‬

‫رّش دیگر‪ :‬ایداد یک تشًاهَ تا اعتفادٍ اص ‪Command Button‬‬ ‫‪1.1‬‬


‫دس ایي سّػ هشازل صیش سا اًدام هی دُین‪:‬‬

‫ایجاد ‪Command Button‬‬ ‫>>>‬

‫تشای قشاس دادى ‪ Command Button‬تش سّی هسیػ اکغل هغیش صیش سا غی هیکٌین‪:‬‬

‫‪ ToolbarControl Toolbox‬هٌْی ‪View‬‬


‫>(الثتَ اگش قثال ًْاس اتضاس ‪ً Visual Basic Editor‬یض فؼال ؽذٍ تاؽذ هیتْاًیذ ‪ Control Toolbox‬سا تطْسهغتقین اص آى اًتخاب کٌیذ‪).‬‬

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


‫اًتخاب ّ آًشا تش سّی صفسَ گغتشدٍ هسیػ اکغل اکغل قشاس هیذُین‪ .‬یک دکوَ دس‬
‫هسیػ اکغل ظاُش هیؾْد‪.‬‬

‫‪2|Page‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫>> تا کلیک کشدى تش سّی ‪ Command Button‬تالفاصلَ ‪Visual Basic Editor‬‬


‫یا ُواى ‪ VBE‬ظاُش هی ؽْد‪ .‬تالفاصلَ هیتْاًیذ دعتْسات خْد سا ُواًٌذ ؽکل تایپ‬
‫کٌیذ‪( .‬ؽکل تؼذی)‬

‫تا دقت دس ایي کذُای ‪ VBA‬هالزظَ هیؽْد کَ‪:‬‬


‫دعتْس اّل هقذاس(‪ )Value‬علْلِای ‪ A1‬تا ‪ A10‬سا تا ػثاست "‪"Visual Basic for Application‬‬
‫پش هیکٌذ‪.‬‬

‫دعتْس تؼذی ًیض زاصل خوغ علْلِای ‪ B11 ّ A11‬سا دس علْل ‪ C11‬قشاس هیذُذ‪.‬‬

‫دعتْس آخش ًیض هقذاس علْل ‪ D11‬سا ًیض تا سّػ دیگشی تشاتش تا زاصلدوغ ‪B11 ّ A11‬‬
‫قشاس هیذُذ‪ .‬تا اًذکی دقت هتْخَ هیؽْین کَ ایي دعتْس تا دعتْس قثلی هتفاّت اعت‪.‬‬

‫خشّخی ّ ساتػ تشًاهَ‬

‫‪3|Page‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫>> اجرای برًاهَ‪ :‬تشای اخشای ایي تشًاهَ تَ هسیػ اکغل تشهیگشدین‪( .‬هیتْاى اص‬
‫‪ً ALT + F11‬یض اعتفادٍ کشد)‪.‬‬

‫تا فؾشدى آیکي ‪ Exit Design Mode‬اص ‪ Control Toolbox‬اص زالت غشازی‬
‫خاسج هیؽْین‪ .‬پظ اص آى تا کلیک تش سّی ‪ Command Button‬تشًاهَ اخشا هیؽْد‬
‫کَ خشّخی آى دس ؽکل ًؾاى دادٍ ؽذٍ اعت‪.‬‬

‫دستْر ‪:CELLS‬‬

‫ایي دعتْس تا اعتفادٍ اص هختصات علْلِا آًِا سا هؾخص هیکٌذ‪ .‬تَ ػٌْاى‬
‫هثال )‪ CELLS(2,5‬عطش ‪ ّ 2‬عتْى ‪ 5‬یؼٌی ‪ E2‬سا هؾخص هی کٌذ‪.‬‬

‫دس دعتْس‪ Cells(2,5).Value = 15' :‬دس عل ‪ 5ّ2‬اسصػ ‪ 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‬‬

‫یک دعتْس تشکیثی هی تاؽذ‪ .‬کَ ُن اص ‪Range‬اعتفادٍ ؽذٍ ّ ُن اص دعتْس ‪CELLS‬‬

‫‪4|Page‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫هالزظَ ؽذ کَ تَ ‪ 2‬صْست هی تْاى علِا سا اص دّ دعتْس ‪ّ RANGE‬‬


‫دعتْس ‪ CELLS‬اًتخاب کشد ّ اص ػالهتِای تا ػالهتِای "‪ ":‬یا "‪ " ,‬اعتفادٍ ًوْد‪.‬‬

‫یادداؽت‪ :‬ساٌُوای خاهؼی تشای کاس تا علْلِا ّ ًازیَ تِیَ ؽذٍ کَ تطْس خذاگاًَ ًیض آهذٍ‬
‫اعت‪.‬‬

‫اًتخاب سطر ّ ستْى‬

‫دّ دعتْس صیش غشیقَ اًتخاب عطش عتْى ّ عطش کلی هی تاؽذ‪:‬‬

‫‪Range("A:F").Value = 100‬‬

‫‪Range("1:5").Value = 100‬‬

‫کَ هؾخص ؽذٍ دس آًِا هقذاس‪ 111‬گزاسدٍ ؽْد‪.‬دس ایي دعتْسُا تواهی عتًِْای هاتیي ّ‬
‫تواهی عطِای ها تیي ًیض اسصػ هؾخص ؽذٍ سا هی گیشًذ‪.‬‬

‫دعتْس صیش‪:‬‬

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

‫دعتْسی اعت کَ تَ تشًاهَ هی گْیذ عتْى ‪ ّ A‬عتْى ‪F‬سا تَ تٌِایی اسصػ ‪ 111‬تگزاس‪.‬‬

‫هی تْاى تَ خای عتًِْا اص عطشُا ًیض اعتفادٍ ًوْد‪.‬‬

‫دعتْس صیش‪:‬‬

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

‫سا ّاسد کٌیذ ّ ًتیدَ سا تا ‪ً RUN‬وْدى تثیٌیذ‪.‬‬

‫هؼشفی علْلِا تا اعتفادٍ اص هتغیشُا‬

‫‪5|Page‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫دعتْس صیش سا ّاد کٌیذ‪:‬‬

‫‪A=1‬‬

‫‪B=2‬‬

‫‪C=3‬‬

‫‪Range(Cells(A, A), Cells(B, B)).Value = 6‬‬

‫کَ دس ایي صْست هتغیشُای ‪ A B C‬سا هی تْاى تشای تشًاهَ تؼشیف کشد ّ دس دعتْس‬
‫‪ CELLS‬اعتفادٍ ًوْد‪.‬‬

‫‪6|Page‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

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


‫اص اتضاس ُای ‪ DESIGN MODE‬دس هٌْی هاکش ‪ COMMAND BUTTON‬سا‬
‫اًتخاب هی کٌین‬

‫دکوَ خذیذ سا اًتخاب کشدٍ ّ تش سّی آى داتل کلیک هی کٌین تا صفسَ ّیژّال تیغیک‬
‫تاص ؽْد‪.‬‬

‫دس صفسَ ایداد ؽذٍ دعتْس صیش سا ّاسد هی کٌین‪:‬‬

‫‪Range("A1:A10").Value = 10‬‬

‫تا ایي دعتْس تَ اکغل گفتَ ؽذٍ کَ ‪A1‬تا ‪ A10‬سا گشفتَ ّ تَ آى هقذاس ‪ 11‬سا تذُذ‪.‬‬

‫اص ػثاست )"@"(‪ RANGE‬تشای هؾخص کشدى ًازیَ ای دس اکغل ّ اص ػثاست‬


‫=‪ .VALUE‬تشای تغییش هقذاس علْلِا اعتفادٍ هی کٌین‪.‬‬

‫زال اص ایي صفسَ خاسج ؽذٍ ّ تش سّی دکوَ گًْیا(دس هٌْی ّیژّال تیغیک ًْاس‬
‫خاکغتشی سًگ تاالی صفسَ) کلیذ کشدٍ ّ ‪ EXIT DESIGN MODE‬سا هی صًین‪.‬‬

‫تش سّی دکوَ خذیذ ساعت کلیذ کشدٍ ّ هؾخصات سا سا اًتخاب کشدٍ ّ دس ایي زالت‬
‫هؾخصات دکوَ اص قثیل سًگ ّ ًام ّ ‪ ...‬سا هی تْاى تغییش داد‪.‬‬

‫زال اص ایي صفسَ خاسج ؽذٍ ّ تش سّی دکوَ گًْیا(دس هٌْی ّیژّال تیغیک ًْاس‬
‫خاکغتشی سًگ تاالی صفسَ) کلیذ کشدٍ ّ ‪ EXIT DESIGN MODE‬سا هی صًین‪.‬‬

‫ّقتی کَ اص زالت ‪ DESIGN‬خاسج ؽذین زال تش سّی دکوَ کلیک کشدٍ ّ هؾاُذٍ هی‬
‫کٌین کَ دسعلِای هؾخص ؽذٍ اسصػ ػذدی ‪ 11‬سا قشاس هی دُذ‪.‬‬

‫هی تْاى تَ خای ‪ 11‬یک ػثاست سا دس داخل " " قشاس داد ّ دس ایي زالت تَ خای ‪11‬‬
‫آى ػثاست ًْؽتَ هی ؽْد‪.‬‬

‫تْخَ‪ :‬دس صْستی کَ اص ػالهت ' دس اتتذای یک خػ تشًاهَ ًْیغی دس هسیػ ‪VB‬‬
‫اعتفادٍ ؽْد آى خػ عثض ؽذٍ ّ ػولیاتی تش سّی آى خػ اخشا ًخْاُذ ؽذ‪ .‬ایي خػ‬
‫اصطالزا ‪( Comment‬تْظیسات)ًاهیذٍ هی ؽْد‪ Comment .‬زالت اخشایی ًذاسد ّ‬

‫‪7|Page‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫اص آى تشای اسایَ تْظیسات اعتفادٍ هیؾْد‪ُ Comment .‬ا تَ خْاًایی تشًاهَ تغیاس‬
‫کوک هیکٌٌذ‪.‬‬

‫دعتْس صیش سا هی ًْیغین‪:‬‬

‫)"‪Range("D1").Value = Range("B1") + Range("C1‬‬

‫دعتْس صیش سا دس یک عػ دیگش هی ًْیغین‪:‬‬

‫"‪Range("E1").Value = "=A1+A2‬‬

‫هالزظَ هی ؽْد کَ دس عطش ‪ E1‬اسصؽِای هْخْد دس ‪ A2ّA1‬خوغ صدٍ هی ؽْد‪.‬‬

‫ًکتَ ‪ :‬تَ ػالهت = دس داخل کْتیؾي تْخَ ؽْد‪.‬‬

‫اگش تَ هسیػ اکغل تاصگشدین ّ دسعلْلِایی کَ فشهْل ًْؽتَ هی ؽْد تْخَ کٌین دیذٍ هی‬
‫ؽْد کَ هستْای ایي علْلِا تا ػالهت = ؽشّع هی ؽْد‪ .‬یؼٌی اکغل تَ هستْای یک‬
‫علْل ًگاٍ هیکٌذ اگش تا ػالهت = ؽشّع ؽْد آًشا فشهْل تلقی هی کٌذ ّ ًَ هقذاس‪ .‬پظ ها‬
‫ُن اص ُویي سّػ اعتفادٍ هیکٌین ّ ّقتی دس ًظش داسین کَ فشهْلی سا دس یک علْل ّاسد‬
‫کٌین هی تایغت تا ػالهت = ؽشّع کٌین‪.‬‬

‫دستْر ‪SELECT‬‬
‫تا اًدام ایي دعتْس علِای هْسد اؽاسٍ اًتخاب هی ؽْد هی تْاى تؼذ اص ‪ RANGE‬اص‬
‫دعتْس تاال اعتفادٍ ًوْد‪.‬‬

‫دعتْس صیش سا ّاسد کٌیذ‪:‬‬

‫‪Range("F1:F10").Select‬‬

‫ّ دکوَ سا ‪ RUN‬هی کٌین‪.‬هالزظَ هی ؽْد کَ عطشُای هْسد اؽاسٍ ُای اًتخاب ؽذ‪.‬‬

‫هی تْاى تَ خای ‪ :‬اص ػالهت ‪ ,‬اعتفادٍ ًوْد کَ دس ایي زالت تَ هؼٌی ‪ AND‬هی تاؽذ‪.‬‬

‫هْاسدی کَ دس تاال اؽاسٍ گشدیذ خالصَ ای اص عَ دعتْس ‪RANGE VALUE‬‬


‫‪ SELECT‬تْد کَ اؽاسٍ ای هختصش تَ آى گشدیذ‪.‬‬

‫هطالثی کَ اسایَ ؽذ هقذهَ ای تْد تا آهادگی الصم تشای ّسّد تَ هثسث تشًاهَ ًْیغی‬
‫ایداد ؽْد‪.‬‬

‫‪8|Page‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪ .3‬هتغیرُا در ّیژّال بیسیک‬

‫پاک کشدى اغالػات تا اعتفادٍ اص تشًاهَ ًْیغی‪:‬‬


‫اغالػاتی سا دس یک ؽیت اکغل ّاسد هی کٌین‬
‫سّػ اّل تذیي صْست اعت کَ هی تْاى یک هاکشّ تشای آى ًْؽت ّ تش سّی عل‬
‫ًْؽتَ ؽذٍ ساعت کلیک کشدٍ ّ گضیٌَ ‪ clear contact‬سا اًتخاب ًوْد‪.‬‬
‫سّػ دّم تذیي صْست اعت کَ اص فشهْل صیش اعتفادٍ ًوْد‪:‬‬

‫‪Range("B6:D14").ClearContents‬‬

‫هتغیرُا(‪)Variables‬‬
‫گاُی اّقات دس فشهْل ًْیغی دس اکغل ًیاص تَ هتغیش هی ؽْد‬

‫ػذدی زشّفی تاسیخ هتغیشُای هٌطقی‬


‫اًْاع هتغیش‪:‬‬
‫‪String‬زشّفی‬
‫‪ Integer‬ػذدی‬
‫‪Date‬‬
‫هٌطقی(‪ )boolean‬کَ هقادیش ‪ True‬یا ‪ False‬سا هی گیشد‪.‬‬
‫ًام هتغیر‪:‬‬
‫اعن هتغیش زذاکثش ‪ 252‬کشکتش تایذ تاؽذ ّ دس اتتذای آى ػذد ًثایذ تاؽذ ّ اص ‪ّ – .‬‬
‫فاصلَ ًویتْاى دس ًام ػٌْاى هتغیش اعتفادٍ ًوْد‪.‬‬
‫هؼشفی هتغیش‪:‬‬
‫تشای هؼشفی هتغیش تَ ؽکل صیش ػول هی کٌین‪:‬‬
‫‪ً Dim‬ام هتغیش ‪ًْ As‬ع هتغیش‬
‫‪Dim password As String, birthday As Date‬‬
‫هتغیش ُای تاسیخ‪ 9‬دس داخل ‪ ّ # #‬هتغیشُای زشّفی دس داخل " " گزاسدٍ هی ؽْد‪.‬‬
‫هثال ‪:‬فشض کٌین عَ ؽیت داسین کَ دس ُش عَ ؽیت اغالػات داسین‪ .‬هی خْاُین اغالػات‬
‫ؽیت یک سا پاک کشدٍ ّ ؽیت دّ سا دس ؽیت یک قشاس دادٍ ّ اغالػات ؽیت عْم سا اص‬
‫اًتِای ؽیت دّم تٌْیغذ‪:‬‬
‫تشای ایي هٌظْس اتتذا هاکشّیی سا ایداد هی کٌین ّ ایذٍ ُای اصلی سا تَ تِشٍ گیشی اص‬
‫کذُای ایي هاکشّ هی گیشین ّ تشای ًْؽتي تشًاهَ اعتفادٍ هی ًوایین‪.‬‬

‫‪9|Page‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫تْضیح ّ یا دآّری‪:‬‬
‫فشهْل (‪ =)COUNT(A: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‬‬

‫هغالَ هْخْد ایي اعت کَ دس اًتِای اغالػات ّاسد ؽذٍ دس ؽیت اّل(پظ اص دلیت کشدى)‬
‫اغالػات ؽیت عْم سا ّاسد ًوایذ‪.‬تشای ایي هٌظْس تایذ تغییشاتی دس هاکشّ ًْؽتَ ؽذٍ دس‬
‫اکغل ایداد کشد ّ تا اعتفادٍ اص اغالػات عتْى ‪ ّ c‬تؼشیف دّ هتغیش ‪ ّ x1 ,x2‬اظافَ‬
‫ًوْدى دس عطشُای تشًاهَ ًْؽتَ ؽذٍ تَ ایي ُذف سعیذ‪ .‬تخؼ اصلی تشای زل ایي هغالَ‬
‫اعتفادٍ اص سّػ آدسط دُی هختصاتی تشای هؼشفی ًازیَ ُا اعت ‪ .‬صیشا ًْازی کَ‬
‫اًتخاب هی ؽًْذ تغییش هیکٌٌذ ّ هی تایغت اص دعتْس ٍ )‪ cells(i,j‬اعتفادٍ کٌین‬

‫‪10 | P a g e‬‬

‫‪www.ParsBook.org‬‬
VB in Excel ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

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

11 | P a g e

www.ParsBook.org
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪ .4‬دستْر شرطی ‪ IF‬در هحیط ّیژّال بیسیک‬


‫دعتْسُای ؽشغی)‪(if then else‬‬
‫عاختاس اّلیَ ّعادٍ‪:‬‬
‫‪if‬‬ ‫ؽشغ‬ ‫‪then‬‬
‫دعتْسات‬
‫‪end if‬‬

‫هثال‪ :‬دس علْل ‪ A1‬ػذدی قشاس داسد کَ عي ؽخصی سا ًؾاى هیذُذ‪ .‬هیخْاُین‬
‫تا تْخَ تَ عي دس علْل ‪ B1‬پیغاهی تٌْیغین‬
‫)(‪Sub grade‬‬

‫‪If Range("a1") >= 17 Then‬‬


‫"‪Range("b1") = "good‬‬
‫‪End If‬‬

‫‪End Sub‬‬

‫عاختاس کاهل دعتْس ؽشغی ‪If‬‬


‫‪ then‬ؽشغ‪If 1‬‬
‫دعتْسات‬
‫‪ then‬ؽشغ‪Elseif 2‬‬
‫دعتْسات‬

‫‪ then‬ؽشغ آخش ‪Elseif‬‬


‫دعتْسات‬

‫‪Else‬‬
‫دعتْسات‬
‫‪Endif‬‬

‫‪12 | P a g e‬‬

‫‪www.ParsBook.org‬‬
VB in Excel ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

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

13 | P a g e

www.ParsBook.org
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪ .5‬ساختار برًاهَ ‪ SELECT CASE‬در اکسل‬

‫‪Select CASE‬‬

‫دعتْس ‪ SELECT CASE‬دعتْسی تا کاستشدی هاًٌذ ‪ IF‬هی تاؽذ‪ .‬دس خِت اعتفادٍ اص‬
‫ایي دعتْس ها ًیاصهٌذ تؼشیف هتغیشی هاًٌذ ‪ُ X‬غتین ّ عپظ تشای هتغیش هْسد اؽاسٍ‬
‫ؽشّغ هْسد ًیاص سا هی گزاسین‪.‬‬

‫شکل کلی دستْر ‪Select Case‬‬

‫ًام هتغیش ‪Select Case‬‬


‫‪Case‬‬ ‫زالت اّل‬
‫دعتْسات‬
‫زالت دّم ‪Case‬‬
‫دعتْسات‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬

‫‪Case Else‬‬
‫دعتْسات‬
‫‪End Select‬‬

‫‪14 | P a g e‬‬

‫‪www.ParsBook.org‬‬
VB in Excel ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫ یک ؽیت‬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

15 | P a g e

www.ParsBook.org
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫ساختار حلقَ ای ‪FOR Each - NEXT‬‬

‫زلقَ ُا دعتْساتی ُغتٌذ کَ هی تْاى خِت اًدام دعتْسات تکشاسی اص آًِا اعتفادٍ ًوْد‪.‬‬
‫زلقَ ‪ FOR Each‬تشای کاس تش سّی ػعُْای(‪ )members‬یک‬
‫هدوْػَ(‪ )collection‬اعتفادٍ هی ؽْد‪ .‬هدوْػَ ؽاهل تؼذادی ؽیء یکغاى اعت‪ .‬تَ‬
‫ػٌْاى هثال )"‪ Range("A1:A10‬یک ‪ collection‬اعت صیشا تؼذادی ػعْ تَ ًام‬
‫علْل اعت کَ ُوگی اص یک خٌظ ُغتٌذ‪ُworksheet .‬ای یک فایل اکغل هدوْػَ ای‬
‫تَ ًام ‪ Worksheets‬تؾکیل هی دٌُذ‪ .‬چاستِای یک فایل اکغل هدوْػَ ای تَ ًام‬
‫‪ Charts‬تؾکیل هی دٌُذ‪.‬‬
‫الگْی صیش الگْی اعتفادٍ اص یک زلقَ ‪FOR Each‬دس تشًاهَ ًْیغی هی تاؽذ‪:‬‬

‫هدوْػَ ‪ In‬ػعْ ‪For Each‬‬


‫دعتْسات‬
‫‪NEXT‬‬

‫دس تشًاهَ ای کَ دس صیش ًْؽتَ ؽذٍ ػولیات هْسد ًظش تش سّی سدیفِای ‪ 1‬تا ‪ 11‬عتْى‬
‫‪ 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‬‬

‫‪16 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫استفادٍ از دستْر ‪ 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‬‬

‫‪17 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪ .6‬ساخت ‪ MSSAGE BOX‬در اکسل با استفادٍ از برًاهَ ‪VB‬‬

‫‪ 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‬‬

‫‪18 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫ُواًطْس کَ دس خػ دّم تشًاهَ هالزظَ هی گشددعاختاس کلی یک کادس پیغام ؽاهل عَ‬
‫تخؼ ػٌْاى‪ ،‬ؽشذ ّ گضیٌَ ُای پیغام هی تاؽذ کَ تَ ػالهت ‪ ,‬اص ُن خذا هی ؽْد‪ .‬تَ‬
‫ػثاست ‪ VBA‬دس قغوت هیاًی فشهْل تْخَ کٌیذ‪.‬‬
‫ًکتَ‪ :‬اغالػات کاهل دس هْسد ‪ Massage Box‬دس ‪ HELP‬اکغل آّسدٍ ؽذٍ اعت ‪.‬‬

‫‪19 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪ .7‬حلقَ ُای ‪FOR -NEXT‬‬

‫حلقه ها‬
‫خِت اًدام کاسُای تکشاسی اص زلقَ ُا اعتفادٍ هی ؽْد‪ .‬دس اتتذا تا زلقَ ُای ‪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‬‬
‫‪ ّ 2‬اػذادفشد تا ‪ step‬یک یا عَ تِشٍ خغت‪.‬‬

‫‪20 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫حلقَ ُای تْ در تْ‬


‫تا اعتفادٍ اص چٌذیي زلقَ ‪ 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‬تشًاهَ ایداد ًوْد‪.‬‬

‫‪21 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪ .8‬کاًتر سازی ّ تابع جوع در ‪ -VB‬حلقَ ُای شرطی‪DO-LOOP‬‬

‫دس ایي خلغَ هی خْاُین پشّعَ ایداد یک ؽواسًذٍ)‪ ،(CONTER‬غشیقَ خوغ ًوْدى‬
‫هقادیش ػذدی هْخْد دس یک عطش یا عتْى ّ‪ ّ ...‬دس ًِایت هؼشفی زلقَ ؽشغی‬
‫‪ LOOP-WHILE‬تپشداصین‪.‬‬

‫شوارًذٍ(‪)COUNTER‬‬
‫دس خلغات گزؽتَ دیذین کَ تشای خوغ ًوْدى تؼذاد اغالػات هْخْد دس یک عطش یا یک‬
‫عتْى اص فشهْل ) (‪ =COUNT‬دس یک عل اص علِای اکغل اعتفادٍ هی ؽْد‪ .‬دس ایي‬
‫هشزلَ هیخْاُین تا اعتفادٍ اص هتغیش ‪ ،COUNTER‬ؽواسػ تؼذاد کشکتشُا صْست‬
‫پزیشد‪.‬‬
‫تذیي هٌظْس اتتذا تایذ هقذاس کاًتش سا تشاتش صفش گزاؽتَ ّ دس هشزلَ تؼذی پظ اص گزاسدى‬
‫ؽشغ تشًاهَ‪ ،‬کاًتش سا هغاّی کاًتش ‪ 1+‬قشاس هی دُین‪:‬‬
‫دس هثال صیش تؼذاد ًوشات هْخْد داًؼ آهْصاى یک کالط ّخْد داسد‪ .‬هی خْاُین تشًاهَ‬
‫ای تٌْیغین کَ تؼذاد افشادی کَ قثْل ؽذٍ اًذ ّ تؼذاد افشادی کَ قثْل ًؾذٍاًذ سا دس یک‬
‫عطش اکغل ًْؽتَ ّ خْد ًوشات سا ًیض تشزغة قثْلی ّ یا سد ؽذى افشاد تغییش سًگ‬
‫دُذ‪:‬‬
‫تشای ًیل تَ ایي ُذف هی تایغت اص یک زلقَ ‪ ّ FOR‬یک ؽشغ ‪ IF‬اعتفادٍ ًواین‪.‬لزا‬
‫تشًاهَ تَ ؽکل صیش ًْؽتَ هی ؽْد‪:‬‬
‫)(‪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‬‬

‫‪22 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫ُواًطْس کَ هالزظَ ؽذ‪ ،‬تشًاهَ دس اتتذا تشای هقذاس هتغیش ‪ COUNTER‬ػذد صفش سا‬
‫دس ًظش داسد‪ُ .‬واًطْس کَ ُش عػ خذّل تا ؽشغ خػ چِاسم تشسعی هی ؽْد ّ چٌاًچَ‬
‫ّاخذ ایي ؽشغ تْد(اػذاد تضسگتش اص ‪ )11‬یک ؽواسٍ تَ کاًتش اظافَ هی گشدد ّ‬
‫ُواًطْس تا اتوام تشًاهَ ایي پشعَ خایگضیٌی اداهَ پیذا هی کٌذ‪.‬‬
‫ًکتَ‪ :‬هتغیش‪ COUNTER‬فشهْل خاصی دس تشًاهَ ‪ً VBA‬یغت‪.‬تَ خای ایي ػثاست‬
‫هی تْاى اص ُش هتغیش دیگشی کَ تْعػ ‪ VBA‬پزیشفتَ تاؽذ ًیض اعتفادٍ ًوْد‪.‬اعتفادٍ اص‬
‫ایي ػثاست تٌِا تشای اًتقال دسعت تش هفِْم ّ قاتل فِن تش ؽذى تشًاهَ تشای دیگش‬
‫اعتفادٍ کٌٌذگاى هی تاؽذ‪.‬‬

‫اًثاسٍ (‪)accumulator‬‬
‫دس ایي هشزلَ هی خْاُین پشّعَ خوغ ًوْدى اػذاد یک عطش یا یک عتْى ّ یا اػذادی‬
‫کَ هْسد تْخَ تشًاهَ هی تاؽٌذ سا هذ ًظش قشاس دُین‪ .‬تَ ػٌْاى هثال هی خْاُین تشًاهَ‬
‫ای تٌْیغین کَ اػذاد فشد ‪ 1‬تا ‪ 111‬سا خوغ ًوْدٍ ّ ًتیدَ سا دس عل ‪ B1‬تایپ ًوایذ‪.‬‬
‫تشای ایي هٌظْس هی تایغت هتغیشی هاًٌذ ‪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‬تْخَ کٌیذ‪ .‬دس ًْؽتي یک ؽواسًذٍ ها تَ ؽواسٍ قثلی یک‬
‫‪ 1‬اظافَ هی کشدین ّلی دس خوغ ًوْدى تؼذاد اػذاد دس ایي تشًاهَ تایذ ‪ I‬اًتخاتی سا هذ‬
‫ًظش قشاس دُین‪I .‬ای کَ تْعػ ؽشّغ هْخْد تشًاهَ ایداد گشدیذٍ اعت‪.‬‬
‫ُواًطْس کَ تشای هتغیش ‪ً COUNTER‬یض ػٌْاى ؽذ‪ً SUM ،‬یض یک هتغیش اعت‪.‬‬
‫هتغیشی خِت اًتخاب‪ ،‬خایگضیٌی‪ ،‬خوغ ًوْدى ّ دس ًِایت خایگضیٌی هدذد‪.‬‬

‫‪23 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫استفادٍ از حلقَ شرطی ‪DO-LOOP‬‬


‫زلقَ ُای ؽشغی زلقَ ُایی اًذ کَ تا صهاًی کَ ؽشغ تشقشاس تاؽذ ّ یا ًثاؽذ –تشزغة‬
‫ًیاص تشًاهَ‪ -‬هْسد اعتفادٍ قشاس هی گیشد‪.‬‬
‫عاختاس کلی یک زلقَ ‪ DO-LOOP‬تَ ؽکل صیش اعت‪:‬‬
‫رّش اّل‪ :‬در ایي رّش شرط در ابتذا بررسی هی شْد‬
‫‪DO‬‬
‫دعتْسات‬
‫ؽشغ هْسد ًظش ‪ UNTIL‬یا‪LOOP WHILE‬‬

‫رّش دّم‪ :‬در ایي رّش شرط اًتِا بررسی هی شْد‬

‫ؽشغ هْسد ًظش ‪ UNTIL‬یا‪DO WHILE‬‬


‫دعتْسات‬
‫‪LOOP‬‬

‫تَ ایي هفِْم کَ‪:‬‬


‫اًدام تذٍ ایي کاس سا تا صهاًی کَ تتًْی اًدام تذی‪....‬‬
‫یا‬
‫اًدام تذٍ ایي کاس سا تا صهاًی کَ ًتًْی اًدام تذی‪....‬‬

‫دس ایٌدا هی خْاُین تا رکش تشًاهَ عادٍ ای کاستشد ایي زلقَ سا تَ اختصاس تْظیر دُین‪.‬‬
‫تَ ػٌْاى ًوًَْ هی خْاُین تشًاهَ ای دس هسیػ ‪ VBA‬تٌْیغین کَ اػذاد هْخْد دس یک‬
‫عتْى اکغل سا تا خایی کَ ػذد ّخْد داسد خوغ ًوایذ‪.‬چٌیي تشًاهَ ای تایذ تَ ؽکل صیش‬
‫ًْؽتَ ؽْد‪:‬‬

‫)(‪Sub do_loop‬‬
‫‪i=0‬‬

‫‪Do‬‬
‫‪i=i+1‬‬
‫""><)‪Loop While Cells(i, 1‬‬

‫‪Cells(1, 2) = i – 1‬‬

‫‪End Sub‬‬

‫‪24 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫هالزظَ هی ؽْد کَ تشًاهَ اػذاد ‪ I‬سا دس عتْى هزکْس تا خایی کَ تَ عل خالی تشعیذ تا‬
‫ُن خوغ هی کٌذ‪.‬تْظیر تیؾتش ّ تشًاهَ ُای تیؾتش دس هْسد ایي زلقَ ؽشغی تَ خلغَ تؼذ‬
‫هْکْل هی ؽْد‪.‬‬

‫ًکتَ‪ّ :‬قتی اص ‪ WHILE‬اعتفادٍ هی ؽْد هاداهیکَ ؽشغ تشقشاس تاؽذ دعتْسات اًدام‬
‫هیؾًْذ‬
‫ّقتی اص ‪ Until‬اعتفادٍ هی ؽْد زلقَ تَ هسط ّقْع ؽشغ زلقَ خاتوَ هی یاتذ( تَ‬
‫ػثاستی زلقَ تا صهاًیکَ ؽشغ تشقشاس ًیغت اداهَ پیذا هی کٌذ)‬

‫‪25 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫اداهَ هبحث ‪ DO-LOOP‬آغاز ‪ًْ FUNCTION‬یسی در اکسل‬ ‫‪.9‬‬


‫اداهَ ‪do-loop‬‬
‫دس خلغَ گزؽتَ تا زلقَ ؽشغی ‪ DO-LOOP‬تا اًذاصٍ ای آؽٌا ؽذین‪ .‬دس ایي خلغَ هی‬
‫خْاُین تا اسائَ هثالِایی تیؾتش تا کاستشد ایي زلقَ دس تشًاهَ ًْیغی ّیژّال تیغیک‬
‫تپشداصین‪.‬‬

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


‫دس خلغَ گزؽتَ هثالی صدین کَ تالػ تش ایي تْد کَ تشًاهَ ای ًْؽتَ ؽْد تؼذاد علِای پش‬
‫دس یک عتْى اکغل سا ًؾاى دُذ‪ .‬دس آًدا دیذین کَ اص خػ تشًاهَ صیش دس تشًاهَ خِت‬
‫سعیذى تَ ایي ُذف اعتفادٍ ًوْدین‪:‬‬
‫""><)‪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‬‬

‫هثال دّم‪ :‬هی خْاُین تشًاهَ ای تٌْیغین هدوْع هقادیش ‪ 1‬تا ‪ 111‬سا تذّى آًکَ دس‬
‫علِای خذّل ایي اػذاد سا ًؾاى دُذ‪ ،‬دس یک ‪ً MASSAGE BOX‬ؾاى دُذ‪.‬تشًاهَ تَ‬
‫ؽکل صیش ًْؽتَ هی ؽْد‪:‬‬
‫)(‪Sub do_loop2‬‬
‫‪i=1‬‬
‫‪Sum = 0‬‬
‫‪Do‬‬
‫‪Sum = Sum + i‬‬
‫‪26 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪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‬عاختَ ّ پشداختَ‬
‫هی ؽْد‪ .‬اکٌْى صهاى آى فشا سعیذٍ اعت تا فشاگیشین چگًَْ هی تْاى ایي تشًاهَ ُای‬
‫عادٍ سا تَ ػٌْاى تاتؼی اص تْاتغ هْخْد دس اکغل تَ کاس تشد‪ .‬هی تْاى تشًاهَ ُای عادٍ‬
‫یا پیچیذٍ سا کَ تَ ػٌْاى تاتغ دس اکغل تؼشیف ًؾذٍ اًذ سا ًْؽتَ ّ تَ ػٌْاى تْاتغ خذیذ‬
‫هؼشفی ّ اعتفادٍ ًوْد‪ .‬هثال هی تْاى تشًاهَ ای ًْؽت کَ هثالغ ػذدی(هثال لایر) هْخْد‬
‫دس تشًاهَ سا تَ صْست زشّف تٌْیغذ ّ عپظ ایي تشًاهَ سا دس اکغل تَ ػٌْاى تاتؼی‬
‫تؼشیف ًوْد‪.‬هی تْاى تشًاهَ ای ًْؽت کَ تاسیخِای هیالدی سا دس تشًاهَ ُای هْسد‬
‫اعتفادیواى تَ ؽوغی ّ تالؼکظ تثذیل ًوایذ ّ‪ ...‬تواهی ایي تشًاهَ ُا ّ یا ُش تشًاهَ دیگش‬
‫سا هی تْاى تَ ػٌْاى تْاتغ هْسد اعتفادیواى دس اکغل تؼشیف ًوْد‪.‬اها چگًَْ؟‬

‫‪27 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫خِت ًیل تَ ایي هٌظْس ّاسد هسیػ ‪ 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‬‬

‫ّاسد هسیػ ‪ excel‬هی ؽْین‪.‬زال اص اص گضیٌَ ‪ insert‬زالت ‪ function‬سا اًتخاب هی‬


‫کٌین‪.‬دس پٌدشٍ تاص ؽذٍ اص کوثْ تاکظ هقاتل ػثاست ‪ or select a category‬گضیٌَ ‪user‬‬
‫‪ difind‬سا اًتخاب هی کٌین‪.‬هالزظَ هی کٌین کَ تشًاهَ خذیذ ها دس ایٌدا ّخْد داسد‪ .‬زال‬
‫تشای اخشای ایي تشًاهَ دّ زالت پیؼ سّی هاعت‪.‬‬

‫الف‪ -‬استفادٍ از گسیٌَ ‪ user difand‬برای اجرای برًاهَ کَ دس ایي زالت پٌدشٍ ای تاص‬
‫هی ؽْد ّ اص ها هی خْاُذ کَ ُش یک اص عَ هتغیش تشًاهَ سا هؾخص کٌین تا دس ًِایت‬
‫زاصل سا تَ ها گضاسػ ًوایذ‪.‬‬

‫دّم‪ًْ -‬شتي فرهْل در یکی از سلِای اکسل‪:‬ایٌکَ ّاسد یکی اص علِای اکغل ؽْین دس‬
‫ایٌدا هاًٌذ ُش تشًاهَ دیگشی هی ًْیغین‪:‬‬
‫)‪=NETPROFIT(A1;B1;C1‬‬
‫تذیِی اعت علِای داخل پشاًتض تَ تشتیة دس ایٌدا دس تش گیشًذٍ دس آهذ‪ُ ،‬ضیٌَ ّ دسصذ‬
‫هالیات هی تاؽذ‪.‬‬

‫‪28 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪ . 11‬اداهَ ‪ Function‬سازی در اکسل‬


‫اداهَ ‪function‬‬

‫دس خلغَ گزؽتَ دیذین کَ چگًَْ هی تْاى دس هسیػ اکغل یک ‪ FUNCTION‬تؼشیف‬


‫ًوْد‪.‬‬
‫دس ایي خلغَ تَ تشسعی چٌذ هثال دیگش تشای ‪ًْ FUNCTION‬یغی دس اکغل هی‬
‫پشداصین ّ دس ًِایت تَ ایي هغالَ کَ چگًَْ هی تْاى تاتؼی سا تشای کلیَ اکغلِایواى‬
‫تؼشیف ًوْد‪ .‬تاتؼی تا فشهْل ثاتت کَ دس تواهی اکغلِای کاهپیْتشهاى ػول ًوایذ‪.‬‬

‫هثال اّل‪:‬‬
‫هی خْاُین تاتؼی تٌْیغین کَ عي افشاد سا تگیشد ّ چٌاًچَ صیش ‪ 11‬عال اعت تگْیذ خیلی‬
‫خْاى‪ ،‬تیي ‪ 11‬تا ‪ 25‬سا هٌاعة ّ تاالی ‪ 25‬عال سا تَ ػٌْاى خیلی پیش هؼشفی‬
‫ًوایذ‪.‬عاختاس چٌیي تاتؼی تَ ؽکل صیش هی تاؽذ‪:‬‬
‫)‪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‬‬

‫‪29 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫هثال دّم‪:‬‬
‫هی خْاُین تشًاهَ ای تٌْیغین کَ دس اتتذا تش زغة ّصى ّقذ افشاد ‪ُ 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‬ؽًْذ‪ ،‬رخیشٍ هی ًوایین‪.‬‬
‫زال ّاسد اکغل خذیذی هی ؽْین‪.‬اص هٌْی ‪ TOOLS‬گضیٌَ ‪ ADD-INS‬سا اًتخاب هی‬
‫کٌین ّ دس پٌدشٍ هْخْد کٌاس تشًاهَ ای کَ ًْؽتَ ؽذٍ اعت سا تیک هی صًین‪.‬اص ُن اکٌْى‬
‫تشًاهَ خذیذ ًْؽتَ ؽذٍ ها تَ ػٌْاى تاتغ ثاتتی دس اکغل هاى قاتل اعتفادٍ اعت‪.‬‬

‫‪30 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫‪ .11‬عولیات بر رّی رشتَ ُا( ‪)STRING‬‬

‫کار با رشتَ ُا)‪(STRING‬‬


‫سؽتَ ُا ػثاسات‪ ،‬دادٍ ُا اػذاد ّ ‪ ...‬هْخْد دس یک تشًاهَ ُغتٌذ‪ .‬دس ایٌدا هی خْاُین‬
‫کاس تا ایي دعتَ اص اغالػات سا تشسعی ًوایین‪ .‬کاس تاسؽتَ ُا اص ایي تاب داسای اُویت‬
‫اعت کَ ها هی تْاًیذ تا تکاس گیشی هفاُین صیش‪ ،‬تش دادٍ ُای هْخْد دس علِای اکغل ّ یا‬
‫‪ ...‬هذیشیت تِتشی اًدام دُین‪ .‬دادٍ ُا سا تفکیک کٌین‪.‬غثقَ تٌذی کٌین یا قغوت خاصی اص‬
‫یک دادٍ سا کَ تشای ها اُویت تیؾتشی داسد‪ ،‬هْسد اعتفادٍ قشاس دُین‪.‬‬

‫الف‪ -‬عولگر &‬


‫چٌاًچَ تخْاُین دّ سؽتَ هْخْد دس یک تشًاهَ سا پؾت عش ُن تیاّسین اص ایي ػولگش‬
‫اعتفادٍ هی ًوایین‪.‬‬
‫هثال اّل‪ :‬تشًاهَ ای خْاُین ًْؽت کَ دس یک ‪ MASSAGE BOX‬دّ ػثاست‬
‫‪ basicّ VISUAL‬سا تَ ُن استثاغ دادٍ ّ ًوایؼ دُذ‪:‬‬
‫)(‪Sub aaa‬‬
‫"‪s1 = "visual basic‬‬
‫"‪s2 = " for aplcation‬‬
‫‪s = s1 & s2‬‬
‫‪MsgBox s‬‬
‫‪End sub‬‬
‫ب‪ -‬کذ ‪ vbnewline‬یا )‪chr(13‬‬
‫ایي ػولگش‪ ،‬ػولیات ‪ inter‬سا دس هسیطی هثل ‪ word‬اًدام هی دُذ‪ .‬تَ ایي هؼٌی کَ‬
‫سؽتَ دّم دس عش تؼذی سؽتَ اّل ًؾاى دادٍ خْاُذ ؽذ‪.‬‬
‫هثال دّم‪:‬هی خْاُین دس یک هغیح تاکظ ػثاست ‪ this class name is VBA‬تَ‬
‫صْستی کَ ػثاست ‪ VBA‬دس صیش ػثاست قثلی قشاس گیشد‪ً ،‬وایؼ دادٍ ؽْد‪.‬‬
‫سؽتَ هْسد ًظش تایغتی تَ ؽکل صیش ًْؽتَ ؽْد‪:‬‬

‫)(‪Sub bbb‬‬
‫"‪s = "this class name is‬‬
‫‪s = s & vbNewLine‬‬
‫"‪s = s & "VBA‬‬
‫‪MsgBox s‬‬
‫‪End Sub‬‬

‫‪31 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫ًکتَ‪ :‬اص ُش یک اص ػثاسات ‪ vbnewline‬یا )‪ chr(13‬هی تْاى خِت اعتفادٍ دس‬


‫تشًاهَ‪ ،‬تِشٍ تشد‪.‬‬

‫ج – تابع ‪LEN:‬‬

‫ایي تاتغ تؼذاد کشکتشُای هْخْد دس سؽتَ ؽوا سا هی ؽواسد‪ .‬تْخَ تَ ایي ًکتَ زائض‬
‫اُویت اعت کَ سؽتَ ؽوا هی تْاًذ دادٍ ُای هْخْد دس یک عل اکغل تاؽذ‪ .‬عاختاس کلی‬
‫تاتغ ‪ LEN‬تَ ؽکل صیش هی تاؽذ‪:‬‬
‫) (‪Len‬‬
‫کَ دس داخل پشاًتض سؽتَ هْسد ًظش ها قشاس خْاُذ گشفت‪.‬‬

‫هثال سْم‪:‬هی خْاُین تؼذاد کشکتش ُای هْخْد دس ًام ‪ Ali Fatehi‬تْعػ تشًاهَ دس‬
‫یک هغیح تاکظ ًوایؼ دادٍ ؽْد‪.‬تشًاهَ هْسد ًظش ها تا اعتفادٍ اص تاتغ تاال هی تایغت‬
‫ؽکلی هاًٌذ صیش داؽتَ تاؽذ‪:‬‬

‫)(‪Sub ccc‬‬
‫)"‪s = Len("ALI FATEHI‬‬
‫‪MsgBox s‬‬
‫‪End Sub‬‬

‫د‪ -‬تابع ‪left-right‬‬


‫ایي تاتغ تَ تشًاهَ هی گْیذ اص عوت چپ یا ساعت سؽتَ ها تؼذادی سا خذا کي ّ تَ ها‬
‫ًؾاى تذٍ‪:‬‬
‫عاختاس کلی ایي تاتغ تَ ؽکل صیش هی تاؽذ‪:‬‬
‫)‪Left(string,i‬‬
‫کَ دس داخل پشًتض اتتذا سؽتَ هْسد ًظش ها ّ عپظ تعذاد کشکتشی کَ اص ایي سؽتَ هی‬
‫تاعت خذا ّ ًوایؼ دادٍ ؽْد‪ ،‬خایگضیي خْاُذ ؽذ‪ .‬ایي دّ دادٍ تا یک ػالهت "‪ ",‬اص ُن‬
‫خذا هی ؽًْذ‪.‬‬

‫هثال چِارم‪:‬هی خْاُین تا اعتفادٍ اص تاتغ فْق‪ ،‬تشًاهَ ای تٌْیغین کَ چِاس سقن عال‬
‫‪ 1359‬دس تاسیخ تغیاس هِن ‪ 1359/12/22‬سا خذا ًوْدٍ ّ ًوایؼ دُذ‪ .‬عاختاس چٌیي‬
‫تشًاهَ ای تَ ؽکل صیش ًْؽتَ خْاُذ ؽذ‪:‬‬
‫)(‪Sub ddd‬‬
‫"‪s = "1359/12/22‬‬
‫)‪t = Left(s, 4‬‬
‫‪MsgBox t‬‬
‫‪End Sub‬‬
‫‪32 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫ٍ‪ -‬تابع ‪: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‬‬

‫‪33 | P a g e‬‬

‫‪www.ParsBook.org‬‬
‫‪VB in Excel‬‬ ‫برنامه نویسی ویژوال بیسیک در محیط اکسل‬

‫ز‪ -‬تابع ‪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‬‬

‫‪34 | P a g e‬‬

‫‪www.ParsBook.org‬‬

You might also like