በVBA ውስጥ "ተግባር" እና "ንዑስ" ሂደቶች

አብሮገነብ VBA ተግባራት

የራስዎን የቪቢኤ ተግባራት መፍጠር ከመጀመርዎ በፊት ኤክሴል ቪቢኤ ኮድዎን በሚጽፉበት ጊዜ ሊጠቀሙባቸው የሚችሏቸው ቀድሞ የተገነቡ አብሮ የተሰሩ ተግባራት ስብስብ እንዳለው ማወቅ ጥሩ ነው።

የእነዚህ ተግባራት ዝርዝር በVBA አርታዒ ውስጥ ሊታይ ይችላል፡-

  • የኤክሴል የስራ መጽሐፍን ይክፈቱ እና የ VBA አርታዒን ያስጀምሩ (ይህን ለማድረግ ጠቅ ያድርጉ Alt + F11) ፣ እና ከዚያ ይጫኑ F2.
  • በማያ ገጹ ላይኛው ግራ በኩል ካለው ተቆልቋይ ዝርዝር ውስጥ ቤተ-መጽሐፍት ይምረጡ VBA.
  • አብሮ የተሰሩ የVBA ክፍሎች እና ተግባራት ዝርዝር ይታያል። በመስኮቱ ግርጌ ያለውን አጭር መግለጫ ለማሳየት የተግባር ስሙን ጠቅ ያድርጉ። በመጫን ላይ F1 ለዚያ ባህሪ የመስመር ላይ እገዛ ገጹን ይከፍታል።

በተጨማሪም፣ አብሮ የተሰሩ የVBA ተግባራት ከምሳሌዎች ጋር የተሟላ ዝርዝር በ Visual Basic Developer Center ውስጥ ይገኛል።

ብጁ ሂደቶች በVBA ውስጥ “ተግባር” እና “ንዑስ”

በኤክሴል ቪዥዋል ቤዚክ ውስጥ አንድ የተወሰነ ተግባር የሚያከናውን የትዕዛዝ ስብስብ በሂደት ውስጥ ተቀምጧል። ሥራ (ተግባር) ወይም ንዑስ (ሱብሮውቲን). በሂደቶቹ መካከል ያለው ዋና ልዩነት ሥራ и ንዑስ አሰራሩ ነው። ሥራ ውጤቱን ይመልሳል, ሂደት ንዑስ - አይደለም.

ስለዚህ, ድርጊቶችን ማከናወን እና የተወሰነ ውጤት ለማግኘት (ለምሳሌ, ብዙ ቁጥሮችን ማጠቃለል) ከፈለጉ, አሰራሩ ብዙውን ጊዜ ጥቅም ላይ ይውላል ሥራ, እና አንዳንድ ድርጊቶችን በቀላሉ ለማከናወን (ለምሳሌ, የሴሎች ቡድን ቅርጸትን ለመቀየር) ሂደቱን መምረጥ ያስፈልግዎታል. ንዑስ.

ሙግቶች

ክርክሮችን በመጠቀም የተለያዩ መረጃዎች ወደ VBA ሂደቶች ሊተላለፉ ይችላሉ። የክርክር ዝርዝሩ አንድን ሂደት ሲያውጅ ይገለጻል። ለምሳሌ, የአሰራር ሂደቱ ንዑስ በVBA ውስጥ የተሰጠውን ኢንቲጀር (ኢንቲጀር) ወደ እያንዳንዱ ሕዋስ በተመረጠው ክልል ውስጥ ይጨምራል። ክርክር በመጠቀም ይህንን ቁጥር ወደ ሂደቱ ማስተላለፍ ይችላሉ ፣

ንዑስ AddToCells (i እንደ ኢንቲጀር) ... መጨረሻ ንዑስ

ለሂደቶች ክርክሮች እንዳሉ ያስታውሱ ሥራ и ንዑስ በ VBA ውስጥ አማራጭ ነው. አንዳንድ ሂደቶች ክርክሮችን አያስፈልጋቸውም.

