المتغيرات في اكسيل VBA

المتغيرات في اكسيل VBA

من هنا (المتغيرات فى اكسيل VBA) سنبدأ التعمق شيئا فشيئا داخل هذا العالم الخاص ب vba excel  ذلك العالم الجميل . وسنتعرف على ما يلى

ما هي المتغيرات

أنواع المتغيرات

الإعلان عن المتغيرات

أهمية المتغيرات

مدى الاتاحة للمتغيرات

أولا ما هي المتغيرات  variables

المتغير هو موقع تخزين مسمى في برنامج حيث يمكن تخزين البيانات واستردادها. عند إنشاء متغير ، فإنك تعطيه اسما ، وتعين له قيمة. يمكن أن تتغير قيمة المتغير أثناء تنفيذ البرنامج ، ولهذا السبب يطلق عليه “متغير”.

فكر في المتغير على أنه حاوية  او مكان يحتوي على معلومات. يمكن الوصول إلى المعلومات الموجودة في متغير واستخدامها بواسطة البرنامج عند الحاجة. على سبيل المثال ، إذا كنت تريد تخزين اسم شخص ما في برنامج ، فيمكنك إنشاء متغير يسمى “الاسم” ، وتعيين قيمة اسم الشخص له. فيما بعد اثناء عمل  البرنامج ، يمكنك استرداد هذه المعلومات واستخدامها عند الحاجة إليها.

تعد المتغيرات جزءا أساسيا من معظم لغات البرمجة لأنها تسمح للبرامج بتخزين المعلومات ومعالجتها واستردادها حسب الحاجة. باستخدام المتغيرات ، يمكنك جعل برامجك أكثر مرونة وديناميكية ، مما يسمح لها بالعمل مع أنواع مختلفة من المعلومات بطرق مختلفة.

باختصار ، المتغيرات هي مفهوم أساسي في لغات البرمجة التي تسمح للبرامج بتخزين البيانات ومعالجتها ، مما يجعلها أكثر مرونة وديناميكية.

هي عباره عن أماكن في ذاكرة الحاسب يتم حجزها لحفظ قيم وهذة القيم ذات أنواع مختلفة واحجام مختلفة وعلية تختلف حجم الذاكرة التي سيتم حجزها من نوع لأخر و سنتعرف عليها فيما يلى .فائدة هذه الأماكن إما ان نحفظ بها قيمة او نستدعى منها قيمة وقت ما نشاء اثناء كتابة الكود البرمجي .

شروط تسمية المتغيرات

1 يجب الا يبدا اسم المتغير برقم

2 بعد الحرف الأول يمكن ان تكون حروف وأرقام

3 لا يحتوي على مسافات او رموز وعلامات مثل &*()

4 يجب الا يتكرر اسم المتغير أكثر من مره

هناك قائمة بكلمات محجوزة لاستخدامها من قبل تطبيق الاكسيل لا يمكن استخدامها كأسماء متغيرات

  
AddHandlerAddressOfAliasAnd
AndAlsoAsBooleanByRef
ByteByValCallCase
CatchCBoolCByteCChar
CDateCDblCDecChar
CIntClass ConstraintClass StatementCLng
CObjConstContinueCSByte
CShortCSngCStrCType
CUIntCULngCUShortDate
DecimalDeclareDefaultDelegate
DimDirectCastDoDouble
EachElseElseIfEnd Statement
End <keyword>EndIfEnumErase
ErrorEventExitFalse
FinallyFor (in For…Next)For Each…NextFriend
FunctionGetGetTypeGetXMLNamespace
GlobalGoSubGoToHandles
IfIf()ImplementsImplements Statement
Imports (.NET Namespace and Type)Imports (XML Namespace)InIn (Generic Modifier)
InheritsIntegerInterfaceIs
IsNotLetLibLike
LongLoopMeMod
ModuleModule StatementMustInheritMustOverride
MyBaseMyClassNameOfNamespace
NarrowingNew ConstraintNew OperatorNext
Next (in Resume)NotNothingNotInheritable
NotOverridableObjectOfOn
OperatorOptionOptionalOr
OrElseOut (Generic Modifier)OverloadsOverridable
OverridesParamArrayPartialPrivate
PropertyProtectedPublicRaiseEvent
ReadOnlyReDimREMRemoveHandler
ResumeReturnSByteSelect
SetShadowsSharedShort
SingleStaticStepStop
StringStructure ConstraintStructure StatementSub
SyncLockThenThrowTo
TrueTryTryCastTypeOf…Is
UIntegerULongUShortUsing
VariantWendWhenWhile
WideningWithWithEventsWriteOnly
Xor#Const#Else#ElseIf
#End#If=&
&=**=/
/=\\=^
^=++=
-=>> Operator>>= Operator<<
<<=   

