آموزش VBA در اکسز

آموزش VBA در اکسس

توسط admin | گروه آموزش اکسس Microsoft access | 1403/07/27

نظرات 0

 VBA (Visual Basic for Applications) یک زبان برنامه‌نویسی است که توسط مایکروسافت توسعه داده شده و به کاربران امکان می‌دهد تا عملکرد نرم‌افزارهای مایکروسافت را از جمله اکسس، اکسل، و ورد شخصی‌سازی و اتوماسیون کنند. با استفاده از VBA می‌توانید ماکروها ایجاد کنید، فرآیندهای تکراری را خودکار کنید، و برنامه‌های پیچیده را توسعه دهید که مستقیماً در داخل نرم‌افزارهای مایکروسافت اجرا می‌شوند.

انجام فوری پروژه اکسس و پاسخگویی به سوال های اکسز 09131253620

به عنوان مثال، در اکسس، می‌توانید از VBA برای مدیریت فرم‌ها، گزارش‌ها، و جداول استفاده کنید و همچنین با دیگر برنامه‌های مایکروسافت مثل اکسل و اوت‌لوک ارتباط برقرار کنید. اگر می‌خواهید دستورات و کارهای تکراری را خودکار کنید یا برنامه‌های پیچیده‌تر بسازید، VBA ابزار قدرتمندی برای این کار است. در ادامه به چند مثال در زبان VBA خواهیم پرداخت.

چشم! بیایید با چندین تابع کاربردی VBA برای اکسل شروع کنیم و به تدریج به ۱۰۰ تابع برسیم. هر کدام از این مثال‌ها شامل توضیح و خروجی مورد انتظار خواهند بود.

مثال ۱: تابع جمع ساده

vba
Function SumSimple(a As Double, b As Double) As Double     SumSimple = a + b End Function 

توضیح: این تابع دو عدد را می‌گیرد و جمع آنها را برمی‌گرداند. خروجی: اگر SumSimple(3, 5) را فراخوانی کنید، خروجی 8 خواهد بود.

مثال ۲: تابع محاسبه مساحت دایره

vba
Function CircleArea(radius As Double) As Double     CircleArea = 3.14159 * radius * radius End Function 

توضیح: این تابع شعاع دایره را می‌گیرد و مساحت آن را محاسبه می‌کند. خروجی: اگر CircleArea(2) را فراخوانی کنید، خروجی 12.56636 خواهد بود.

مثال ۳: تابع تبدیل سانتی‌متر به اینچ

vba
Function CmToInch(cm As Double) As Double     CmToInch = cm / 2.54 End Function 

توضیح: این تابع مقدار سانتی‌متر را به اینچ تبدیل می‌کند. خروجی: اگر CmToInch(10) را فراخوانی کنید، خروجی 3.937007874 خواهد بود.

مثال ۴: تابع محاسبه میانگین

vba
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 را برمی‌گرداند.

مثال ۵: تابع تعیین سال کبیسه

vba
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 خواهد بود.

مثال ۶: تابع ترکیب رشته‌ها

vba
Function ConcatStrings(str1 As String, str2 As String) As String     ConcatStrings = str1 & " " & str2 End Function 

توضیح: این تابع دو رشته ورودی را با فاصله ترکیب می‌کند. خروجی: اگر ConcatStrings("Hello", "World") را فراخوانی کنید، خروجی Hello World خواهد بود.

مثال ۷: تابع محاسبه فاکتوریل

vba
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 خواهد بود.

مثال ۸: تابع محاسبه مجموع اعداد فرد

vba
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 خواهد بود.

مثال ۹: تابع تبدیل دما از سلسیوس به فارنهایت

vba
Function CToF(celsius As Double) As Double     CToF = (celsius * 9 / 5) + 32 End Function 

توضیح: این تابع دمای سلسیوس را به فارنهایت تبدیل می‌کند. خروجی: اگر CToF(25) را فراخوانی کنید، خروجی 77 خواهد بود.

مثال ۱۰: تابع پیدا کردن حداقل مقدار در محدوده

vba
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 را برمی‌گرداند.

مثال ۱۱: تابع تبدیل متن به حروف بزرگ

vba
Function ToUpperCase(text As String) As String     ToUpperCase = UCase(text) End Function 

توضیح: این تابع متن ورودی را به حروف بزرگ تبدیل می‌کند. خروجی: اگر ToUpperCase("hello world") را فراخوانی کنید، خروجی HELLO WORLD خواهد بود.

مثال ۱۲: تابع شمارش کلمات در یک متن

vba
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 خواهد بود.

مثال ۱۳: تابع محاسبه طول یک رشته

vba
Function StringLength(text As String) As Integer     StringLength = Len(text) End Function 

توضیح: این تابع طول یک رشته را برمی‌گرداند. خروجی: اگر StringLength("hello") را فراخوانی کنید، خروجی 5 خواهد بود.

مثال ۱۴: تابع پیدا کردن مقدار ماکسیمم در محدوده

vba
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 را برمی‌گرداند.

مثال ۱۵: تابع معکوس کردن رشته

vba
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 خواهد بود.

مثال ۱۶: تابع بررسی عدد اول

vba
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 خواهد بود.

مثال ۱۷: تابع محاسبه توان دو

vba
Function Square(n As Double) As Double     Square = n * n End Function 

توضیح: این تابع توان دو عدد ورودی را محاسبه می‌کند. خروجی: اگر Square(4) را فراخوانی کنید، خروجی 16 خواهد بود.

مثال ۱۸: تابع محاسبه جذر یک عدد

vba
Function SquareRoot(n As Double) As Double     SquareRoot = Sqr(n) End Function 

توضیح: این تابع جذر یک عدد ورودی را محاسبه می‌کند. خروجی: اگر SquareRoot(16) را فراخوانی کنید، خروجی 4 خواهد بود.

مثال ۱۹: تابع تبدیل متن به حروف کوچک

vba
Function ToLowerCase(text As String) As String     ToLowerCase = LCase(text) End Function 

توضیح: این تابع متن ورودی را به حروف کوچک تبدیل می‌کند. خروجی: اگر ToLowerCase("HELLO WORLD") را فراخوانی کنید، خروجی hello world خواهد بود.

مثال ۲۰: تابع محاسبه مجموع اعداد در محدوده

vba
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 را برمی‌گرداند.

مثال ۲۱: تابع شمارش تعداد سلول‌های پر شده

vba
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 را برمی‌گرداند.

مثال ۲۲: تابع تعیین تاریخ روز بعد

vba
Function NextDay(dateVal As Date) As Date     NextDay = dateVal + 1 End Function 