አማራጭ ክርክሮች

የVBA ሂደቶች አማራጭ ክርክሮች ሊኖራቸው ይችላል። እነዚህ ተጠቃሚው ከፈለገ ሊገልፅላቸው የሚችላቸው ነጋሪ እሴቶች ናቸው ፣ እና ከተተዉ ፣ አሰራሩ ለእነሱ ነባሪ እሴቶችን ይጠቀማል።

ወደ ቀደመው ምሳሌ ስንመለስ የኢንቲጀር ክርክርን ወደ ተግባር አማራጭ ለማድረግ፣ እንደሚከተለው ይገለጻል።

ንዑስ AddToCells (አማራጭ i እንደ ኢንቲጀር = 0)

በዚህ ጉዳይ ላይ የኢንቲጀር ክርክር i ነባሪው 0 ይሆናል።

በአንድ አሰራር ውስጥ በርካታ አማራጭ ነጋሪ እሴቶች ሊኖሩ ይችላሉ, ሁሉም በክርክር ዝርዝሩ መጨረሻ ላይ ተዘርዝረዋል.

በዋጋ እና በማጣቀሻ ክርክሮችን ማለፍ

በVBA ውስጥ ያሉ ክርክሮች በሁለት መንገዶች ወደ አንድ ሂደት ሊተላለፉ ይችላሉ፡

  • በቪቪል - ክርክርን በእሴት ማለፍ። ይህ ማለት እሴቱ ብቻ ነው (ይህም የክርክሩ ቅጂ) ወደ ሂደቱ ተላልፏል, ስለዚህ በሂደቱ ውስጥ ባለው ክርክር ላይ የተደረጉ ማናቸውም ለውጦች የአሰራር ሂደቱ ሲወጣ ይጠፋል.
  • ባይረፍ - ክርክርን በማጣቀሻ ማለፍ. ያም ማለት በማህደረ ትውስታ ውስጥ ያለው የክርክር ቦታ ትክክለኛ አድራሻ ወደ ሂደቱ ተላልፏል. በሂደቱ ውስጥ ላለ ክርክር የተደረጉ ማናቸውም ለውጦች የአሰራር ሂደቱ ሲወጣ ይድናል.

ቁልፍ ቃላትን መጠቀም በቪቪል or ባይረፍ በአሰራር መግለጫው ውስጥ ክርክሩ ወደ ሂደቱ እንዴት እንደሚተላለፍ መግለጽ ይችላሉ. ይህ ከዚህ በታች ባሉት ምሳሌዎች ይታያል።

ንዑስ AddToCells(ByVal i As Integer) ... የመጨረሻ ንዑስ
በዚህ ጉዳይ ላይ የኢንቲጀር ክርክር i በዋጋ አልፏል. የአሰራር ሂደቱን ከለቀቁ በኋላ ንዑስ ሁሉም የተሰራው i ለውጦች ይጠፋሉ.
ንዑስ AddToCells (ByRef i As Integer) ... የመጨረሻ ንዑስ
በዚህ ጉዳይ ላይ የኢንቲጀር ክርክር i በማጣቀሻ አልፏል. የአሰራር ሂደቱን ከለቀቁ በኋላ ንዑስ ሁሉም የተሰራው i ለውጦቹ ወደ ሂደቱ በተላለፈው ተለዋዋጭ ውስጥ ይቀመጣሉ ንዑስ.

በVBA ውስጥ ያሉ ክርክሮች በነባሪ በማጣቀሻ እንደሚተላለፉ ያስታውሱ። በሌላ አነጋገር, ቁልፍ ቃላት ጥቅም ላይ ካልዋሉ በቪቪል or ባይረፍ, ከዚያም ክርክሩ በማጣቀሻ ይተላለፋል.

የአሰራር ሂደቱን ከመቀጠልዎ በፊት ሥራ и ንዑስ በበለጠ ዝርዝር, በእነዚህ ሁለት የአሠራር ዓይነቶች መካከል ያሉትን ባህሪያት እና ልዩነቶች እንደገና ለመመልከት ጠቃሚ ይሆናል. የሚከተሉት የVBA ሂደቶች አጭር ውይይቶች ናቸው። ሥራ и ንዑስ እና ቀላል ምሳሌዎች ይታያሉ.

የ VBA ሂደት "ተግባር"

የቪቢኤ አርታኢ ሂደቱን ይገነዘባል ሥራበሚከተሉት የመክፈቻ እና የመዝጊያ መግለጫዎች መካከል የተዘጉ የትእዛዞች ቡድን ሲያገኝ፡-

ተግባር ... መጨረሻ ተግባር

ቀደም ሲል እንደተጠቀሰው, የአሰራር ሂደቱ ሥራ በ VBA (በተቃራኒው ንዑስ) እሴት ይመልሳል። የሚከተሉት ደንቦች ዋጋዎችን ለመመለስ ተፈጻሚ ይሆናሉ፡

  • የመመለሻ እሴቱ የውሂብ አይነት በሂደቱ ራስጌ ውስጥ መገለጽ አለበት። ሥራ.
  • የመመለሻ እሴቱን የያዘው ተለዋዋጭ ከሂደቱ ጋር ተመሳሳይ መሰየም አለበት። ሥራ. ይህ ተለዋዋጭ ሁልጊዜ እንደ የሂደቱ ዋና አካል ሆኖ ስለሚገኝ ለብቻው ማወጅ አያስፈልግም። ሥራ.

ይህ በሚከተለው ምሳሌ ላይ በደንብ ተብራርቷል.

የVBA ተግባር ምሳሌ፡ በ 3 ቁጥሮች ላይ የሂሳብ አሰራርን ማከናወን

የሚከተለው የVBA አሰራር ኮድ ምሳሌ ነው። ሥራ, ይህም ሦስት ዓይነት ክርክሮችን ይወስዳል እጥፍ (ድርብ ትክክለኛነት ተንሳፋፊ-ነጥብ ቁጥሮች). በውጤቱም, አሰራሩ ሌላ ዓይነት ቁጥር ይመልሳል እጥፍከሦስተኛው ነጋሪ እሴት ሲቀነስ ከመጀመሪያዎቹ ሁለት ነጋሪ እሴቶች ድምር ጋር እኩል ነው።

ተግባር SumMinus (dNum1 እንደ ድርብ፣ dNum2 እንደ ድርብ፣ dNum3 እንደ ድርብ) እንደ ድርብ ድምርሚኑስ = dNum1 + dNum2 - dNum3 የመጨረሻ ተግባር

ይህ በጣም ቀላል VBA ሂደት ሥራ መረጃ እንዴት በክርክር ወደ አንድ ሂደት እንደሚተላለፍ ያሳያል። በሂደቱ የተመለሰው የውሂብ አይነት እንደ ተገልጿል ማየት ትችላለህ እጥፍ (ቃላቶቹ ይላሉ እንደ ድርብ ከክርክር ዝርዝር በኋላ). ይህ ምሳሌ የሂደቱን ውጤት እንዴት ያሳያል ሥራ ከሂደቱ ስም ጋር ተመሳሳይ ስም ባለው ተለዋዋጭ ውስጥ ተከማችቷል።

የVBA አሰራርን "ተግባር" በመጥራት

ከላይ ያለው ቀላል አሰራር ከሆነ ሥራ በ Visual Basic አርታዒ ውስጥ ሞጁል ውስጥ ገብቷል፣ ከሌሎች የVBA አካሄዶች ሊጠራ ወይም በኤክሴል የስራ ደብተር ውስጥ በስራ ሉህ ላይ መጠቀም ይችላል።

ከሌላ አሰራር ወደ VBA አሰራር “ተግባር” ይደውሉ

ሥነ ሥርዓት ሥራ ያንን አሰራር በቀላሉ ለተለዋዋጭ በመመደብ ከሌላ VBA አሰራር ሊጠራ ይችላል። የሚከተለው ምሳሌ ለሂደቱ ጥሪን ያሳያል ሰሚኑስ, እሱም ከላይ የተገለፀው.

ንዑስ ዋና() ድምር ድምር እንደ ድርብ ድምር = SumMinus(5፣ 4፣ 3) የመጨረሻ ንዑስ

ከስራ ሉህ ወደ VBA አሰራር “ተግባር” ይደውሉ

VBA ሂደት ሥራ እንደማንኛውም አብሮገነብ የኤክሴል ተግባር ከኤክሴል ሉህ ሊጠራ ይችላል። ስለዚህ, በቀድሞው ምሳሌ ውስጥ የተፈጠረው አሰራር ሥራ - ሰሚኑስ የሚከተለውን አገላለጽ ወደ የስራ ሉህ ሕዋስ ውስጥ በማስገባት ሊጠራ ይችላል፡-

=SumMinus(10, 5, 2)

የ VBA ሂደት "ንዑስ"

የቪቢኤ አርታኢ ከፊት ለፊቱ አንድ አሰራር እንዳለ ተረድቷል። ንዑስበሚከተሉት የመክፈቻ እና የመዝጊያ መግለጫዎች መካከል የተዘጉ የትእዛዞች ቡድን ሲያገኝ፡-

ንዑስ ... መጨረሻ ንዑስ

የVBA ሂደት “ንዑስ”፡ ምሳሌ 1. የመሃል አሰላለፍ እና የቅርጸ-ቁምፊ መጠን ለውጥ በተመረጠው የሕዋስ ክልል ውስጥ

የቀላል VBA አሰራርን እንደ ምሳሌ እንመልከት ንዑስየተመረጠውን የሕዋስ ክልል ቅርጸት መቀየር የማን ተግባር ነው። ሴሎቹ መሃል ላይ ናቸው (በሁለቱም በአቀባዊ እና በአግድም) እና የቅርጸ ቁምፊው መጠን በተጠቃሚው ወደተገለጸው ይቀየራል።

ንዑስ ፎርማት_ማእከላዊ_እና_መጠን(አማራጭ iFontSize እንደ ኢንቲጀር = 10) Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Size = iFontSize End Sub Sub.

ይህ አሰራር ንዑስ ድርጊቶችን ይፈጽማል ነገር ግን ውጤቱን አይመልስም.

ይህ ምሳሌ የአማራጭ መከራከሪያንም ይጠቀማል የፊደል መጠን. ክርክር ከሆነ የፊደል መጠን ወደ ሂደቱ አልተላለፈም ንዑስ, ከዚያም የእሱ ነባሪ እሴቱ 10. ቢሆንም, ክርክሩ ከሆነ የፊደል መጠን ወደ አሰራር ተላልፏል ንዑስ, ከዚያም የተመረጠው የሕዋስ ክልል በተጠቃሚው ወደተገለጸው የቅርጸ-ቁምፊ መጠን ይዘጋጃል።

የVBA ንዑስ ሂደት፡ ምሳሌ 2፡ መሃል አሰልፍ እና ደማቅ ቅርጸ-ቁምፊ በተመረጠው የሕዋስ ክልል ውስጥ

የሚከተለው አሰራር አሁን ከተነጋገርነው ጋር ተመሳሳይ ነው, ነገር ግን በዚህ ጊዜ, መጠኑን ከመቀየር ይልቅ, በተመረጠው የሴሎች ክልል ላይ ደማቅ የቅርጸ ቁምፊ ዘይቤን ይጠቀማል. ይህ ምሳሌ ሂደት ነው ንዑስምንም ክርክር የማይወስድ፡-

ንዑስ ፎርማት_ማእከላዊ_እና_ደፋር() Selection.HorizontalAlignment = xlCenter Selection.VerticalAlignment = xlCenter Selection.Font.Bold = True End Sub.

በ Excel VBA ውስጥ "ንዑስ" አሰራርን መጥራት

ከሌላ አሰራር የVBA አሰራርን "Sub" ይደውሉ

ወደ VBA አሰራር ለመደወል ንዑስ ከሌላ የ VBA አሰራር, ቁልፍ ቃሉን መጻፍ ያስፈልግዎታል ጥሪ, የአሰራር ስም ንዑስ እና ተጨማሪ በቅንፍ ውስጥ የሂደቱ ክርክሮች አሉ. ይህ ከዚህ በታች ባለው ምሳሌ ይታያል።

ንዑስ ዋና() የጥሪ ቅርጸት_የተማከለ_እና_መጠን(20) የመጨረሻ ንዑስ

የአሰራር ሂደቱ ከሆነ ቅርጸት_የተማከለ_እና_መጠን ከአንድ በላይ መከራከሪያ አላቸው፣ በነጠላ ሰረዞች መለያየት አለባቸው። ልክ እንደዚህ:

ንዑስ ዋና() የጥሪ ቅርጸት_የተማከለ_እና_መጠን(arg1፣ arg2፣ ...) መጨረሻ ንዑስ

ከስራ ሉህ ወደ VBA አሰራር “Sub” ይደውሉ

ሥነ ሥርዓት ንዑስ በአሰራር ሂደት እንደሚቻለው በቀጥታ ወደ ኤክሴል ሉህ ሕዋስ ውስጥ መግባት አይቻልም ሥራምክንያቱም የአሰራር ሂደቱ ንዑስ ዋጋ አይመልስም. ይሁን እንጂ ሂደቶች ንዑስ, ክርክር የሌላቸው እና እንደ የተገለጹ ሕዝባዊ (ከዚህ በታች እንደሚታየው) ለስራ ሉህ ተጠቃሚዎች ይገኛል። ስለዚህ, ከላይ ከተገለጹት ቀላል ሂደቶች ንዑስ በ Visual Basic Editor ውስጥ ሞጁል ውስጥ ገብቷል, የአሰራር ሂደቱ ፎርማት_ማእከላዊ_እና_ደፋር በኤክሴል የስራ ሉህ ውስጥ ጥቅም ላይ ሊውል ይችላል እና አሰራሩ ቅርጸት_የተማከለ_እና_መጠን - ክርክሮች ስላሉት አይገኝም።

ሂደቱን ለማስኬድ (ወይም ለማስፈጸም) ቀላሉ መንገድ እዚህ አለ። ንዑስ, ከሥራ ሉህ ማግኘት ይቻላል:

  • ጋዜጦች Alt + F8 (ቁልፉን ተጫን alt እና ወደ ታች በመያዝ, ቁልፉን ይጫኑ F8).
  • በሚታየው የማክሮዎች ዝርዝር ውስጥ, ለማሄድ የሚፈልጉትን ይምረጡ.
  • ጋዜጦች ሩጫ (ሩጫ)

አንድ ሂደት ለማከናወን ንዑስ በፍጥነት እና በቀላሉ የቁልፍ ሰሌዳ አቋራጭ መመደብ ይችላሉ. ለዚህ:

  • ጋዜጦች Alt + F8.
  • በሚታየው የማክሮዎች ዝርዝር ውስጥ የቁልፍ ሰሌዳ አቋራጭ ለመመደብ የሚፈልጉትን ይምረጡ።
  • ጋዜጦች ግቤቶች (አማራጮች) እና በሚታየው የንግግር ሳጥን ውስጥ የቁልፍ ሰሌዳ አቋራጭ ያስገቡ።
  • ጋዜጦች OK እና መገናኛውን ዝጋ ማክሮ (ማክሮ)።

ትኩረት: የቁልፍ ሰሌዳ አቋራጭን ለማክሮ ሲመድቡ በ Excel ውስጥ እንደ መደበኛ ጥቅም ላይ ያልዋለ መሆኑን ያረጋግጡ (ለምሳሌ፡- Ctrl + C). ቀደም ሲል ያለውን የቁልፍ ሰሌዳ አቋራጭ ከመረጡ ወደ ማክሮ ይመደባል እና በዚህ ምክንያት ተጠቃሚው በአጋጣሚ ማክሮውን ሊጀምር ይችላል።

