برای شمارش سلول ها در اکسل پروژه ۱ باید بررسی نماییم که کدام سلول ها دارای اطلاعات هستند و کدامیک خالی هستند و هیچ اطلاعاتی ندارند. برای این کار از کد زیر استفاده می نماییم. در ادامه سطر به سطر کد را با یکدیگر بررسی می نماییم.
توجه داشته باشید که در اکسل راه های زیادی برای شمارش سلول های پر با استفاده از توابع داخلی آن وجود دارد. بعنوان مثال یکی از این راه ها استفاده تابع COUNTA می باشد.
کد VBA
برای شمارش سلول ها در اکسل پروژه ۱ از کد زیر استفاده نموده ایم.
Set xlBook = ThisWorkbook 'تعيين مرجع شيء بعنوان فايل اکسل جاري Set xlWS = xlBook.Sheets("baseFile") 'تعيين صفحه حاوي اطلاعات بعنوان مرجع شيء sw = False 'متغير بولين براي شمارش تعداد رديف هاي صفحه حاوي اطلاعات rowCount = 0 'متغير عددي براي نگهداري تعداد رديف ها i = 1 'متغير عددي براي شمارش تعداد رديف ها Do Until sw = True 'شروع حلقه و ادامه آن تا وقتي که متغير بولين مقدار صحيح داشته باشد Set r = xlWS.Range("A" & i) 'تعيين ستون اول بعنوان سلول موردنظر براي بررسي If IsEmpty(r.Value) Then 'بررسي مقدار سلول از نظر اينکه آيا سلول خالي است يا مقدار دارد sw = True 'اگر مقدار سلول خالي شود شاخص خروج از حلقه مثبت مي شود و حلقه پايان مي يابد Else rowCount = rowCount + 1 'در صورتي که مقدار سلول خالي نباشد شمارش ادامه مي يابد i = i + 1 'اگر سلول خالي نباشد سلول بعدي بايد بررسي شود End If Loop
تحلیل سطر به سطر کد:
برای اجرای وظیفه ۲ از یک حلقه Do استفاده نموده ایم. خط ۸ شروع حلقه و خط ۱۶ پایان حلقه Do را اعلام می نمایند. حلقه ها در برنامه نویسی برای تکرار یک یا چند دستور کاربرد دارند.
سطر ۱
اعلام نموده است که مرجع متغیر xlBook
به فایل اکسل جاری اشاره دارد.
سطر ۲
اعلام نموده است که مرجع متغیر xlWS
به صفحه baseFile
اشاره دارد.
سطر ۴
مقداردهی اولیه متغیر بولی sw
می باشد. از این متغیر برای کنترل حلقه Do استفاده می نماییم.
سطر ۵
مقداردهی اولیه متغیر rowCount
می باشد. این متغیر برای نگهداری تعداد سطرهایی که در صفحه baseFile
توسط کاربر انتقال داده شده است کاربرد دارد.
سطر ۶
مقدار اولیه متغیر i
در این سطر برابر 1 تعیین شده است. این متغیر تعیین کننده اولین سلولی است که باید از آنجا شمارش آغاز شود. در اینجا با توجه به اینکه در وظیفه ۱ به کاربر اعلام کرده ایم که اطلاعات فایل txt را در سلول A1 جایگذاری نماید، بنابراین مقدار اولیه آن 1 تعیین شده است.
سطر ۸
شروع حلقه Do را اعلام کرده است. در این خط کلمه کلیدی Until که بخشی از بدنه حلقه Do می باشد به این معناست که حلقه تا زمانی که مقدار متغیر بولین sw = True
گردد دستورات داخل بدنه حلقه Do یعنی خطوط ۹ تا ۱۵ تکرار گردد.
سطر ۹
در این سطر به کامپایلر VBA اعلام شده است که مرجع متغیر r
سلول "A" & i
می باشد. در اینجا دلیل استفاده از متغیر i
مشخص می شود. با توجه به سطر ۶ اولین سلولی که باید بررسی شود A1 خواهد بود.
سطر ۱۰
در این سطر از دستور If
و ترکیب آن با تابع داخلی IsEmpty
برای بررسی مقدار سلول r
استفاده شده است. مقدار بازگشتی تابع داخلی IsEmpty
یک متغیر بولی می باشد و در این سطر این تابع مقدار سلول r.Value
را بررسی می نماید. با توجه به توضیحات کد If IsEmpty(r.Value) Then
به VBA اعلام می نماید که اگر مقدار سلولی که در کد سطر ۹ تعیین نموده ایم اگر خالی باشد کد سطر ۱۰ اجرا شود و گرنه سطر ۱۲ اجرا گردد.
سطر ۱۱
در صورتی که مقدار سلول خالی باشد مقدار متغیر sw = True
تعیین می شود و حلقه Do پایان می یابد.
سطر ۱۲
بخشی از بدنه دستور If
می باشد و بدین معناست که اگر عکس شرط اصلی برقرار باشد خطوط بین Else
و End If
باید اجرا گردند.
سطر ۱۳
در صورتی که مقدار سلولی که بررسی می شود خالی نباشد شمارش با استفاده از کد rowCount = rowCount + 1
آغاز می شود.
سطر ۱۴
در این سطر کد مقدار متغیر i
یک واحد افزایش می یابد تا حلقه Do در سلول بعدی ادامه یابد.
سطر ۱۵
پایان دستور If
را اعلام می نماید.
سطر ۱۶
پایان حلقه Do را اعلام می نماید.
تعداد سلول های شمارش شده
پس از پایان حلقه Do در خط ۱۶ مقدار متغیر rowCount
برابر با تعداد سلول های شمارش شده خواهد بود.