توضیح: این تابع تاریخ ورودی را گرفته و تاریخ روز بعد را برمی‌گرداند. خروجی: اگر NextDay(#10/17/2024#) را فراخوانی کنید، خروجی 10/18/2024 خواهد بود.

مثال ۲۳: تابع محاسبه تعداد روزهای بین دو تاریخ

vba
Function DaysBetween(date1 As Date, date2 As Date) As Integer     DaysBetween = Abs(date2 - date1) End Function 

توضیح: این تابع تعداد روزهای بین دو تاریخ را محاسبه می‌کند. خروجی: اگر DaysBetween(#10/17/2024#, #11/01/2024#) را فراخوانی کنید، خروجی 15 خواهد بود.

مثال ۲۴: تابع پیدا کردن مقدار متوسط در محدوده

vba
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 را برمی‌گرداند.

مثال ۲۵: تابع تبدیل رشته به تاریخ

vba
Function StringToDate(str As String) As Date     StringToDate = CDate(str) End Function 

توضیح: این تابع یک رشته را به تاریخ تبدیل می‌کند. خروجی: اگر StringToDate("10/17/2024") را فراخوانی کنید، خروجی 10/17/2024 خواهد بود.

مثال ۲۶: تابع محاسبه میانگین وزنی

vba
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 را برمی‌گرداند.

مثال ۲۷: تابع محاسبه تعداد حروف در یک رشته

vba
Function CharacterCount(text As String) As Integer     CharacterCount = Len(text) End Function 

توضیح: این تابع تعداد حروف موجود در یک رشته را برمی‌گرداند. خروجی: اگر CharacterCount("hello world") را فراخوانی کنید، خروجی 11 خواهد بود.

مثال ۲۸: تابع چرخش آرایه

vba
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 

توضیح: این تابع یک آرایه دوبعدی را چرخش می‌دهد (سطرها و ستون‌ها را جا به جا می‌کند). خروجی: آرایه چرخش داده شده.

مثال ۲۹: تابع محاسبه سود ساده

vba
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 خواهد بود.

مثال ۳۰: تابع محاسبه سود مرکب

vba
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 خواهد بود.

مثال ۳۱: تابع محاسبه مجموع مقادیر ستون‌ها

vba
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 برای ردیف‌های ۱ تا ۱۰ را برمی‌گرداند.

مثال ۳۲: تابع محاسبه تفاوت روزها بین دو تاریخ

vba
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 خواهد بود.

مثال ۳۳: تابع تبدیل اولین حرف به حروف بزرگ

vba
Function CapitalizeFirstLetter(text As String) As String     CapitalizeFirstLetter = UCase(Left(text, 1)) & Mid(text, 2) End Function 

توضیح: این تابع اولین حرف یک رشته را به حروف بزرگ تبدیل می‌کند. خروجی: اگر CapitalizeFirstLetter("hello world") را فراخوانی کنید، خروجی Hello world خواهد بود.

مثال ۳۴: تابع محاسبه مساحت مستطیل

vba
Function RectangleArea(length As Double, width As Double) As Double     RectangleArea = length * width End Function 

توضیح: این تابع مساحت یک مستطیل را با استفاده از طول و عرض آن محاسبه می‌کند. خروجی: اگر RectangleArea(5, 3) را فراخوانی کنید، خروجی 15 خواهد بود.

مثال ۳۵: تابع شمارش تعداد کلمات در یک سلول

vba
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 خواهد بود.

مثال ۳۶: تابع محاسبه قدر مطلق یک عدد

vba
Function AbsoluteValue(n As Double) As Double     AbsoluteValue = Abs(n) End Function 

توضیح: این تابع قدر مطلق یک عدد را محاسبه می‌کند. خروجی: اگر AbsoluteValue(-5) را فراخوانی کنید، خروجی 5 خواهد بود.

مثال ۳۷: تابع تعیین اینکه یک سلول خالی است یا خیر

vba
Function IsCellEmpty(cell As Range) As Boolean     IsCellEmpty = IsEmpty(cell.Value) End Function 

توضیح: این تابع بررسی می‌کند که آیا یک سلول خالی است یا خیر. خروجی: اگر IsCellEmpty(Range("A1")) را فراخوانی کنید و سلول A1 خالی باشد، خروجی True خواهد بود.

مثال ۳۸: تابع محاسبه تعداد کاراکترهای حرف بزرگ در یک رشته

vba
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 خواهد بود.

مثال ۳۹: تابع چسباندن رشته‌ها با جداکننده مشخص

vba
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

vba
Function CalculateBMI(weight As Double, height As Double) As Double     CalculateBMI = weight / (height * height) End Function 

 

توضیح: این تابع شاخص توده بدنی (BMI) را با استفاده از وزن (کیلوگرم) و قد (متر) محاسبه می‌کند. خروجی: اگر CalculateBMI(70, 1.75) را فراخوانی کنید، خروجی 22.857142857 خواهد بود.

مثال ۴۱: باز کردن فرم بر اساس مقدار موجود در یک فیلد

vba
Sub OpenFormByField()     Dim fieldValue As String     fieldValue = InputBox("Enter the value to search for:")     DoCmd.OpenForm "MyForm", , , "[MyField] = '" & fieldValue & "'" End Sub 

توضیح: این تابع فرم "MyForm" را باز می‌کند و رکوردهایی که فیلد "MyField" برابر با مقدار ورودی باشد را فیلتر می‌کند. خروجی: فرم "MyForm" با رکوردهای فیلتر شده باز می‌شود.

مثال ۴۲: تغییر وضعیت فعال رکورد

vba
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" را تغییر می‌دهد. خروجی: وضعیت فعال رکورد تغییر می‌کند.

مثال ۴۳: نمایش پیغام قبل از حذف رکورد

vba
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 

توضیح: این تابع قبل از حذف رکورد در فرم، یک پیغام تأیید نمایش می‌دهد. خروجی: اگر کاربر تأیید کند، رکورد حذف می‌شود؛ در غیر این صورت، حذف لغو می‌شود.

مثال ۴۴: محاسبه مجموع یک فیلد و نمایش در فرم

vba
Private Sub Form_Current()     Dim total As Double     total = DSum("Amount", "MyTable")     Me.txtTotal.Value = total End Sub 

توضیح: این تابع مجموع فیلد "Amount" از جدول "MyTable" را محاسبه کرده و در کنترل "txtTotal" فرم نمایش می‌دهد. خروجی: مجموع مقدارهای فیلد "Amount" در کنترل "txtTotal" نمایش داده می‌شود.

مثال ۴۵: ارسال ایمیل با استفاده از دکمه در فرم

vba
Private Sub btnSendEmail_Click()     DoCmd.SendObject acSendNoObject, , , "recipient@example.com", , , "Subject", "Email body text", False End Sub 

توضیح: این تابع با کلیک بر روی دکمه "btnSendEmail"، یک ایمیل ارسال می‌کند. خروجی: یک ایمیل با متن و موضوع مشخص شده ارسال می‌شود.

مثال ۴۶: محاسبه فاصله زمانی بین دو تاریخ

vba
Function DateDifferenceInDays(startDate As Date, endDate As Date) As Long     DateDifferenceInDays = DateDiff("d", startDate, endDate) End Function 

توضیح: این تابع فاصله زمانی بین دو تاریخ را به روز محاسبه می‌کند. خروجی: فاصله زمانی به روزها برگردانده می‌شود.

مثال ۴۷: فیلتر کردن رکوردها بر اساس مقدار فیلد

vba
Sub FilterRecordsByField()     Dim fieldValue As String     fieldValue = InputBox("Enter the value to filter by:")     Me.Filter = "[MyField] = '" & fieldValue & "'"     Me.FilterOn = True End Sub 

توضیح: این تابع رکوردها را در فرم بر اساس مقدار ورودی فیلتر می‌کند. خروجی: فرم با رکوردهای فیلتر شده نمایش داده می‌شود.

مثال ۴۸: جمع‌آوری ورودی‌های کاربر و نمایش در یک پیغام

vba
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 

توضیح: این تابع نام و سن کاربر را دریافت کرده و نمایش می‌دهد. خروجی: یک پیغام با نام و سن کاربر نمایش داده می‌شود.

مثال ۴۹: بستن تمامی فرم‌های باز

vba
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 

توضیح: این تابع تمامی فرم‌های باز را می‌بندد. خروجی: تمامی فرم‌های باز بسته می‌شوند.

مثال ۵۰: بررسی اینکه آیا یک فرم باز است یا خیر

vba
Function IsFormOpen(formName As String) As Boolean     IsFormOpen = CurrentProject.AllForms(formName).IsLoaded End Function 

توضیح: این تابع بررسی می‌کند که آیا فرم با نام مشخص باز است یا خیر. خروجی: اگر فرم باز باشد، خروجی True و در غیر این صورت False خواهد بود.

مثال ۵۱: مرتب‌سازی رکوردها بر اساس فیلد خاص

vba
Sub SortRecordsByField()     Me.OrderBy = "[MyField] ASC"     Me.OrderByOn = True End Sub 

توضیح: این تابع رکوردهای فرم را بر اساس فیلد "MyField" به صورت صعودی مرتب می‌کند. خروجی: رکوردهای فرم مرتب می‌شوند.

مثال ۵۲: افزودن رکورد جدید به جدول از طریق فرم

vba
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" اضافه می‌کند. خروجی: رکورد جدید به جدول اضافه می‌شود.

مثال ۵۳: بروزرسانی رکورد جاری در فرم

vba
Private Sub btnUpdateRecord_Click()     Me.Dirty = False     MsgBox "Record updated successfully." End Sub 

توضیح: این تابع با کلیک بر روی دکمه "btnUpdateRecord"، رکورد جاری در فرم را بروز رسانی می‌کند. خروجی: رکورد جاری بروز رسانی می‌شود و پیغام موفقیت نمایش داده می‌شود.

مثال ۵۴: حذف رکورد جاری در فرم

vba
Private Sub btnDeleteRecord_Click()     DoCmd.RunCommand acCmdDeleteRecord     MsgBox "Record deleted successfully." End Sub 

توضیح: این تابع با کلیک بر روی دکمه "btnDeleteRecord"، رکورد جاری در فرم را حذف می‌کند. خروجی: رکورد جاری حذف می‌شود و پیغام موفقیت نمایش داده می‌شود.

مثال ۵۵: باز کردن گزارش با شرط خاص

vba
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" را با شرط فیلتر بر اساس مقدار ورودی باز می‌کند. خروجی: گزارش با رکوردهای فیلتر شده نمایش داده می‌شود.

مثال ۵۶: قفل کردن فیلد در فرم

vba
Private Sub LockField()     Me.txtField1.Locked = True End Sub 

توضیح: این تابع فیلد "txtField1" را در فرم قفل می‌کند تا قابل ویرایش نباشد. خروجی: فیلد "txtField1" قفل می‌شود.

مثال ۵۷: باز کردن جدول در نمای طراحی

vba
Sub OpenTableInDesignView()     DoCmd.OpenTable "MyTable", acDesign End Sub 

توضیح: این تابع جدول "MyTable" را در نمای طراحی باز می‌کند. خروجی: جدول "MyTable" در نمای طراحی باز می‌شود.

مثال ۵۸: ارسال گزارش به عنوان پیوست ایمیل

vba

 

Sub EmailReport()     DoCmd.SendObject acSendReport, "MyReport", acFormatPDF, "  

مثال ۵۹: محاسبه مجموع یک فیلد در یک زیر فرم

 

vba
Private Sub Form_Current()     Me.txtSubTotal.Value = Nz(DLookup("Sum([Amount])", "MySubForm", "ParentID = " & Me.ParentID), 0) End Sub 

توضیح: این کد مجموع فیلد "Amount" در یک زیر فرم مرتبط با "ParentID" را محاسبه کرده و در کنترل "txtSubTotal" نمایش می‌دهد. خروجی: مجموع مقادیر فیلد "Amount" در زیر فرم محاسبه و نمایش داده می‌شود.

مثال ۶۰: بستن فرم بر اساس شرط

vba
Private Sub CloseFormIfCondition()     If Me.txtStatus.Value = "Closed" Then         DoCmd.Close acForm, Me.Name     End If End Sub 

توضیح: این کد فرم را اگر مقدار فیلد "txtStatus" برابر با "Closed" باشد می‌بندد. خروجی: فرم بسته می‌شود اگر شرط برقرار باشد.

مثال ۶۱: ارسال گزارش به صورت PDF

vba
Private Sub btnExportPDF_Click()     DoCmd.OutputTo acOutputReport, "MyReport", acFormatPDF, "C:\path\to\MyReport.pdf" End Sub 

توضیح: این کد گزارش "MyReport" را به فرمت PDF صادر کرده و در مسیر مشخص ذخیره می‌کند. خروجی: فایل PDF گزارش در مسیر تعیین شده ایجاد می‌شود.

مثال ۶۲: باز کردن یک صفحه وب از داخل اکسس

vba
Sub OpenWebPage()     Dim webPage As String     webPage = "https://www.microsoft.com"     Application.FollowHyperlink webPage End Sub 

توضیح: این کد یک صفحه وب را در مرورگر پیش‌فرض باز می‌کند. خروجی: صفحه وب مشخص شده در مرورگر باز می‌شود.

مثال ۶۳: محاسبه میانگین یک فیلد در زیر فرم

vba
Private Sub Form_Current()     Me.txtSubAvg.Value = Nz(DLookup("Avg([Amount])", "MySubForm", "ParentID = " & Me.ParentID), 0) End Sub 

توضیح: این کد میانگین فیلد "Amount" را در یک زیر فرم مرتبط با "ParentID" محاسبه کرده و در کنترل "txtSubAvg" نمایش می‌دهد. خروجی: میانگین مقادیر فیلد "Amount" در زیر فرم محاسبه و نمایش داده می‌شود.

مثال ۶۴: قفل کردن همه فیلدهای فرم

vba
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 

توضیح: این کد تمامی فیلدهای متنی در فرم را قفل می‌کند. خروجی: تمامی فیلدهای متنی فرم قفل می‌شوند.

مثال ۶۵: فعال کردن همه فیلدهای فرم

vba
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 

توضیح: این کد تمامی فیلدهای متنی در فرم را فعال می‌کند. خروجی: تمامی فیلدهای متنی فرم فعال می‌شوند.

مثال ۶۶: بروزرسانی فیلد تاریخ با تاریخ فعلی

vba
Private Sub btnUpdateDate_Click()     Me.txtDateUpdated.Value = Date End Sub 

توضیح: این کد فیلد "txtDateUpdated" را با تاریخ فعلی بروز رسانی می‌کند. خروجی: فیلد "txtDateUpdated" با تاریخ فعلی بروز رسانی می‌شود.

مثال ۶۷: ایجاد گزارش جدید با استفاده از VBA

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" ایجاد و ذخیره می‌شود.

مثال ۶۸: تغییر رنگ پس زمینه فرم بر اساس شرط

vba
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" تغییر می‌دهد. خروجی: رنگ پس زمینه فرم بر اساس شرط تعیین شده تغییر می‌کند.

مثال ۶۹: مخفی کردن دکمه بر اساس مقدار فیلد

vba
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" مخفی یا نمایش داده می‌شود.

مثال ۷۰: نمایش پیغام خطا هنگام ورود داده نامعتبر

vba
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" پیغام خطا نمایش می‌دهد. خروجی: پیغام خطا نمایش داده می‌شود و ورود داده لغو می‌شود.

مثال ۷۱: بررسی نام خالی بودن فیلدهای اجباری

vba
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 

توضیح: این کد قبل از ذخیره رکورد بررسی می‌کند که آیا فیلدهای اجباری پر شده‌اند یا خیر. خروجی: اگر فیلدها خالی باشند، پیغام خطا نمایش داده می‌شود؛ در غیر این صورت، رکورد ذخیره می‌شود.

مثال ۷۲: بروزرسانی فیلد براساس فیلد دیگر

vba
Private Sub txtField1_AfterUpdate()     Me.txtField2.Value = Me.txtField1.Value * 2 End Sub 

توضیح: این کد مقدار فیلد "txtField2" را بر اساس مقدار فیلد "txtField1" بروز رسانی می‌کند. خروجی: فیلد "txtField2" بروز رسانی می‌شود.

مثال ۷۳: اجرای کوئری با استفاده از VBA

vba
Sub RunQuery()     DoCmd.OpenQuery "MyQuery" End Sub 

توضیح: این کد کوئری "MyQuery" را اجرا می‌کند. خروجی: کوئری "MyQuery" اجرا می‌شود.

مثال ۷۴: مخفی کردن تمامی دکمه‌ها در فرم

vba
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 

 

توضیح: این کد تمامی دکمه‌های فرم را مخفی می‌کند. خروجی: تمامی دکمه‌های فرم مخفی می‌شوند.

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر