ለትግበራ በ Visual Basic ውስጥ ያሉ ድርድሮች

ድርድር በ Visual Basic for Application በተለምዶ ተመሳሳይ አይነት ተዛማጅ ተለዋዋጮች ስብስቦችን የሚያከማቹ መዋቅሮች ናቸው። የድርድር ግቤቶች በቁጥር መረጃ ጠቋሚቸው ይደርሳሉ።

ለምሳሌ፣ በኋላ በVBA ኮድ ውስጥ ለመጠቀም ስማቸው መቆጠብ የሚያስፈልጋቸው 20 ሰዎች ያሉት ቡድን አለ። እያንዳንዱን ስም ለመያዝ 20 ተለዋዋጮችን በቀላሉ ማወጅ ይችላል፡-

የዲም ቡድን_አባል1 እንደ ሕብረቁምፊ ዲም ቡድን_አባል 2 እንደ ሕብረቁምፊ ... Dim Team_Member20 እንደ ሕብረቁምፊ

ግን በጣም ቀላል እና የበለጠ የተደራጀ መንገድ መጠቀም ይችላሉ - የቡድን አባላትን ስም ዝርዝር በ 20 ተለዋዋጮች ውስጥ ያከማቹ ሕብረቁምፊ:

ቡድን_አባላትን (ከ1 እስከ 20) እንደ ሕብረቁምፊ ይቀንሱ

ከላይ በሚታየው መስመር ድርድር አውጀናል። አሁን ለእያንዳንዳቸው ንጥረ ነገሮች ዋጋን እንደሚከተለው እንፃፍ።

ቡድን_አባላት(1) = "ጆን ስሚዝ"

መረጃን በድርድር ውስጥ የማከማቸት ተጨማሪ ጥቅም ፣የተለያዩ ተለዋዋጮችን ከመጠቀም ጋር ሲነፃፀር በእያንዳንዱ የድርድር አካል ላይ ተመሳሳይ ተግባር ማከናወን አስፈላጊ በሚሆንበት ጊዜ ግልፅ ይሆናል። የቡድኑ አባላት ስም በ 20 የተለያዩ ተለዋዋጮች ውስጥ ከተከማቸ በእያንዳንዳቸው ላይ ተመሳሳይ እርምጃ ለመውሰድ በእያንዳንዱ ጊዜ ለመጻፍ 20 የኮድ መስመሮችን ይወስዳል። ነገር ግን, ስሞቹ በአንድ ድርድር ውስጥ ከተቀመጡ, ቀላል ዑደትን በመጠቀም ከእያንዳንዳቸው ጋር የተፈለገውን እርምጃ ማከናወን ይችላሉ.

እንዴት እንደሚሰራ የእያንዳንዱን ቡድን አባላት ስም በቅደም ተከተል በአምዱ ሕዋሶች ውስጥ በሚያትመው ኮድ ምሳሌ ከዚህ በታች ቀርቧል። A ንቁ የ Excel ሉህ።

ለ i = 1 እስከ 20 ሕዋሶች (i,1) .እሴት = ቡድን_አባላት(i) ቀጣይ i

በግልጽ ለማየት እንደሚቻለው፣ 20 ስሞችን በሚያከማች ድርድር መስራት 20 የተለያዩ ተለዋዋጮችን ከመጠቀም በጣም አስቸጋሪ እና የበለጠ ትክክለኛ ነው። ግን እነዚህ ስሞች 20 ባይሆኑ ግን 1000 ቢሆንስ? እና በተጨማሪ ፣ የአባት ስሞችን እና የአባት ስሞችን ለየብቻ ማቆየት አስፈላጊ ከሆነ?! በቅርብ ጊዜ ውስጥ እንደዚህ ያለ የድምጽ መጠን በVBA ኮድ ውስጥ ያለ ድርድር እገዛ ማስተናገድ ሙሉ በሙሉ የማይቻል እንደሚሆን ግልጽ ነው።

በኤክሴል ቪዥዋል ቤዚክ ውስጥ ባለ ብዙ ልኬት ድርድሮች

ከላይ የተገለጹት ቪዥዋል ቤዚክ ድርድሮች አንድ-ልኬት ተደርገው ይወሰዳሉ። ይህ ማለት ቀላል የስም ዝርዝር ያከማቻሉ ማለት ነው። ሆኖም ፣ ድርድሮች ብዙ ልኬቶች ሊኖራቸው ይችላል። ለምሳሌ፣ ባለ ሁለት ገጽታ ድርድር ከእሴቶች ፍርግርግ ጋር ሊወዳደር ይችላል።

ለጃንዋሪ ዕለታዊ የሽያጭ አሃዞችን ለ5 የተለያዩ ቡድኖች ማስቀመጥ ይፈልጋሉ እንበል። ይህ ለ5 ቀናት 31 የመለኪያ ስብስቦችን የያዘ ባለ ሁለት አቅጣጫዊ ድርድር ያስፈልገዋል። እንደዚህ አይነት ድርድር እናውጅ፡-

Dim Jan_Sales_ስእል (1 እስከ 31፣ 1 እስከ 5) እንደ ምንዛሪ

የድርድር አባሎችን ለመድረስ የጃን_ሽያጭ_ምስል, የወሩ ቀን እና የትእዛዝ ቁጥርን የሚያመለክቱ ሁለት ኢንዴክሶችን መጠቀም ያስፈልግዎታል. ለምሳሌ፣ የሽያጭ አሃዞችን የያዘ የአንድ አካል አድራሻ 2-ኦ ቡድኖች ለ 15 ኛ ጃንዋሪ እንዲህ ይጻፋል፡-

የጃንዋሪ_ሽያጭ ምስሎች (15፣ 2)

በተመሣሣይ ሁኔታ፣ 3 ወይም ከዚያ በላይ ልኬቶች ያሉት ድርድር ማወጅ ይችላሉ - በድርድር መግለጫው ላይ ተጨማሪ ልኬቶችን ማከል እና የዚህን ድርድር አካላት ለማመልከት ተጨማሪ ኢንዴክሶችን ይጠቀሙ።

አደራደርን በ Excel Visual Basic ማወጅ

ቀደም ሲል በዚህ ጽሑፍ ውስጥ፣ በVBA ውስጥ ድርድሮችን የማወጅ ብዙ ምሳሌዎችን ተመልክተናል፣ ነገር ግን ይህ ርዕስ ጠለቅ ያለ እይታ ሊሰጠው ይገባል። እንደሚታየው፣ ባለ አንድ አቅጣጫ ድርድር እንደሚከተለው ሊገለፅ ይችላል፡-

ቡድን_አባላትን (ከ1 እስከ 20) እንደ ሕብረቁምፊ ይቀንሱ

እንዲህ ዓይነቱ መግለጫ ለVBA አቀናባሪው ድርድር ይነግረዋል። የቡድን አባላት 20 ተለዋዋጮችን ያቀፈ ሲሆን ከ1 እስከ 20 ባለው ኢንዴክሶች ሊደረስባቸው ይችላሉ።ነገር ግን የድርድር ተለዋዋጮችን ከ 0 ወደ 19 ለመቁጠር እናስብ ይሆናል።

ቡድን_አባላትን (ከ0 እስከ 19) እንደ ሕብረቁምፊ ይቀንሱ

በእውነቱ ፣ በነባሪ ፣ የድርድር አካላት ቁጥር ከ 0 ይጀምራል ፣ እና በድርድር መግለጫው ውስጥ ፣ የመነሻ ኢንዴክስ በጭራሽ ላይገለጽ ይችላል ፣

የዲም ቡድን_አባላት(19) እንደ ሕብረቁምፊ

የቪቢኤ አቀናባሪ እንዲህ ያለውን ግቤት እንደ 20 ኤለመንቶች ድርድር ከ0 እስከ 19 ያለውን መረጃ እንደሚያውጅ አድርጎ ይይዘዋል።

ሁለገብ ቪዥዋል ቤዚክ ድርድሮችን ሲያውጅ ተመሳሳይ ደንቦች ይተገበራሉ። ከምሳሌዎቹ በአንዱ ላይ እንደታየው ባለ ሁለት አቅጣጫዊ አደራደር ሲያውጅ የልኬቱ ኢንዴክሶች በነጠላ ሰረዞች ይለያሉ፡