هذه هي الكلمات المحجوزة كما وردت في موقع دعم مايكروسوفت وهذا هو الرابط

Keywords – Visual Basic | Microsoft Docs

https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/keywords/

إليكم جدول موضح به أنواع البيانات

نوع البيانات هو طريقة لتصنيف أنواع مختلفة من المعلومات التي يعالجها البرنامج. هي الشكل الذي تُحفظ به البيانات وتنتقل بين أجزاء الكود يمكن أن تكون هذه المعلومات أرقاما أو نصا أو تواريخ أو أنواعا أخرى من البيانات. من خلال تحديد نوع بيانات لمتغير ، فإنك تخبر الكمبيوتر بنوع البيانات التي يجب توقعها ، وكيفية تخزين هذه البيانات ومعالجتها.

على سبيل المثال ، إذا كنت تريد تخزين عمر شخص في متغير ، فيمكنك إعلان هذا المتغير كنوع بيانات عدد صحيح (عدد صحيح) ، لأن الأعمار هي أعداد صحيحة. إذا كنت تريد تخزين اسم شخص ما ، فستعلن هذا المتغير كنوع بيانات (نص) ، لأن الأسماء تتكون من أحرف

يساعد تحديد نوع البيانات أيضا الكمبيوتر على اتخاذ قرارات حول كيفية إجراء العمليات على تلك البيانات. على سبيل المثال، إذا كان لديك متغير من نوع عدد صحيح وحاولت إضافته إلى متغير من نوع نص لن يعرف الكمبيوتر كيفية تنفيذ العملية وإرجاع خطأ.

باختصار ، تعد أنواع البيانات مفهوما مهما في لغات البرمجة لأنها تساعد على ضمان قدرة الكمبيوتر على معالجة البيانات بطريقة منضبطة ويمكن التنبؤ بها ، كما تساعد في منع الأخطاء التي يمكن أن تحدث عندما يطلب من الكمبيوتر إجراء عمليات على البيانات.

Data typeStorage sizeRange
Boolean2 bytesTrue or False
Byte1 byte0 to 255
CollectionUnknownUnknown
Currency (scaled integer)8 bytes-922,337,203,685,477.5808 to 922,337,203,685,477.5807
Date8 bytesJanuary 1, 100, to December 31, 9999
Decimal14 bytes+/-79,228,162,514,264,337,593,543,950,335 with no decimal point

+/-7.9228162514264337593543950335 with 28 places to the right of the decimal

Smallest non-zero number is+/-0.0000000000000000000000000001
DictionaryUnknownUnknown
Double (double-precision floating-point)8 bytes-1.79769313486231E308 to -4.94065645841247E-324 for negative values

4.94065645841247E-324 to 1.79769313486232E308 for positive values
Integer2 bytes-32,768 to 32,767
Long (Long integer)4 bytes-2,147,483,648 to 2,147,483,647
LongLong (LongLong integer)8 bytes-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

Valid on 64-bit platforms only.
LongPtr (Long integer on 32-bit systems, LongLong integer on 64-bit systems)4 bytes on 32-bit systems

8 bytes on 64-bit systems
-2,147,483,648 to 2,147,483,647 on 32-bit systems

-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 on 64-bit systems
Object4 bytesAny Object reference
Single (single-precision floating-point)4 bytes-3.402823E38 to -1.401298E-45 for negative values

1.401298E-45 to 3.402823E38 for positive values
String (variable-length)10 bytes + string length0 to approximately 2 billion
String (fixed-length)Length of string1 to approximately 65,400
Variant (with numbers)16 bytesAny numeric value up to the range of a Double
Variant (with characters)22 bytes + string length (24 bytes on 64-bit systems)Same range as for variable-length String
User-defined (using Type)Number required by elementsThe range of each element is the same as the range of its data type.

هذه هي أنواع البيانات من موقع دعم مايكروسوفت وهذا هو الرابط

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/data-type-summary

بإختصار

انواع البيانات فى vba اكسيل (البيانات الرقمية )

توضيح للارقام العائمة single / double

تمثل الأرقام العائمة الأرقام الحقيقية بدقة محدودة، ويمكنها تخزين الأرقام الكبيرة جدًا والصغيرة جدًا عن طريق استخدام التمثيل العلمي للأرقام . في التمثيل العلمي، الرقم يُعبَّر عنه كمضاعف للعدد 10 مرفوع لقوة بعض القيمة.

على سبيل المثال، العدد 3000 يمكن تمثيله على الشكل 3×10 ^ 3، والعدد 0.0004 يمكن تمثيله على الشكل 4× 10 ^ -4 هذا يمكنك من تخزين الأرقام الكبيرة والصغيرة جدًا بطريقة فعالة في مساحة صغيرة من الذاكرة، ولكن بدقة محدودة

في VBA ، لا يعد نوع البيانات Decimal نوع بيانات أصليا ، ولكن يمكن استخدامه كنوع فرعي لنوع بيانات Variant. هذا يعني أنه لا يمكنك إعلان متغير من النوع Decimal كما تفعل مع Integer, Long, Single, Double, ، إلخ. بدلا من ذلك، يمكنك تعريف متغير من النوع variant ثم قم باستخدام الدالة CDec لتحويله إلى Decimal

هنا مثال:

Dim myVar As Variant

myVar = CDec(123.456)

Debug.Print TypeName(myVar) ‘ Outputs “Decimal”

في هذا المثال ، يتم الإعلان عن myVar ك variant ، ولكن بعد ذلك يتم تحويله إلى Decimal باستخدام الدالة CDec. يخرج سطر Debug.Print TypeName (myVar) ” Decimal ” ، مما يؤكد أن myVar هو بالفعل رقم Decimal.

يرجى ملاحظة أن النوع الفرعي Decimal يمكنه التعامل مع 28 منزلة عشرية ويمكنه الحفاظ على دقة جميع العمليات الحسابية إلى 28 منزلة عشرية. ومع ذلك ، تجدر الإشارة أيضا إلى أن استخدام Decimal يمكن أن يكون أبطأ من استخدام Single أو Double ، لذلك يتم استخدامه عادة في الحسابات المالية حيث تكون الدقة أكثر أهمية من السرعة

الإعلان عن المتغيرات

لفهم المتغيرات اكثر تعالوا نتعرف عليها اكثر واكثر من قرب

المتغيرات إما ان نعلن عنها او لا نعلن عنها للإعلان عن متغير يتم ذلك بكتابة  ثلاثة احرف قبل نوع المتغير وفى الجدول بالأعلى جميع أنواع المتغيرات الموجودة منها ما سوف تحتاج إليه ومنها ما لن تحتاج إلية

هذه الثلاثة احرف هي  DIM     وهي اختصار كلمة DIMENSION وهي تعنى بعد او حجم

وهي تستخدم لتعريف

  1. Basic variables
  2. Variant
  3. Object
  4. Array
  1. المتغيرات  الأساسيه – يحمل هذا النوع المتغير قيمة واحدة. هذه هي الأنواع مثل Long, String, Date, Double, Currency.
datestringlongintegerbytedoublesinglebooleancurrancy
  1. Variant – يقرر VBA في وقت التشغيل النوع الذي سيتم استخدامه وهو يعمل مع أي نوع بيانات . يجب تجنب المتغيرات من هذا النوع حيثما أمكن ذلك بسبب حجمها الكبير وتبطيئها لعمل الأكواد ولكن في بعض الحالات يكون من الضروري استخدامها.
  1. Object – هذا المتغير يمكن أن يكون له طرق متعددة (أي subs / functions) وخصائص متعددة (أي قيم). هناك 3 أنواع:كائنات Excel مثل كائنات المصنف وورقة العمل والنطاق.كائنات المستخدم التي تم إنشاؤها باستخدام الاكواد بالوحدات النمطية للفئة.المكتبات الخارجية مثل كائن القاموس.
  1. Array –  هذه مجموعة من المتغيرات أو الكائنات
  • النوع object   (كائن ) هذا المتغير يمثل نطاق في المثال التالي  وعند الإعلان عن متغير من النوع كائن نستخدم بعدها set  على سبيل المثال .
  • Dim fruitname as range
  • Set fruitname= range(“a3:a15”)

لماذا نستخدم Set with Dim عندما نضيف ورقة أو مصنف في Excel VBA

يتم استخدام الكلمة الأساسية Set هنا لأن ws ليس نوع بيانات بسيطا مثل عدد صحيح  integer أ و سلسلة نصية string ، ولكنه كائن. الكائن هو نوع بيانات يمثل مثيلا لفئة، مثل ورقة عمل في هذه الحالة.يتيح لك استخدام Set بهذه الطريقة الوصول إلى خصائص وطرق الكائن المخزن في المتغير ws. على سبيل المثال، يمكنك استخدام التعليمة البرمجية التالية لتغيير اسم ورقة العمل:

Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets.Add

. يتم استخدام الكلمة الأساسية Dim للتعريف عن متغير ، ويتم استخدام الكلمة الأساسية Set لتعيين مرجع كائن لهذا المتغير.على سبيل المثال، عند إضافة ورقة عمل جديدة إلى مصنف

هناك 3 أنواع من الكائنات:

Excel objects

Class Module objects

External library objects

ملاحظة: يتم استخدام كائن مجموعةcollection VBA بطريقة مشابهة لكيفية استخدامنا لكائن الوحدة النمطية للفئة Class Module . نستخدم new لإنشائه.لا تستخدم كائنات Excel مثل المصنف وورقة العمل والنطاق وما إلى ذلك new لأنه يتم إنشاؤها تلقائيا بواسطة Excel عند إنشاء مصنف أو فتحه ، يقوم  Excel  تلقائيا بإنشاء الكائن المقترن. عند فتح مصنف أو إنشائه، يقوم VBA تلقائيا بإنشاء كائن VBA له. كما يقوم بإنشاء كائن ورقة العمل لكل ورقة عمل في هذا المصنف.

على العكس من ذلك، عندما نغلق المصنف VBA سوف يحذف تلقائيا كائنات VBA المقترنة به.

على سبيل المثال ، في الكود أدناه نفتح مصنفا. سيقوم VBA بإنشاء الكائن وسترجع Open مصنفا يمكننا تخزينه في متغير

Sub OpenWorkbook() 

    Dim wk As Workbook

    Set wk = Workbooks.Open(“C:\Docs\data.xlsx”)

End Sub

إذا أنشأنا ورقة عمل جديدة ، فسيحدث شيء مماثل. سيقوم VBA تلقائيا بإنشائه وتوفير الوصول إلى الكائن.

Sub AddSheet()

    Dim sh As Worksheet

    Set sh = ThisWorkbook.Worksheets.Add

End Sub

لا نحتاج إلى استخدام الكلمة الأساسية new لكائنات Excel هذه.

نقوم فقط بتعيين المتغير لل method التي إما تنشئ كائنا جديدا أو تتيح لنا الوصول إلى كائن موجود.

Using Dim with Class Module Objects

في VBA ، نستخدم وحدات Class لإنشاء كائنات مخصصة خاصة بنا

إذا كنا ننشئ كائنا ، فنحن بحاجة إلى استخدام الكلمة الأساسية New.

يمكننا فعل ذلك في العبارة Dim أو في العبارة المحددة.

تقوم التعليمة البرمجية التالية بإنشاء كائن باستخدام الكلمة الأساسية New في the Dim statement:

Declare and create

Dim o As New class1

Dim coll As New Collection

بسبب طبيعة الموضوع ستم تقسية الي جزأين
يُتبع

 

 
 

 

 

3 أفكار عن “المتغيرات في اكسيل VBA”

  1. Whats up very nice website!! Man .. Excellent
    .. Superb .. I’ll bookmark your site and take the feeds also?
    I’m satisfied to search out a lot of useful information here within the submit, we want
    work out more strategies on this regard, thanks for sharing.
    . . . . .

  2. Wow that was odd. I just wrote an really long comment but after I clicked submit
    my comment didn’t show up. Grrrr… well I’m not writing
    all that over again. Regardless, just wanted to say fantastic blog!

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *