Bob نیاز به استفاده از تابع SUM در ماکرو دارد تا مجموع تمام مقادیر یک ستون را بیابد. مشکل این است که تعداد سلول هایی که باید جمع شوند متفاوت است. برای یک اجرای ماکرو می تواند 100 سلول باشد، در حالی که در مرحله بعدی می تواند 300 و در سومین تنها 25 سلول باشد.
اول، استفاده از اکثر توابع کاربرگ (مانند SUM) از داخل یک ماکرو آسان است. تنها کاری که باید انجام دهید این است که نام تابع را با "Application.WorksheetFunction" وارد کنید. یا به سادگی "WorksheetFunction." بنابراین، اگر میدانید که هر اجرای ماکرو به جمع A1:A100، سپس A1:A300 و در نهایت A1:A25 نیاز دارد، میتوانید از یک ماکرو مانند زیر استفاده کنید:
Public Sub Sum_Demo()
Dim myRange
Dim Results
Dim Run As Long
For Run = 1 To 3
Select Case Run
Case 1
myRange = Worksheets("Sheet1").Range("A1", "A100")
Case 2
myRange = Worksheets("Sheet1").Range("A1", "A300")
Case 3
myRange = Worksheets("Sheet1").Range("A1", "A25")
End Select
Results = WorksheetFunction.Sum(myRange)
Range("B" & Run) = Results
Next Run
End Sub
این ماکرو از یک For استفاده می کند. . . حلقه بعدی برای تعیین محدوده های مختلف سلول هایی که باید جمع شوند. سپس از تابع کاربرگ SUM برای اختصاص مجموع به متغیر Results استفاده می کند، که (در نهایت) در سلولی در ستون B قرار می گیرد. نتایج اولین اجرا در B1، دومی در B2 و سومی در B3 قرار می گیرد. .
در حالی که این ماکرو خاص ممکن است چندان مفید نباشد، چندین تکنیک مفید مانند نحوه تعریف یک محدوده نامگذاری شده، نحوه استفاده از تابع SUM و نحوه قرار دادن مجموع در یک سلول را نشان می دهد. کاری که ماکرو انجام نمی دهد این است که نشان می دهد چگونه تعداد متغیری از سلول ها را برای جمع بندی انتخاب کنیم. برای انجام این کار، بهتر است به متد End شی Range تکیه کنید. خط کد زیر نشان میدهد که چگونه میتوانید مجموع محدودهای را که از A1 شروع میشود و تا قبل از اولین سلول خالی در ستون ادامه مییابد، پر کنید:
myRange = ActiveSheet.Range("A1", Range("A1").End(xlDown))
Range("B1") = WorksheetFunction.Sum(myRange)
توجه داشته باشید که محدوده (myRange) به این صورت تعریف میشود که با A1 شروع میشود و تا هر چیزی که متد End برمیگرداند گسترش مییابد. سپس این جمع شده و در B1 پر می شود.