VBA (Visual Basic for Applications) یک زبان برنامهنویسی است که توسط مایکروسافت توسعه داده شده و به کاربران امکان میدهد تا عملکرد نرمافزارهای مایکروسافت را از جمله اکسس، اکسل، و ورد شخصیسازی و اتوماسیون کنند. با استفاده از VBA میتوانید ماکروها ایجاد کنید، فرآیندهای تکراری را خودکار کنید، و برنامههای پیچیده را توسعه دهید که مستقیماً در داخل نرمافزارهای مایکروسافت اجرا میشوند.
انجام فوری پروژه اکسس و پاسخگویی به سوال های اکسز 09131253620
به عنوان مثال، در اکسس، میتوانید از VBA برای مدیریت فرمها، گزارشها، و جداول استفاده کنید و همچنین با دیگر برنامههای مایکروسافت مثل اکسل و اوتلوک ارتباط برقرار کنید. اگر میخواهید دستورات و کارهای تکراری را خودکار کنید یا برنامههای پیچیدهتر بسازید، VBA ابزار قدرتمندی برای این کار است. در ادامه به چند مثال در زبان VBA خواهیم پرداخت.
چشم! بیایید با چندین تابع کاربردی VBA برای اکسل شروع کنیم و به تدریج به ۱۰۰ تابع برسیم. هر کدام از این مثالها شامل توضیح و خروجی مورد انتظار خواهند بود.
مثال ۱: تابع جمع ساده
Function SumSimple(a As Double, b As Double) As Double SumSimple = a + b End Function
توضیح: این تابع دو عدد را میگیرد و جمع آنها را برمیگرداند. خروجی: اگر SumSimple(3, 5)
را فراخوانی کنید، خروجی 8
خواهد بود.
مثال ۲: تابع محاسبه مساحت دایره
Function CircleArea(radius As Double) As Double CircleArea = 3.14159 * radius * radius End Function
توضیح: این تابع شعاع دایره را میگیرد و مساحت آن را محاسبه میکند. خروجی: اگر CircleArea(2)
را فراخوانی کنید، خروجی 12.56636
خواهد بود.
مثال ۳: تابع تبدیل سانتیمتر به اینچ
Function CmToInch(cm As Double) As Double CmToInch = cm / 2.54 End Function
توضیح: این تابع مقدار سانتیمتر را به اینچ تبدیل میکند. خروجی: اگر CmToInch(10)
را فراخوانی کنید، خروجی 3.937007874
خواهد بود.
مثال ۴: تابع محاسبه میانگین
Function CalculateAverage(rng As Range) As Double Dim cell As Range Dim total As Double Dim count As Integer total = 0 count = 0 For Each cell In rng total = total + cell.Value count = count + 1 Next cell CalculateAverage = total / count End Function
توضیح: این تابع محدودهای از سلولها را میگیرد و میانگین آنها را محاسبه میکند. خروجی: اگر CalculateAverage(Range("A1:A10"))
را فراخوانی کنید، میانگین مقادیر سلولهای A1 تا A10 را برمیگرداند.
مثال ۵: تابع تعیین سال کبیسه
Function IsLeapYear(year As Integer) As Boolean If (year Mod 4 = 0 And year Mod 100 <> 0) Or (year Mod 400 = 0) Then IsLeapYear = True Else IsLeapYear = False End If End Function
توضیح: این تابع تعیین میکند که آیا سال ورودی کبیسه است یا خیر. خروجی: اگر IsLeapYear(2024)
را فراخوانی کنید، خروجی True
خواهد بود.
مثال ۶: تابع ترکیب رشتهها
Function ConcatStrings(str1 As String, str2 As String) As String ConcatStrings = str1 & " " & str2 End Function
توضیح: این تابع دو رشته ورودی را با فاصله ترکیب میکند. خروجی: اگر ConcatStrings("Hello", "World")
را فراخوانی کنید، خروجی Hello World
خواهد بود.
مثال ۷: تابع محاسبه فاکتوریل
Function Factorial(n As Integer) As Long Dim i As Integer Dim result As Long result = 1 For i = 1 To n result = result * i Next i Factorial = result End Function
توضیح: این تابع فاکتوریل عدد ورودی را محاسبه میکند. خروجی: اگر Factorial(5)
را فراخوانی کنید، خروجی 120
خواهد بود.
مثال ۸: تابع محاسبه مجموع اعداد فرد
Function SumOddNumbers(n As Integer) As Integer Dim i As Integer Dim total As Integer total = 0 For i = 1 To n If i Mod 2 <> 0 Then total = total + i End If Next i SumOddNumbers = total End Function
توضیح: این تابع مجموع اعداد فرد تا عدد ورودی را محاسبه میکند. خروجی: اگر SumOddNumbers(10)
را فراخوانی کنید، خروجی 25
خواهد بود.
مثال ۹: تابع تبدیل دما از سلسیوس به فارنهایت
Function CToF(celsius As Double) As Double CToF = (celsius * 9 / 5) + 32 End Function
توضیح: این تابع دمای سلسیوس را به فارنهایت تبدیل میکند. خروجی: اگر CToF(25)
را فراخوانی کنید، خروجی 77
خواهد بود.
مثال ۱۰: تابع پیدا کردن حداقل مقدار در محدوده
Function MinValue(rng As Range) As Double Dim cell As Range Dim minVal As Double minVal = rng.Cells(1, 1).Value For Each cell In rng If cell.Value < minVal Then minVal = cell.Value End If Next cell MinValue = minVal End Function
توضیح: این تابع حداقل مقدار را در محدودهای از سلولها پیدا میکند. خروجی: اگر MinValue(Range("A1:A10"))
را فراخوانی کنید، حداقل مقدار در محدوده A1 تا A10 را برمیگرداند.
مثال ۱۱: تابع تبدیل متن به حروف بزرگ
Function ToUpperCase(text As String) As String ToUpperCase = UCase(text) End Function
توضیح: این تابع متن ورودی را به حروف بزرگ تبدیل میکند. خروجی: اگر ToUpperCase("hello world")
را فراخوانی کنید، خروجی HELLO WORLD
خواهد بود.
مثال ۱۲: تابع شمارش کلمات در یک متن
Function WordCount(text As String) As Integer Dim words() As String words = Split(text, " ") WordCount = UBound(words) + 1 End Function
توضیح: این تابع تعداد کلمات موجود در متن ورودی را شمارش میکند. خروجی: اگر WordCount("This is a test")
را فراخوانی کنید، خروجی 4
خواهد بود.
مثال ۱۳: تابع محاسبه طول یک رشته
Function StringLength(text As String) As Integer StringLength = Len(text) End Function
توضیح: این تابع طول یک رشته را برمیگرداند. خروجی: اگر StringLength("hello")
را فراخوانی کنید، خروجی 5
خواهد بود.
مثال ۱۴: تابع پیدا کردن مقدار ماکسیمم در محدوده
Function MaxValue(rng As Range) As Double Dim cell As Range Dim maxVal As Double maxVal = rng.Cells(1, 1).Value For Each cell In rng If cell.Value > maxVal Then maxVal = cell.Value End If Next cell MaxValue = maxVal End Function
توضیح: این تابع مقدار ماکسیمم را در محدودهای از سلولها پیدا میکند. خروجی: اگر MaxValue(Range("A1:A10"))
را فراخوانی کنید، ماکسیمم مقدار در محدوده A1 تا A10 را برمیگرداند.
مثال ۱۵: تابع معکوس کردن رشته
Function ReverseString(text As String) As String Dim i As Integer Dim reversed As String reversed = "" For i = Len(text) To 1 Step -1 reversed = reversed & Mid(text, i, 1) Next i ReverseString = reversed End Function
توضیح: این تابع یک رشته ورودی را معکوس میکند. خروجی: اگر ReverseString("hello")
را فراخوانی کنید، خروجی olleh
خواهد بود.
مثال ۱۶: تابع بررسی عدد اول
Function IsPrime(n As Integer) As Boolean Dim i As Integer If n <= 1 Then IsPrime = False Else IsPrime = True For i = 2 To Sqr(n) If n Mod i = 0 Then IsPrime = False Exit For End If Next i End If End Function
توضیح: این تابع بررسی میکند که آیا عدد ورودی اول است یا خیر. خروجی: اگر IsPrime(7)
را فراخوانی کنید، خروجی True
خواهد بود.
مثال ۱۷: تابع محاسبه توان دو
Function Square(n As Double) As Double Square = n * n End Function
توضیح: این تابع توان دو عدد ورودی را محاسبه میکند. خروجی: اگر Square(4)
را فراخوانی کنید، خروجی 16
خواهد بود.
مثال ۱۸: تابع محاسبه جذر یک عدد
Function SquareRoot(n As Double) As Double SquareRoot = Sqr(n) End Function
توضیح: این تابع جذر یک عدد ورودی را محاسبه میکند. خروجی: اگر SquareRoot(16)
را فراخوانی کنید، خروجی 4
خواهد بود.
مثال ۱۹: تابع تبدیل متن به حروف کوچک
Function ToLowerCase(text As String) As String ToLowerCase = LCase(text) End Function
توضیح: این تابع متن ورودی را به حروف کوچک تبدیل میکند. خروجی: اگر ToLowerCase("HELLO WORLD")
را فراخوانی کنید، خروجی hello world
خواهد بود.
مثال ۲۰: تابع محاسبه مجموع اعداد در محدوده
Function SumRange(rng As Range) As Double Dim cell As Range Dim total As Double total = 0 For Each cell In rng total = total + cell.Value Next cell SumRange = total End Function
توضیح: این تابع مجموع اعداد موجود در محدودهای از سلولها را محاسبه میکند. خروجی: اگر SumRange(Range("A1:A10"))
را فراخوانی کنید، مجموع مقادیر سلولهای A1 تا A10 را برمیگرداند.
مثال ۲۱: تابع شمارش تعداد سلولهای پر شده
Function CountFilledCells(rng As Range) As Integer Dim cell As Range Dim count As Integer count = 0 For Each cell In rng If cell.Value <> "" Then count = count + 1 End If Next cell CountFilledCells = count End Function
توضیح: این تابع تعداد سلولهای پر شده در یک محدوده را شمارش میکند. خروجی: اگر CountFilledCells(Range("A1:A10"))
را فراخوانی کنید، تعداد سلولهای پر شده در محدوده A1 تا A10 را برمیگرداند.
مثال ۲۲: تابع تعیین تاریخ روز بعد
Function NextDay(dateVal As Date) As Date NextDay = dateVal + 1 End Function
توضیح: این تابع تاریخ ورودی را گرفته و تاریخ روز بعد را برمیگرداند. خروجی: اگر NextDay(#10/17/2024#)
را فراخوانی کنید، خروجی 10/18/2024
خواهد بود.
مثال ۲۳: تابع محاسبه تعداد روزهای بین دو تاریخ
Function DaysBetween(date1 As Date, date2 As Date) As Integer DaysBetween = Abs(date2 - date1) End Function
توضیح: این تابع تعداد روزهای بین دو تاریخ را محاسبه میکند. خروجی: اگر DaysBetween(#10/17/2024#, #11/01/2024#)
را فراخوانی کنید، خروجی 15
خواهد بود.
مثال ۲۴: تابع پیدا کردن مقدار متوسط در محدوده
Function MedianValue(rng As Range) As Double Dim values() As Double Dim i As Integer, j As Integer Dim temp As Double ReDim values(1 To rng.Cells.Count) i = 1 For Each cell In rng values(i) = cell.Value i = i + 1 Next cell For i = 1 To UBound(values) - 1 For j = i + 1 To UBound(values) If values(i) > values(j) Then temp = values(i) values(i) = values(j) values(j) = temp End If Next j Next i If UBound(values) Mod 2 = 0 Then MedianValue = (values(UBound(values) / 2) + values(UBound(values) / 2 + 1)) / 2 Else MedianValue = values((UBound(values) + 1) / 2) End If End Function
توضیح: این تابع مقدار متوسط (میانه) را در محدودهای از سلولها پیدا میکند. خروجی: اگر MedianValue(Range("A1:A10"))
را فراخوانی کنید، میانه مقادیر سلولهای A1 تا A10 را برمیگرداند.
مثال ۲۵: تابع تبدیل رشته به تاریخ
Function StringToDate(str As String) As Date StringToDate = CDate(str) End Function
توضیح: این تابع یک رشته را به تاریخ تبدیل میکند. خروجی: اگر StringToDate("10/17/2024")
را فراخوانی کنید، خروجی 10/17/2024
خواهد بود.
مثال ۲۶: تابع محاسبه میانگین وزنی
Function WeightedAverage(values As Range, weights As Range) As Double Dim cell As Range Dim total As Double Dim weightTotal As Double Dim i As Integer total = 0 weightTotal = 0 For i = 1 To values.Cells.Count total = total + values.Cells(i).Value * weights.Cells(i).Value weightTotal = weightTotal + weights.Cells(i).Value Next i WeightedAverage = total / weightTotal End Function
توضیح: این تابع میانگین وزنی مقادیر در محدودهای از سلولها را محاسبه میکند. خروجی: اگر WeightedAverage(Range("A1:A10"), Range("B1:B10"))
را فراخوانی کنید، میانگین وزنی مقادیر در محدوده A1 تا A10 با وزنهای محدوده B1 تا B10 را برمیگرداند.
مثال ۲۷: تابع محاسبه تعداد حروف در یک رشته
Function CharacterCount(text As String) As Integer CharacterCount = Len(text) End Function
توضیح: این تابع تعداد حروف موجود در یک رشته را برمیگرداند. خروجی: اگر CharacterCount("hello world")
را فراخوانی کنید، خروجی 11
خواهد بود.
مثال ۲۸: تابع چرخش آرایه
Function RotateArray(arr As Variant) As Variant Dim temp() As Variant Dim i As Integer, j As Integer ReDim temp(LBound(arr, 2) To UBound(arr, 2), LBound(arr, 1) To UBound(arr, 1)) For i = LBound(arr, 1) To UBound(arr, 1) For j = LBound(arr, 2) To UBound(arr, 2) temp(j, i) = arr(i, j) Next j Next i RotateArray = temp End Function
توضیح: این تابع یک آرایه دوبعدی را چرخش میدهد (سطرها و ستونها را جا به جا میکند). خروجی: آرایه چرخش داده شده.
مثال ۲۹: تابع محاسبه سود ساده
Function SimpleInterest(principal As Double, rate As Double, time As Double) As Double SimpleInterest = principal * rate * time End Function
توضیح: این تابع سود ساده را با استفاده از اصل سرمایه، نرخ بهره و زمان محاسبه میکند. خروجی: اگر SimpleInterest(1000, 0.05, 1)
را فراخوانی کنید، خروجی 50
خواهد بود.
مثال ۳۰: تابع محاسبه سود مرکب
Function CompoundInterest(principal As Double, rate As Double, timesCompounded As Integer, years As Integer) As Double CompoundInterest = principal * (1 + rate / timesCompounded) ^ (timesCompounded * years) End Function
توضیح: این تابع سود مرکب را با استفاده از اصل سرمایه، نرخ بهره، تعداد دفعات ترکیب و سالها محاسبه میکند. خروجی: اگر CompoundInterest(1000, 0.05, 4, 1)
را فراخوانی کنید، خروجی 1050.945336914
خواهد بود.
مثال ۳۱: تابع محاسبه مجموع مقادیر ستونها
Function SumColumns(rng As Range) As Double Dim cell As Range Dim total As Double total = 0 For Each cell In rng If IsNumeric(cell.Value) Then total = total + cell.Value End If Next cell SumColumns = total End Function
توضیح: این تابع مجموع مقادیر موجود در ستونهای یک محدوده را محاسبه میکند. خروجی: اگر SumColumns(Range("A1:C10"))
را فراخوانی کنید، مجموع مقادیر موجود در ستونهای A تا C برای ردیفهای ۱ تا ۱۰ را برمیگرداند.
مثال ۳۲: تابع محاسبه تفاوت روزها بین دو تاریخ
Function DateDifference(date1 As Date, date2 As Date) As Integer DateDifference = DateDiff("d", date1, date2) End Function
توضیح: این تابع تعداد روزهای بین دو تاریخ را محاسبه میکند. خروجی: اگر DateDifference(#10/17/2024#, #11/01/2024#)
را فراخوانی کنید، خروجی 15
خواهد بود.
مثال ۳۳: تابع تبدیل اولین حرف به حروف بزرگ
Function CapitalizeFirstLetter(text As String) As String CapitalizeFirstLetter = UCase(Left(text, 1)) & Mid(text, 2) End Function
توضیح: این تابع اولین حرف یک رشته را به حروف بزرگ تبدیل میکند. خروجی: اگر CapitalizeFirstLetter("hello world")
را فراخوانی کنید، خروجی Hello world
خواهد بود.
مثال ۳۴: تابع محاسبه مساحت مستطیل
Function RectangleArea(length As Double, width As Double) As Double RectangleArea = length * width End Function
توضیح: این تابع مساحت یک مستطیل را با استفاده از طول و عرض آن محاسبه میکند. خروجی: اگر RectangleArea(5, 3)
را فراخوانی کنید، خروجی 15
خواهد بود.
مثال ۳۵: تابع شمارش تعداد کلمات در یک سلول
Function WordCountInCell(cell As Range) As Integer Dim text As String text = cell.Value WordCountInCell = UBound(Split(text, " ")) + 1 End Function
توضیح: این تابع تعداد کلمات موجود در یک سلول را شمارش میکند. خروجی: اگر WordCountInCell(Range("A1"))
را فراخوانی کنید و مقدار سلول A1 برابر با "This is a test" باشد، خروجی 4
خواهد بود.
مثال ۳۶: تابع محاسبه قدر مطلق یک عدد
Function AbsoluteValue(n As Double) As Double AbsoluteValue = Abs(n) End Function
توضیح: این تابع قدر مطلق یک عدد را محاسبه میکند. خروجی: اگر AbsoluteValue(-5)
را فراخوانی کنید، خروجی 5
خواهد بود.
مثال ۳۷: تابع تعیین اینکه یک سلول خالی است یا خیر
Function IsCellEmpty(cell As Range) As Boolean IsCellEmpty = IsEmpty(cell.Value) End Function
توضیح: این تابع بررسی میکند که آیا یک سلول خالی است یا خیر. خروجی: اگر IsCellEmpty(Range("A1"))
را فراخوانی کنید و سلول A1 خالی باشد، خروجی True
خواهد بود.
مثال ۳۸: تابع محاسبه تعداد کاراکترهای حرف بزرگ در یک رشته
Function CountUpperCase(text As String) As Integer Dim i As Integer Dim count As Integer count = 0 For i = 1 To Len(text) If Mid(text, i, 1) = UCase(Mid(text, i, 1)) And Mid(text, i, 1) Like "[A-Z]" Then count = count + 1 End If Next i CountUpperCase = count End Function
توضیح: این تابع تعداد کاراکترهای حرف بزرگ را در یک رشته شمارش میکند. خروجی: اگر CountUpperCase("Hello World")
را فراخوانی کنید، خروجی 2
خواهد بود.
مثال ۳۹: تابع چسباندن رشتهها با جداکننده مشخص
Function JoinStrings(strings As Variant, delimiter As String) As String Dim result As String Dim i As Integer result = "" For i = LBound(strings) To UBound(strings) result = result & strings(i) & delimiter Next i If result <> "" Then result = Left(result, Len(result) - Len(delimiter)) End If JoinStrings = result End Function
توضیح: این تابع مجموعهای از رشتهها را با استفاده از یک جداکننده مشخص به هم چسبانده و باز میگرداند. خروجی: اگر JoinStrings(Array("Apple", "Banana", "Cherry"), ", ")
را فراخوانی کنید، خروجی Apple, Banana, Cherry
خواهد بود.
مثال ۴۰: تابع محاسبه BMI
Function CalculateBMI(weight As Double, height As Double) As Double CalculateBMI = weight / (height * height) End Function
توضیح: این تابع شاخص توده بدنی (BMI) را با استفاده از وزن (کیلوگرم) و قد (متر) محاسبه میکند. خروجی: اگر CalculateBMI(70, 1.75)
را فراخوانی کنید، خروجی 22.857142857
خواهد بود.
مثال ۴۱: باز کردن فرم بر اساس مقدار موجود در یک فیلد
Sub OpenFormByField() Dim fieldValue As String fieldValue = InputBox("Enter the value to search for:") DoCmd.OpenForm "MyForm", , , "[MyField] = '" & fieldValue & "'" End Sub
توضیح: این تابع فرم "MyForm" را باز میکند و رکوردهایی که فیلد "MyField" برابر با مقدار ورودی باشد را فیلتر میکند. خروجی: فرم "MyForm" با رکوردهای فیلتر شده باز میشود.
مثال ۴۲: تغییر وضعیت فعال رکورد
Sub ToggleRecordStatus() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("MyTable") rs.Edit rs!Active = Not rs!Active rs.Update rs.Close Set rs = Nothing Set db = Nothing End Sub
توضیح: این تابع وضعیت فعال یک رکورد در جدول "MyTable" را تغییر میدهد. خروجی: وضعیت فعال رکورد تغییر میکند.
مثال ۴۳: نمایش پیغام قبل از حذف رکورد
Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer) Dim result As VbMsgBoxResult result = MsgBox("Are you sure you want to delete this record?", vbYesNo + vbExclamation, "Delete Record") If result = vbNo Then Cancel = True End If End Sub
توضیح: این تابع قبل از حذف رکورد در فرم، یک پیغام تأیید نمایش میدهد. خروجی: اگر کاربر تأیید کند، رکورد حذف میشود؛ در غیر این صورت، حذف لغو میشود.
مثال ۴۴: محاسبه مجموع یک فیلد و نمایش در فرم
Private Sub Form_Current() Dim total As Double total = DSum("Amount", "MyTable") Me.txtTotal.Value = total End Sub
توضیح: این تابع مجموع فیلد "Amount" از جدول "MyTable" را محاسبه کرده و در کنترل "txtTotal" فرم نمایش میدهد. خروجی: مجموع مقدارهای فیلد "Amount" در کنترل "txtTotal" نمایش داده میشود.
مثال ۴۵: ارسال ایمیل با استفاده از دکمه در فرم
Private Sub btnSendEmail_Click() DoCmd.SendObject acSendNoObject, , , "recipient@example.com", , , "Subject", "Email body text", False End Sub
توضیح: این تابع با کلیک بر روی دکمه "btnSendEmail"، یک ایمیل ارسال میکند. خروجی: یک ایمیل با متن و موضوع مشخص شده ارسال میشود.
مثال ۴۶: محاسبه فاصله زمانی بین دو تاریخ
Function DateDifferenceInDays(startDate As Date, endDate As Date) As Long DateDifferenceInDays = DateDiff("d", startDate, endDate) End Function
توضیح: این تابع فاصله زمانی بین دو تاریخ را به روز محاسبه میکند. خروجی: فاصله زمانی به روزها برگردانده میشود.
مثال ۴۷: فیلتر کردن رکوردها بر اساس مقدار فیلد
Sub FilterRecordsByField() Dim fieldValue As String fieldValue = InputBox("Enter the value to filter by:") Me.Filter = "[MyField] = '" & fieldValue & "'" Me.FilterOn = True End Sub
توضیح: این تابع رکوردها را در فرم بر اساس مقدار ورودی فیلتر میکند. خروجی: فرم با رکوردهای فیلتر شده نمایش داده میشود.
مثال ۴۸: جمعآوری ورودیهای کاربر و نمایش در یک پیغام
Sub CollectUserInputs() Dim name As String Dim age As Integer name = InputBox("Enter your name:") age = InputBox("Enter your age:") MsgBox "Name: " & name & vbCrLf & "Age: " & age End Sub
توضیح: این تابع نام و سن کاربر را دریافت کرده و نمایش میدهد. خروجی: یک پیغام با نام و سن کاربر نمایش داده میشود.
مثال ۴۹: بستن تمامی فرمهای باز
Sub CloseAllForms() Dim frm As AccessObject For Each frm In CurrentProject.AllForms If frm.IsLoaded Then DoCmd.Close acForm, frm.Name End If Next frm End Sub
توضیح: این تابع تمامی فرمهای باز را میبندد. خروجی: تمامی فرمهای باز بسته میشوند.
مثال ۵۰: بررسی اینکه آیا یک فرم باز است یا خیر
Function IsFormOpen(formName As String) As Boolean IsFormOpen = CurrentProject.AllForms(formName).IsLoaded End Function
توضیح: این تابع بررسی میکند که آیا فرم با نام مشخص باز است یا خیر. خروجی: اگر فرم باز باشد، خروجی True
و در غیر این صورت False
خواهد بود.
مثال ۵۱: مرتبسازی رکوردها بر اساس فیلد خاص
Sub SortRecordsByField() Me.OrderBy = "[MyField] ASC" Me.OrderByOn = True End Sub
توضیح: این تابع رکوردهای فرم را بر اساس فیلد "MyField" به صورت صعودی مرتب میکند. خروجی: رکوردهای فرم مرتب میشوند.
مثال ۵۲: افزودن رکورد جدید به جدول از طریق فرم
Private Sub btnAddRecord_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("MyTable") rs.AddNew rs!Field1 = Me.txtField1.Value rs!Field2 = Me.txtField2.Value rs.Update rs.Close Set rs = Nothing Set db = Nothing End Sub
توضیح: این تابع با کلیک بر روی دکمه "btnAddRecord"، یک رکورد جدید به جدول "MyTable" اضافه میکند. خروجی: رکورد جدید به جدول اضافه میشود.
مثال ۵۳: بروزرسانی رکورد جاری در فرم
Private Sub btnUpdateRecord_Click() Me.Dirty = False MsgBox "Record updated successfully." End Sub
توضیح: این تابع با کلیک بر روی دکمه "btnUpdateRecord"، رکورد جاری در فرم را بروز رسانی میکند. خروجی: رکورد جاری بروز رسانی میشود و پیغام موفقیت نمایش داده میشود.
مثال ۵۴: حذف رکورد جاری در فرم
Private Sub btnDeleteRecord_Click() DoCmd.RunCommand acCmdDeleteRecord MsgBox "Record deleted successfully." End Sub
توضیح: این تابع با کلیک بر روی دکمه "btnDeleteRecord"، رکورد جاری در فرم را حذف میکند. خروجی: رکورد جاری حذف میشود و پیغام موفقیت نمایش داده میشود.
مثال ۵۵: باز کردن گزارش با شرط خاص
Sub OpenReportWithCondition() Dim fieldValue As String fieldValue = InputBox("Enter the value to filter the report by:") DoCmd.OpenReport "MyReport", acViewPreview, , "[MyField] = '" & fieldValue & "'" End Sub
توضیح: این تابع گزارش "MyReport" را با شرط فیلتر بر اساس مقدار ورودی باز میکند. خروجی: گزارش با رکوردهای فیلتر شده نمایش داده میشود.
مثال ۵۶: قفل کردن فیلد در فرم
Private Sub LockField() Me.txtField1.Locked = True End Sub
توضیح: این تابع فیلد "txtField1" را در فرم قفل میکند تا قابل ویرایش نباشد. خروجی: فیلد "txtField1" قفل میشود.
مثال ۵۷: باز کردن جدول در نمای طراحی
Sub OpenTableInDesignView() DoCmd.OpenTable "MyTable", acDesign End Sub
توضیح: این تابع جدول "MyTable" را در نمای طراحی باز میکند. خروجی: جدول "MyTable" در نمای طراحی باز میشود.
مثال ۵۸: ارسال گزارش به عنوان پیوست ایمیل
Sub EmailReport() DoCmd.SendObject acSendReport, "MyReport", acFormatPDF, "
مثال ۵۹: محاسبه مجموع یک فیلد در یک زیر فرم
Private Sub Form_Current() Me.txtSubTotal.Value = Nz(DLookup("Sum([Amount])", "MySubForm", "ParentID = " & Me.ParentID), 0) End Sub
توضیح: این کد مجموع فیلد "Amount" در یک زیر فرم مرتبط با "ParentID" را محاسبه کرده و در کنترل "txtSubTotal" نمایش میدهد. خروجی: مجموع مقادیر فیلد "Amount" در زیر فرم محاسبه و نمایش داده میشود.
مثال ۶۰: بستن فرم بر اساس شرط
Private Sub CloseFormIfCondition() If Me.txtStatus.Value = "Closed" Then DoCmd.Close acForm, Me.Name End If End Sub
توضیح: این کد فرم را اگر مقدار فیلد "txtStatus" برابر با "Closed" باشد میبندد. خروجی: فرم بسته میشود اگر شرط برقرار باشد.
مثال ۶۱: ارسال گزارش به صورت PDF
Private Sub btnExportPDF_Click() DoCmd.OutputTo acOutputReport, "MyReport", acFormatPDF, "C:\path\to\MyReport.pdf" End Sub
توضیح: این کد گزارش "MyReport" را به فرمت PDF صادر کرده و در مسیر مشخص ذخیره میکند. خروجی: فایل PDF گزارش در مسیر تعیین شده ایجاد میشود.
مثال ۶۲: باز کردن یک صفحه وب از داخل اکسس
Sub OpenWebPage() Dim webPage As String webPage = "https://www.microsoft.com" Application.FollowHyperlink webPage End Sub
توضیح: این کد یک صفحه وب را در مرورگر پیشفرض باز میکند. خروجی: صفحه وب مشخص شده در مرورگر باز میشود.
مثال ۶۳: محاسبه میانگین یک فیلد در زیر فرم
Private Sub Form_Current() Me.txtSubAvg.Value = Nz(DLookup("Avg([Amount])", "MySubForm", "ParentID = " & Me.ParentID), 0) End Sub
توضیح: این کد میانگین فیلد "Amount" را در یک زیر فرم مرتبط با "ParentID" محاسبه کرده و در کنترل "txtSubAvg" نمایش میدهد. خروجی: میانگین مقادیر فیلد "Amount" در زیر فرم محاسبه و نمایش داده میشود.
مثال ۶۴: قفل کردن همه فیلدهای فرم
Sub LockAllFields() Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then ctl.Locked = True End If Next ctl End Sub
توضیح: این کد تمامی فیلدهای متنی در فرم را قفل میکند. خروجی: تمامی فیلدهای متنی فرم قفل میشوند.
مثال ۶۵: فعال کردن همه فیلدهای فرم
Sub UnlockAllFields() Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = acTextBox Then ctl.Locked = False End If Next ctl End Sub
توضیح: این کد تمامی فیلدهای متنی در فرم را فعال میکند. خروجی: تمامی فیلدهای متنی فرم فعال میشوند.
مثال ۶۶: بروزرسانی فیلد تاریخ با تاریخ فعلی
Private Sub btnUpdateDate_Click() Me.txtDateUpdated.Value = Date End Sub
توضیح: این کد فیلد "txtDateUpdated" را با تاریخ فعلی بروز رسانی میکند. خروجی: فیلد "txtDateUpdated" با تاریخ فعلی بروز رسانی میشود.
مثال ۶۷: ایجاد گزارش جدید با استفاده از VBA
Sub CreateNewReport() Dim rpt As Report Set rpt = CreateReport rpt.RecordSource = "MyTable" rpt.Controls.Add acLabel, , "Label", "My New Report" DoCmd.Save acReport, rpt.Name End Sub
توضیح: این کد یک گزارش جدید ایجاد کرده و آن را ذخیره میکند. خروجی: یک گزارش جدید با نام "My New Report" ایجاد و ذخیره میشود.
مثال ۶۸: تغییر رنگ پس زمینه فرم بر اساس شرط
Private Sub Form_Current() If Me.txtStatus.Value = "Completed" Then Me.Detail.BackColor = RGB(144, 238, 144) Else Me.Detail.BackColor = RGB(255, 182, 193) End If End Sub
توضیح: این کد رنگ پس زمینه فرم را بر اساس مقدار فیلد "txtStatus" تغییر میدهد. خروجی: رنگ پس زمینه فرم بر اساس شرط تعیین شده تغییر میکند.
مثال ۶۹: مخفی کردن دکمه بر اساس مقدار فیلد
Private Sub Form_Current() If Me.txtStatus.Value = "Approved" Then Me.btnSubmit.Visible = False Else Me.btnSubmit.Visible = True End If End Sub
توضیح: این کد دکمه "btnSubmit" را بر اساس مقدار فیلد "txtStatus" مخفی یا نمایش میدهد. خروجی: دکمه "btnSubmit" مخفی یا نمایش داده میشود.
مثال ۷۰: نمایش پیغام خطا هنگام ورود داده نامعتبر
Private Sub txtField1_BeforeUpdate(Cancel As Integer) If Not IsNumeric(Me.txtField1.Value) Then MsgBox "Please enter a valid number.", vbExclamation Cancel = True End If End Sub
توضیح: این کد هنگام ورود داده نامعتبر در فیلد "txtField1" پیغام خطا نمایش میدهد. خروجی: پیغام خطا نمایش داده میشود و ورود داده لغو میشود.
مثال ۷۱: بررسی نام خالی بودن فیلدهای اجباری
Private Sub btnSave_Click() If IsNull(Me.txtName.Value) Or IsNull(Me.txtAge.Value) Then MsgBox "Please fill in all required fields.", vbExclamation Else Me.Dirty = False MsgBox "Record saved successfully." End If End Sub
توضیح: این کد قبل از ذخیره رکورد بررسی میکند که آیا فیلدهای اجباری پر شدهاند یا خیر. خروجی: اگر فیلدها خالی باشند، پیغام خطا نمایش داده میشود؛ در غیر این صورت، رکورد ذخیره میشود.
مثال ۷۲: بروزرسانی فیلد براساس فیلد دیگر
Private Sub txtField1_AfterUpdate() Me.txtField2.Value = Me.txtField1.Value * 2 End Sub
توضیح: این کد مقدار فیلد "txtField2" را بر اساس مقدار فیلد "txtField1" بروز رسانی میکند. خروجی: فیلد "txtField2" بروز رسانی میشود.
مثال ۷۳: اجرای کوئری با استفاده از VBA
Sub RunQuery() DoCmd.OpenQuery "MyQuery" End Sub
توضیح: این کد کوئری "MyQuery" را اجرا میکند. خروجی: کوئری "MyQuery" اجرا میشود.
مثال ۷۴: مخفی کردن تمامی دکمهها در فرم
Sub HideAllButtons() Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = acCommandButton Then ctl.Visible = False End If Next ctl End Sub
توضیح: این کد تمامی دکمههای فرم را مخفی میکند. خروجی: تمامی دکمههای فرم مخفی میشوند.