سلول اکسل در ماکرو نویسی

یک کار معمول در ماکرو نویسی اکسل مشخص کردن یک یا چند سلول اکسل، فرمول نویسی در آنها و یا استفاده از فضای سلول ها برای درج مقدار متغیر ها یا خروجی ها یا به عبارتی استفاده از سلول اکسل در ماکرو نویسی میباشد.

سلول های اکسل میتوانند در دسترس ترین گزینه برای برنامه نویسان به منظور درج پارامترهای ورودی توسط کاربران و یا نمایش خروجی برنامه به استفاده کنندگان باشد.

اکسل پرو
گستره استفاده از سلول اکسل در ماکروها

کدهای ویژوال بیسیک نوشته شده در فضای ماکرو نویسی اکسل میتوانند اطلاعات بسیاری را با سلول های اکسل تبادل نمایند، و پارامترهای بسیاری را در مورد سلول های اکسل تعیین نمایند، در ادامه به برخی موارد استفاده از سلول اکسل در ماکرو نویسی اشاره شده است:

  • برنامه نویسان ویژوال بیسیک میتوانند سلول های اکسل را برای وارد کردن پارامترها و متغیرهای استفاده شده در ماکرو های خود استفاده نمایند، مثلاً یکی از سلول های اکسل را مشخص کرده و از کاربر بخواهید که سن خود را در آن وارد نماید، عدد وارد شده میتواند یکی از متغیر های برنامه ی شما باشد.
  • از سلول های اکسل میتوان برای گزارش خروجی یک ماکرو و یا نمایش مقادیر متغیرهای بدست آمده برای کاربران استفاده نمود.
  • از فضای سلول های اکسل میتوان به عنوان محلی دائمی یا موقت برای ذخیره متغیرهای ماکرو نوشته شده استفاده کرد.
  • با کد نویسی ویژوال بیسیک در اکسل میتوان تمامی خواص سلول های اکسل و فرمت محتوای آنها را کنترل کرد، مثلاً شما میتوانید، رنگ، حاشیه، اندازه، فرمت و… هریک از سلول های اکسل را با کدهای ویژوال بیسیک تعیین نمایید
  • از طریق ویژوال بیسیک در اکسل میتوان همانند آنچه در محیط اکسل انجام میشود، برای سلول های اکسل فرمول نویسی کرد
  • میتوان یک سلول یا گروهی از سلول ها را به عنوان یک متغیر در برنامه به کاربرد، مثلاً شما متغیری به اسم Variable در ماکرو خود تعریف کنید و آن را برابر یک سلول اکسل خود قرار دهید، از این به بعد تمام کارهایی که سلول اکسل میتوانید انجام دهید را میاوتید با این متغیر هم انجام دهید، مانند نامگذاری برای سلول ها در اکسل.

تمام عملیات فوق را میتوان بر روی یک سلول و یا گروهی از سلول ها به صورت همزمان انجام داد.

اکسل پرو

سلول های اکسل

برای اشاره به سلول اکسل در ماکرو نویسی ویژوال بیسیک میتوان از شی Range Object) Range) و یا از پروپرتی Cells استفده نمود.

استفاده از شی Range در اشاره به سلول های اکسل

از شی Range میتوان برای اشاره به سلول اکسل در ماکرو نویسی استفاده نمود، در ادامه نحوه ای استفاده از Range به صورت در قالب مثال ارایه شده است:

Range در ویژوال بیسیک
دقت کنید که عبارت قرار گرفته در درون پرانتز شی Range متغیری از نوع رشته میباشد.

به صورت خلاصه تر هم میتوان از شی Range برای اشاره به سلول ها استفاده نمود، برای اینکار نیازی به نوشتن کلمه ی Range و گذاشتن علامت “Quotation Mark” قبل و بعد از نام محدوده نیست، کد زیر نمونه ای از این روش میباشد.

در این کد محتوای سلول های محدوده ی A1 تا B5 پاک شده است.

اکسل پرو

استفاده از پروپرتی Cells در اشاره به سلول های اکسل

همانند Range، از Cells هم میتوان برای اشاره به سول ها و تغییر خواص آنها استفاده نمود، تفاوت عمده ی Cells و Range در این است که در صورت استفاده از Cells شماره ی سطر و ستون سلول ها مورد استفاده قرار میگیرد و نه نام آنها، جدول زیر مثال هایی از نحوه ی به کار بردن Cells برای اشاره به سلول های اکسل در کدهای ویژوال بیسیک ارایه میدهد.

استفاده از Cells به علت اینکه سطر و ستون سلول میتوانند به عنوان متغیرهای عددی مورد استفاده قرار گیرند در کد نویسی ها بسیار متداول تر میباشد.

Cells در وِِیژوال بیسیک

استفاده از متغیرها در Range به منظور اشاره به سلول ها ممکن است اما به دلیل رشته ای بودن نوع آرگومان قرار گرفته در پرانتز Range، کد نویسان ترجیح میدهند از Cells استفاده کنند، زیرا پارامترهای نشان دهنده سطر و ستون در Cells هر دو متغیرهای عددی هستند و کار با آنها در برنامه نویسی راحت تر است.

استفاده از پروپرتی های Row و Column در اشاره به سلول های اکسل

از پروپرتی های Row و Column هم برای اشاره کردن به سلول های اکسل میتوان استفاده نمود، به این تفاوت که این پروپرتی ها سطر ها و ستون ها را میتوانند مورد اشاره قرار دهند و نه سلول ها را، در ادامه مثال هایی از کاربرد Row و Column برای اشاره به سلول های اکسل توسط کدهای ویژوال بیسیک آورده شده است.

Row و Column در ویژوال بیسیک

به عنوان مثال کد زیر برای Bold کردن فونت سلول های قرار گرفته در ردیف ۱ از Sheet1 نوشته شده است.

 اشاره به یک محدوده ی نامگذاری شده در محیط اکسل توسط کدهای ویژوال بیسیک

در مبحث نامگذاری محدوده ها در اکسل یاد گرفتیم که چگونه میتوانیم برای یک یا چند سلول اکسل خود یک نام اختصاص دهیم، دانستیم که نامگذاری محدوده ها در اکسل فرمول نویسی ها را برای ما راحت تر نموده و فایل های اکسل ما را گویا تر میکند.

در کدهای ویژوال بیسیک شما میتوانید از نام های اختصاص داده شده برای سلول ها در اکسل برای اشاره به آن ها استفاده نمایید. برای این کار محدوده ای از اکسل به نام ExcelRange که در فایل اکسل MyWorkBook و در Sheet1 قرار دارد را در نظر بگیرید، کدهای زیر نحوه ی اشاره به این محدوده را نمایش میدهند و همگی یک کار را انجام میدهند.

اکسل پرو

برای اشاره همزمان به نام چند محدوده میتوانیم از کدی مشابه کد زیر استفاده کنیم، این کد محتوای سلول های محدوده ی A_Range، B_Range و C_Range را پاک میکند.

برای اشاره به سلول های نامگذاری شده در حلقه ها میتوانید از کدی مشابه کد زیر استفاده نمایید، در این کد میخواهیم مقدار تمام سلول های قرار گرفته در محدوده ی ExcelRange برابر با ۲۱ قرار دهیم برای اینکار از حلقه ی For و معرفی یک متغیر کمکی از نوع Range به نام Counter استفاده میکنیم.

با فرمت ایجاد حلقه ها، مفهوم آنها و کاربردشان در آینده آشنا خواهیم شد. در اینجا تنها نحوه کاربرد Range در حلقه مورد اشاره قرار گرفته است

اکسل پرو

اشتراک گذاری در شبکه های اجتماعی: share on facebook share on google plus share on linkedin

۶ نظر

  1. پریا

    سلام وقت بخیر
    ببخشید من یه سوال داشتم . من اومدم دوتا سلولو مرج کردم حالا میخوام اطلاعات این سلول مرج شده هر بار اطلاعاتش تغییر کرد یا وارد شد این اطلاعاتت جدید خودکار در سلولی از شیت دیگر وارد شد. برای اینکار از چه دستوری باید استفاده کنم؟ اطلاعات ورودی هم ممکن است رشته متنی و هم عددی باشد. خودم این دستور را نوشته ام . ارور نمی دهد اما اجرا هم نمی شود.ممنون میشم راهنماییم کنید.
    Range(“L2″) = (“=range(d20:e20)”)

    1. حامد قدیمی

      سلام، کدی که نوشته اید ایراد ساختاری و معنایی دارد، اولاً برای اختصاص و فراخوانی داده یک سلول میبایست حتماً از Properties شی Range به نام Value استفاده نمایید و ثانیاً بهتر است ابندا مقدار مورد نظر را در یک متغیر ذخیره نموده و سپس در سلولی دیگر کپی نمایید. موفق باشید.

  2. محمدرضا

    با سلام و خسته نباشید
    سال نو مبارک
    من یک فایل دارم که از چند sheet ساخته شد و کارکرد پرسنلم در هر شیت به صورت ماهانه وارد میشه
    و در شیت آخر تمام مرخصی های پرسنل با هم جمع میشه
    میخواستم بدونم چه جوری میشه هنگام وارد کردن اطلاعات مرخصی پرسنل در صورتی که مرخصی شون منفی میشه با msgbox بهم اطلاع بده
    خودم یه دستوری نوشتم اما انجام نمیشه
    خیلی بهش احتیاج داشتم لطفا کمکم کنید.
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Worksheets(“sheet1″).Range(“at:at”) < 0 Then
    x = MsgBox("darai morakhasi manfi.", vbOKOnly, "stop")
    End If
    End Sub
    ممنون

    1. حامد قدیمی

      سلام، سلامت باشید، سال نو شما هم مبارک، کدی که شما ایجاد کردید مناسب این کار نیست، در واقع باید یک Event Handler Code به همین صورت که نوشتید بنویسید و یک حلقه بنویسید که رکور ورودی جدید را بررسی نماید و در صورت منفی شدن مرخصی پیام دهد. موفق باشید.

  3. reza karimi

    با سلام
    قدم به قدم با مقالات شما پیش میرم و هر بار که یک مقاله تمام میشه از وجود متخصصین متعهدی چون شما که در راه آموزش مبتدیان قدم برمیدارند خدا را شکر میکنم
    موفق و پیروز باشید
    تشکر فراوان

دیدگاهتان را بنویسید؟