וועריאַבאַלז און קאַנסטאַנץ אין וובאַ

אין VBA, ווי אין קיין אנדערע פּראָגראַממינג שפּראַך, וועריאַבאַלז און קאַנסטאַנץ זענען געניצט צו קראָם קיין וואַלועס. ווי דער נאָמען ימפּלייז, וועריאַבאַלז קענען טוישן, בשעת קאַנסטאַנץ קראָם פאַרפעסטיקט וואַלועס.

פֿאַר בייַשפּיל, אַ קעסיידערדיק Pi סטאָרז די ווערט 3,14159265 ... די נומער "פּי" וועט נישט טוישן בעשאַס די דורכפירונג פון די פּראָגראַם, אָבער עס איז נאָך מער באַקוועם צו קראָם אַזאַ אַ ווערט ווי אַ קעסיידערדיק.

אין דער זעלביקער צייט, מיר קענען נוצן די בייַטעוודיק sVAT_Rate צו קראָם די וואַט קורס אויף געקויפט סכוירע. וואַריאַבלע ווערט sVAT_Rate קען בייַטן דיפּענדינג אויף די פּראָדוקט פּערטשאַסט.

דאַטע טייפּס

אַלע וועריאַבאַלז און קאַנסטאַנץ זענען פון אַ באַזונדער דאַטן טיפּ. די טיש אונטן ליסטעד די דאַטן טייפּס געניצט אין VBA מיט אַ באַשרייַבונג און קייט פון מעגלעך וואַלועס:

דאַטע טיפּ גרייסבאַשרייַבונגקייט פון וואַלועס
בייטקסנומקס בייטןpositive ינטאַדזשערז; אָפט געניצט פֿאַר ביינערי דאַטןפון קסנומקס צו קסנומקס
באָאָלעאַןקסנומקס בייטןקענען זיין אמת אָדער פאַלשאמת אָדער פאַלש
ינטעגערקסנומקס בייטןגאַנץ נומערן (קיין פראַקשאַנאַל טייל)פון -32 צו +768
לאַנגקסנומקס בייטןגרויס ינטאַדזשערז (קיין פראַקשאַנאַל טייל)от -2 147 483 648 до +2 147 483 647
ומפאַרהייראַטקסנומקס בייטןאיין פּינטלעכקייַט פלאָוטינג פונט נומערפון -3.4e38 צו +3.4e38
טאָפּלקסנומקס בייטןטאָפּל פּינטלעכקייַט פלאָוטינג פונט נומערפון -1.8e308 צו +1.8e308
קראַנטקייַטקסנומקס בייטןפלאָוטינג פונט נומער, מיט אַ פאַרפעסטיקט נומער פון דעצימאַל ערטערот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
דאַטעקסנומקס בייטןדאַטע און צייט - דאַטע פון ​​טיפּ דאַטע איז רעפּריזענטיד דורך אַ פלאָוטינג פונט נומער. דער גאַנץ טייל פון דעם נומער יקספּרעסאַז די דאַטע, און די פראַקשאַנאַל טייל יקספּרעסאַז די צייט.פון 1 יאנואר 100 ביז 31 דעצעמבער 9999
כייפעץקסנומקס בייטןאָבדזשעקט דערמאָנעןקיין כייפעץ דערמאָנען
שטריקלאיז טשאַנגינגכאַראַקטער שטעלן. די סטרינג טיפּ קענען זיין פון פאַרפעסטיקט אָדער בייַטעוודיק לענג. מער קאַמאַנלי געניצט מיט וועריאַבאַל לענגפאַרפעסטיקט לענג - אַרויף צו בעערעך 65 אותיות. וועריאַבאַל לענג - אַרויף צו בעערעך 500 ביליאָן אותיות
וואַריאַנטאיז טשאַנגינגקען אַנטהאַלטן אַ דאַטע, אַ לאָזנ שווימען אָדער אַ כאַראַקטער שטריקל. דער טיפּ איז געניצט אין קאַסעס ווו עס איז נישט באקאנט אין שטייַגן וואָס טיפּ פון דאַטן וועט זיין אריין.נומער - טאָפּל, שטריקל - שטריקל

דאָך, ניצן די טיש אויבן און טשוזינג די רעכט דאַטן טיפּ, איר קענען נוצן זכּרון מער עקאַנאַמיקלי (למשל, קלייַבן די דאַטן טיפּ ינטעגער אַנשטאָט לאַנג or ומפאַרהייראַט אַנשטאָט טאָפּל). אָבער, ווען איר נוצן מער סאָליד דאַטן טייפּס, איר דאַרפֿן צו זיין אָפּגעהיט אַז דיין קאָד טאָן ניט פּרובירן צו פּאַסיק דיספּראַפּאָרשאַנאַטלי גרויס וואַלועס אין זיי.

דערקלערן וועריאַבאַלז און קאַנסטאַנץ

איבערזעצער'ס באַמערקונג: גערעדט וועגן וועריאַבאַלז אין VBA, עס איז ווערט דערמאָנען נאָך אַ זייער וויכטיק פונט. אויב מיר דערקלערן אַ בייַטעוודיק אָבער טאָן ניט באַשטימען קיין ווערט צו עס, עס איז יניטיאַלייזד מיט אַ פעליקייַט ווערט:

• טעקסט סטרינגס זענען יניטיאַלייזד מיט ליידיק סטרינגס;

• נומערן - ווערט 0;

• טיפּ וועריאַבאַלז באָאָלעאַן — פאלשע ;

• דאַטעס - 30 דעצעמבער 1899 .

איידער אַ בייַטעוודיק אָדער קעסיידערדיק קענען זיין געוויינט, עס מוזן זיין דערקלערט. צו טאָן דאָס, לייגן די פאלגענדע פּשוט שורה פון קאָד צו די מאַקראָו:

Dim Имя_Переменной As Тип_Данных

אין די אויבן שורה פון קאָד וואַריאַבלע_נאָמען איז דער נאָמען פון די בייַטעוודיק וואָס וועט זיין געוויינט אין די קאָד, און Data_Type איז איינער פון די דאַטן טייפּס פון די טיש געגעבן אַ ביסל פריער אין דעם אַרטיקל. למשל:

דיק sVAT_Rate ווי איין דיק און ווי ינטעגער

קאַנסטאַנץ זענען דערקלערט ענלעך, אָבער ווען דיקלערינג קאַנסטאַנץ, זייער ווערט מוזן זיין גלייך אנגעוויזן. פֿאַר בייַשפּיל, ווי דאָס:

Const iMaxCount = 5000 Const iMaxScore = 100

עס איז ניט נייטיק צו דערקלערן וועריאַבאַלז אין עקססעל. דורך פעליקייַט, אַלע אריין אָבער נישט דערקלערט וועריאַבאַלז אין עקססעל וועט האָבן דעם טיפּ וואַריאַנט און וועט קענען אָננעמען ביידע נומעריק און טעקסט ווערט.

אזוי, דער פּראָגראַמיסט קענען נוצן די נייַע וועריאַבאַלז אין קיין צייט (אפילו אויב עס איז נישט דערקלערט), און עקססעל וועט מייַכל עס ווי אַ טיפּ טיפּ. וואַריאַנט. אָבער, עס זענען עטלעכע סיבות וואָס דאָס זאָל נישט זיין געטאן:

  1. זכּרון באַניץ און קאַמפּיוטיישאַנאַל גיכקייַט. אויב איר טאָן ניט דערקלערן אַ בייַטעוודיק מיט אַן אָנווייַז פון די דאַטן טיפּ, עס וועט זיין באַשטימט דורך פעליקייַט. וואַריאַנט. דעם טיפּ פון דאַטן ניצט מער זכּרון ווי אנדערע דאַטן טייפּס. עטלעכע עקסטרע ביטעס פּער בייַטעוודיק קען נישט געזונט ווי פיל, אָבער אין פיר, מגילה קענען האָבן טויזנטער פון וועריאַבאַלז (ספּעציעל ווען ארבעטן מיט ערייז). דעריבער, די עקסטרע זכּרון געניצט דורך וועריאַבאַלז ווי וואַריאַנט, קאַמפּערד מיט וועריאַבאַלז פון טיפּ ינטעגער or ומפאַרהייראַט, קענען לייגן אַרויף צו אַ באַטייטיק סומע. אין דערצו, אַפּעריישאַנז מיט וועריאַבאַלז פון טיפּ וואַריאַנט זענען עקסאַקיוטאַד פיל מער סלאָולי ווי מיט וועריאַבאַלז פון אנדערע טייפּס, ריספּעקטיוולי אַן עקסטרע טויזנט וועריאַבאַלז פון טיפּ וואַריאַנט קענען באטייטיק פּאַמעלעך אַראָפּ חשבונות.
  2. פאַרהיטונג פון טיפּאָס אין וועריאַבאַל נעמען. אויב אַלע וועריאַבאַלז זענען דערקלערט, די VBA ויסזאָגונג קענען זיין געוויינט - אָפּלייקענונג אָפּציע (מיר וועלן רעדן וועגן אים שפּעטער) אין סדר צו ידענטיפיצירן אַלע אַנדיקלערייטיד וועריאַבאַלז. דאָס ילימאַנייץ די אויסזען פון אַ טעות אין די פּראָגראַם ווי אַ רעזולטאַט פון אַ פאַלש געשריבן וועריאַבאַל נאָמען. פֿאַר בייַשפּיל, ניצן אַ בייַטעוודיק געהייסן sVAT_Rate, איר קענען מאַכן אַ טיפּאָ און, אַסיינינג אַ ווערט צו דעם בייַטעוודיק, שרייַבן: "VATRate = 0,175". עס איז דערוואַרט אַז פון איצט אויף, די בייַטעוודיק sVAT_Rate זאָל אַנטהאַלטן די ווערט 0,175 - אָבער דאָך עס טוט נישט. אויב דער מאָדע פון ​​מאַנדאַטאָרי דעקלאַראַציע פון ​​אַלע געוויינט וועריאַבאַלז איז ענייבאַלד, די VBA קאַמפּיילער וועט מיד אָנווייַזן אַ טעות, ווייַל עס וועט נישט געפֿינען די בייַטעוודיק VATRAte צווישן די מודיע.
  3. כיילייטינג וואַלועס וואָס טאָן ניט גלייַכן די דערקלערט טיפּ פון אַ בייַטעוודיק. אויב איר דערקלערן אַ וועריאַבאַלז פון אַ זיכער טיפּ און פּרובירן צו באַשטימען דאַטן פון אַ אַנדערש טיפּ צו עס, איר וועט באַקומען אַ טעות, וואָס, אויב עס איז נישט קערעקטאַד, קען פאַרשאַפן די פּראָגראַם צו קראַך. אין ערשטער בליק, דאָס קען ויסקומען ווי אַ גוטע סיבה נישט צו דערקלערן וועריאַבאַלז, אָבער אין פאַקט, ווי פריער עס טורנס אויס אַז איינער פון די וועריאַבאַלז באקומען די פאַלש דאַטן וואָס עס איז געווען געמיינט צו באַקומען - אַזוי פיל בעסער! אַנדערש, אויב די פּראָגראַם פאָרזעצן צו לויפן, די רעזולטאַטן קען זיין פאַלש און אומגעריכט, און עס וועט זיין פיל מער שווער צו געפֿינען די גרונט פון די ערראָרס. עס איז אויך מעגלעך אַז דער מאַקראָו וועט זיין עקסאַקיוטאַד "סאַקסעסיוולי". ווי אַ רעזולטאַט, דער טעות וועט גיין אַננאָוטיסט און אַרבעט וועט פאָרזעצן מיט פאַלש דאַטן!

אין דעם אַכטונג, עס איז דיזייראַבאַל צו דעטעקט אַ פאַלש דאַטן טיפּ און ריכטיק אַזאַ ערראָרס אין די קאָד ווי פרי ווי מעגלעך. פֿאַר די סיבות, עס איז רעקאַמענדיד אַז איר דערקלערן אַלע וועריאַבאַלז ווען שרייבן אַ VBA מאַקראָו.

אָפּלייקענונג אָפּציע

אָפּעראַטאָר אָפּלייקענונג אָפּציע ז אַלע וועריאַבאַלז וואָס וועט זיין געוויינט אין וובאַ קאָד צו זיין דערקלערט, און פלאַגס אַלע אַנדיקלערייטיד וועריאַבאַלז ווי ערראָרס בעשאַס זאַמלונג (איידער די דורכפירונג פון קאָד סטאַרץ). אַפּלייינג דעם אָפּעראַטאָר איז נישט שווער - נאָר שרייַבן די שורה אין די שפּיץ פון די VBA טעקע:

Option Explicit

אויב איר ווילן צו שטענדיק אַרייַנלייגן אָפּלייקענונג אָפּציע צו די שפּיץ פון יעדער נייַ VBA מאָדולע באשאפן, דאָס קענען ווערן געטאן אויטאָמאַטיש. צו טאָן דאָס, איר דאַרפֿן צו געבן די אָפּציע דאַרפן וואַריאַבלע דעקלאַראַציע אין די VBA רעדאַקטאָר סעטטינגס.

דאָס איז געטאן ווי דאָס:

  • פון די וויסואַל באַסיק עדיטאָר מעניו, גיט מכשירים > אָפּציעס
  • אין די דיאַלאָג וואָס איז געוויזן, עפֿענען די קוויטל רעדאַקטאָר
  • קוק די קעסטל דאַרפן וואַריאַבלע דעקלאַראַציע און דרוקן OK

ווען ענייבאַלד, די שטריקל אָפּלייקענונג אָפּציע וועט זיין אויטאָמאַטיש ינסערטאַד אין די אָנהייב פון יעדער נייַ מאָדולע באשאפן.

פאַרנעם פון וועריאַבאַלז און קאַנסטאַנץ

יעדער דערקלערט בייַטעוודיק אָדער קעסיידערדיק האט זייַן אייגן לימיטעד פאַרנעם, דאָס איז, אַ לימיטעד טייל פון די פּראָגראַם אין וואָס די וועריאַבאַלז יגזיסץ. דער פאַרנעם דעפּענדס אויף ווו די דעקלאַראַציע פון ​​די בייַטעוודיק אָדער קעסיידערדיק איז געמאכט. נעמען, פֿאַר בייַשפּיל, די וועריאַבאַלז sVAT_Rate, וואָס איז געניצט אין די פֿונקציע גאַנץ_קאָסט. די פאלגענדע טיש דיסקאַסט צוויי אָפּציעס פֿאַר וועריאַבאַל סקאָפּינג sVAT_Rateדערקלערט אין צוויי פאַרשידענע שטעלעס אין די מאָדולע:

אָפּציע יקספּליסאַט דיק sVAT_Rate ווי איין פֿונקציע גאַנץ_קאָסט () ווי טאָפּל ... סוף פֿונקציע
אויב די בייַטעוודיק sVAT_Rate דערקלערט אין די אָנהייב פון די מאָדולע, דער פאַרנעם פון דעם בייַטעוודיק וועט זיין די גאנצע מאָדולע (ד"ה די בייַטעוודיק sVAT_Rate וועט זיין אנערקענט דורך אַלע פּראָוסידזשערז אין דעם מאָדולע).

דעריבער, אויב אין די פֿונקציע גאַנץ_קאָסט בייַטעוודיק sVAT_Rate וועט זיין אַסיינד עטלעכע ווערט, און דער ווייַטער פֿונקציע עקסאַקיוטאַד אין דער זעלביקער מאָדולע וועט נוצן די בייַטעוודיק sVAT_Rate מיט דער זעלביקער טייַטש.

אָבער, אויב עטלעכע פונקציע אין אן אנדער מאָדולע איז גערופֿן, דעמאָלט דער בייַטעוודיק sVAT_Rate וועט ניט זיין באקאנט.

אָפּציע יקספּליסאַט פֿונקציע Total_Cost() ווי טאָפּל טונקל sVAT_Rate ווי איין ... סוף פֿונקציע
אויב די בייַטעוודיק sVAT_Rate דערקלערט אין די אָנהייב פון די פֿונקציע גאַנץ_קאָסט, דער פאַרנעם וועט זיין לימיטעד בלויז צו דעם פֿונקציע (ד"ה אין די פֿונקציע גאַנץ_קאָסט, איר קענען נוצן די בייַטעוודיק sVAT_Rate, אָבער נישט אַרויס).

ווען טריינג צו נוצן sVAT_Rate אין אן אנדער פּראָצעדור, די VBA קאַמפּיילער וועט באַריכט אַ טעות ווייַל דעם בייַטעוודיק איז נישט דערקלערט אַרויס פון די פֿונקציע גאַנץ_קאָסט (צוגעשטעלט אַז דער אָפּעראַטאָר איז געניצט אָפּלייקענונג אָפּציע).

אין דעם בייַשפּיל געוויזן אויבן, די בייַטעוודיק איז דערקלערט אויף די מאָדולע מדרגה מיט די קיווערד טונקל. אָבער, עס קען זיין נייטיק אַז דערקלערט וועריאַבאַלז קענען זיין געוויינט אין אנדערע מאַדזשולז. אין אַזאַ קאַסעס, צו דערקלערן אַ בייַטעוודיק אַנשטאָט פון אַ קיווערד טונקל קיווערד מוזן ווערן געניצט עפנטלעך.

דורך דעם וועג, אין סדר צו דערקלערן אַ בייַטעוודיק אויף די מאָדולע מדרגה, אַנשטאָט פון די קיווערד טונקל קיווערד קענען ווערן גענוצט פּריוואַט, וואָס ינדיקייץ אַז דעם בייַטעוודיק איז בדעה פֿאַר נוצן בלויז אין דעם קראַנט מאָדולע.

איר קענט אויך נוצן טערמינען צו דערקלערן קאַנסטאַנץ. עפנטלעך и פּריוואַט, אָבער נישט אַנשטאָט פון די קיווערד Const, צוזאמען מיט אים.

די פאלגענדע ביישפילן ווייַזן די נוצן פון טערמינען עפנטלעך и פּריוואַט געווענדט צו וועריאַבאַלז און קאַנסטאַנץ.

אָפּציע יקספּליסאַט ציבור sVAT_Rate ווי איין ציבור קאָנסט iMax_Count = 5000 ...    
אין דעם בייַשפּיל, די קיווערד עפנטלעך געניצט צו דערקלערן אַ בייַטעוודיק sVAT_Rate און קעסיידערדיק iMax_Count. דער פאַרנעם פון עלעמענטן דערקלערט אין דעם וועג וועט זיין די גאנצע קראַנט פּרויעקט.

דעם מיטל אַז sVAT_Rate и iMax_Count וועט זיין בנימצא אין קיין פּרויעקט מאָדולע.

אָפּציע יקספּליסאַט פּריוואַט sVAT_Rate ווי איין פּריוואַט קאָנסט iMax_Count = 5000 ...    
אין דעם בייַשפּיל, צו דערקלערן אַ בייַטעוודיק sVAT_Rate און קעסיידערדיק iMax_Count קיווערד געניצט פּריוואַט. דער פאַרנעם פון די עלעמענטן איז די קראַנט מאָדולע.

דעם מיטל אַז sVAT_Rate и iMax_Count וועט זיין בארעכטיגט אין אַלע פּראָוסידזשערז פון דעם קראַנט מאָדולע, אָבער וועט נישט זיין בארעכטיגט פֿאַר פּראָוסידזשערז אין אנדערע מאַדזשולז.

לאָזן אַ ענטפֿערן