የVBA አሰራር ወሰን

የዚህ ማጠናከሪያ ትምህርት ክፍል 2 ስለ ተለዋዋጮች እና ቋሚዎች ወሰን እና የቁልፍ ቃላትን ሚና ተወያይቷል። ሕዝባዊ и የግል. እነዚህ ቁልፍ ቃላት ከVBA ሂደቶች ጋርም ጥቅም ላይ ሊውሉ ይችላሉ፡

የህዝብ ንዑስ AddToCells (i እንደ ኢንቲጀር) ... የመጨረሻ ንዑስ
የሂደቱ መግለጫ በቁልፍ ቃሉ የሚቀድም ከሆነ ሕዝባዊ, ከዚያም አሰራሩ በዚያ VBA ፕሮጀክት ውስጥ ለሁሉም ሞጁሎች የሚገኝ ይሆናል.
የግል ንዑስ AddToCells (i እንደ ኢንቲጀር) ... የመጨረሻ ንዑስ
የሂደቱ መግለጫ በቁልፍ ቃሉ የሚቀድም ከሆነ የግል, ከዚያ ይህ አሰራር ለአሁኑ ሞጁል ብቻ የሚገኝ ይሆናል. በሌላ ሞጁል ውስጥ ወይም ከኤክሴል የስራ ደብተር ውስጥ እያለ ሊጠራ አይችልም.

የVBA አሰራርን ከማወጅዎ በፊት ያስታውሱ ሥራ or ንዑስ ቁልፍ ቃል አልገባም, ነባሪው ንብረት ለሂደቱ ተዘጋጅቷል ሕዝባዊ (በዚህ VBA ፕሮጀክት ውስጥ በሁሉም ቦታ ይገኛል ማለት ነው)። ይህ በነባሪ ከተለዋዋጭ መግለጫዎች ተቃራኒ ነው። የግል.

ከVBA ሂደቶች “ተግባር” እና “ንዑስ” ቀድሞ መውጣት

የVBA ሂደትን አፈፃፀም ማቋረጥ ከፈለጉ ሥራ or ንዑስ, ተፈጥሯዊ ፍጻሜውን ሳይጠብቅ, ከዚያ ለዚህ ኦፕሬተሮች አሉ የመውጣት ተግባር и ንዑስ ክፍል ውጣ. የእነዚህ ኦፕሬተሮች አጠቃቀም ቀላል አሰራርን እንደ ምሳሌ በመጠቀም ከዚህ በታች ይታያል. ሥራተጨማሪ ስራዎችን ለማከናወን አወንታዊ ክርክርን የሚጠብቅ. አወንታዊ ያልሆነ እሴት ወደ ሂደቱ ከተላለፈ ተጨማሪ ክዋኔዎች ሊደረጉ አይችሉም ስለዚህ ተጠቃሚው የስህተት መልእክት መታየት አለበት እና አሰራሩ ወዲያውኑ መውጣት አለበት፡

ተግባር VAT_Amount(sVAT_Rate ነጠላ) እንደ ነጠላ VAT_Amount = 0 sVAT_Rate ከሆነ <= 0 ከዚያም MsgBox "የተጠበቀው የsVAT_Rate አዎንታዊ እሴት ነገር ግን ተቀብሏል" እና sVAT_Rate መውጫ ተግባር የሚያልቅ ከሆነ ... ተግባር ያበቃል

እባክዎ ሂደቱን ከማጠናቀቅዎ በፊት ያስታውሱ ሥራ - የተእታ_መጠን, አብሮ የተሰራ VBA ተግባር በኮዱ ውስጥ ገብቷል። MsgBoxለተጠቃሚው የማስጠንቀቂያ ብቅ ባይን የሚያሳይ።

መልስ ይስጡ