Dim Jan_Sales_ስእል (1 እስከ 31፣ 1 እስከ 5) እንደ ምንዛሪ

ነገር ግን፣ ለሁለቱም የድርድር ልኬቶች የመነሻ ኢንዴክስ ካልገለጹ እና እንደሚከተለው ይፋ ያድርጉት፡-

Dim Jan_Sales_ስእል (31፣ 5) እንደ ምንዛሪ

ከዚያ ይህ ግቤት እንደ ባለ ሁለት-ልኬት ድርድር ይወሰዳል ፣ የመጀመሪያው ልኬት 32 ኢንዴክሶች ከ 0 እስከ 31 ፣ እና የድርድር ሁለተኛው ልኬት ከ 6 እስከ 0 ያሉ 5 ንጥረ ነገሮችን ይይዛል።

ተለዋዋጭ ድርድሮች

ከላይ በተጠቀሱት ምሳሌዎች ውስጥ ያሉት ሁሉም ድርድሮች ቋሚ የቁጥር ልኬቶች አሏቸው። ነገር ግን፣ በብዙ አጋጣሚዎች የእኛ ድርድር ምን ያህል መጠን መሆን እንዳለበት አስቀድመን አናውቅም። ከሁኔታው መውጣት የምንችለው ግዙፍ ድርድር በማወጅ ሲሆን መጠኑ በእርግጠኝነት ለሥራችን ከሚያስፈልገው በላይ ይሆናል። ነገር ግን እንዲህ ዓይነቱ መፍትሔ ብዙ ተጨማሪ ማህደረ ትውስታን ስለሚፈልግ ፕሮግራሙን ሊያዘገይ ይችላል. የተሻለ መፍትሔ አለ. ተለዋዋጭ ድርድር ልንጠቀም እንችላለን - ይህ ማክሮ በሚፈፀምበት ጊዜ መጠኑ ሊስተካከል እና በማንኛውም ጊዜ ሊቀየር የሚችል ድርድር ነው።

ተለዋዋጭ ድርድር በባዶ ቅንፍ ታውጇል፣ እንደዚህ፡-

ቡድን_አባላትን () እንደ ሕብረቁምፊ ደብዝዝ

በመቀጠልም አገላለጹን በመጠቀም በኮድ አፈፃፀም ወቅት የድርድር ልኬትን ማወጅ ያስፈልግዎታል ድጋሚ ዲም:

የድጋሚ ቡድን_አባላት(1ለ20)

እና በኮዱ አፈፃፀም ወቅት የአደራደሩን መጠን እንደገና መለወጥ ከፈለጉ የ ReDim አገላለጽ እንደገና መጠቀም ይችላሉ-

የቡድን_መጠን > 20 ከሆነ የዳግም ቡድን_አባላት(1 ለቡድን_መጠን) የሚያበቃ ከሆነ

ተለዋዋጭ ድርድርን በዚህ መንገድ መቀየር በድርድር ውስጥ የተከማቹ ሁሉንም እሴቶች መጥፋት እንደሚያመጣ ያስታውሱ። በድርድር ውስጥ አስቀድሞ ውሂብ ለማከማቸት ቁልፍ ቃሉን መጠቀም ያስፈልግዎታል ጠብቅከዚህ በታች እንደሚታየው

የቡድን_መጠን > 20 ከሆነ ReDim Preserve Team_Members(1 ለቡድን_መጠን) የሚያበቃ ከሆነ

እንደ አለመታደል ሆኖ ቁልፍ ቃሉ ጠብቅ የድርድር ልኬትን የላይኛው ወሰን ለመለወጥ ብቻ ጥቅም ላይ ሊውል ይችላል። የድርድር የታችኛው ወሰን በዚህ መንገድ ሊቀየር አይችልም። እንዲሁም, ድርድር ብዙ ልኬቶች ካሉት, ከዚያም ቁልፍ ቃሉን ይጠቀሙ ጠብቅ, የድርድር የመጨረሻው ልኬት ብቻ ሊስተካከል ይችላል.

መልስ ይስጡ