വിബിഎയിലെ ലൂപ്പുകൾ

ഒരേ കൂട്ടം പ്രവർത്തനങ്ങൾ തുടർച്ചയായി നിരവധി തവണ നടത്താൻ ഒരു VBA പ്രോഗ്രാം ആവശ്യമായി വരുന്ന സാഹചര്യങ്ങളുണ്ട് (അതായത്, ഒരേ ബ്ലോക്ക് കോഡ് നിരവധി തവണ ആവർത്തിക്കുക). VBA ലൂപ്പുകൾ ഉപയോഗിച്ച് ഇത് ചെയ്യാൻ കഴിയും.

VBA ലൂപ്പുകളിൽ ഇവ ഉൾപ്പെടുന്നു:

അടുത്തതായി, ഈ ഓരോ സൈക്കിളുകളും ഞങ്ങൾ സൂക്ഷ്മമായി പരിശോധിക്കും.

വിഷ്വൽ ബേസിക്കിൽ ലൂപ്പ് ഓപ്പറേറ്റർക്ക്

ലൂപ്പ് ഓപ്പറേറ്ററുടെ ഘടന ദി വിഷ്വൽ ബേസിക്കിൽ രണ്ട് രൂപങ്ങളിൽ ഒന്നിൽ ക്രമീകരിക്കാം: ഒരു ലൂപ്പായി ഇതിനായി... അടുത്തത് അല്ലെങ്കിൽ ഒരു ലൂപ്പായി ഓരോന്നിനും.

സൈക്കിൾ "അതിന് ... അടുത്തത്"

സൈക്കിൾ ഇതിനായി... അടുത്തത് തന്നിരിക്കുന്ന ശ്രേണിയിൽ നിന്ന് തുടർച്ചയായി മൂല്യങ്ങൾ എടുക്കുന്ന ഒരു വേരിയബിൾ ഉപയോഗിക്കുന്നു. വേരിയബിളിന്റെ മൂല്യത്തിന്റെ ഓരോ മാറ്റത്തിലും, സൈക്കിളിന്റെ ശരീരത്തിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന പ്രവർത്തനങ്ങൾ നടത്തുന്നു. ഒരു ലളിതമായ ഉദാഹരണത്തിൽ നിന്ന് ഇത് മനസ്സിലാക്കാൻ എളുപ്പമാണ്:

i = 1 മുതൽ 10 വരെ ആകെ = ആകെ + iArray(i) അടുത്തത് i

ഈ ലളിതമായ ലൂപ്പിൽ ഇതിനായി... അടുത്തത് വേരിയബിൾ ഉപയോഗിക്കുന്നു i, ഇത് 1, 2, 3, … 10 മൂല്യങ്ങൾ തുടർച്ചയായി എടുക്കുന്നു, കൂടാതെ ഈ ഓരോ മൂല്യങ്ങൾക്കും, ലൂപ്പിനുള്ളിലെ VBA കോഡ് എക്സിക്യൂട്ട് ചെയ്യുന്നു. അങ്ങനെ, ഈ ലൂപ്പ് അറേയുടെ ഘടകങ്ങളെ സംഗ്രഹിക്കുന്നു. iArray വേരിയബിളിൽ ആകെ.

മുകളിലെ ഉദാഹരണത്തിൽ, ലൂപ്പ് ഇൻക്രിമെന്റ് വ്യക്തമാക്കിയിട്ടില്ല, അതിനാൽ വേരിയബിൾ വർദ്ധിപ്പിക്കാൻ i 1 മുതൽ 10 വരെ, ഡിഫോൾട്ട് ഒരു ഇൻക്രിമെന്റാണ് 1എന്നിരുന്നാലും, ചില സന്ദർഭങ്ങളിൽ ലൂപ്പിനായി വ്യത്യസ്ത ഇൻക്രിമെന്റ് മൂല്യങ്ങൾ ഉപയോഗിക്കേണ്ടത് ആവശ്യമാണ്. കീവേഡ് ഉപയോഗിച്ച് ഇത് ചെയ്യാൻ കഴിയും ഘട്ടംഇനിപ്പറയുന്ന ലളിതമായ ഉദാഹരണത്തിൽ കാണിച്ചിരിക്കുന്നതുപോലെ.

d = 0 മുതൽ 10 വരെ ഘട്ടം 0.1 dTotal = dTotal + d അടുത്ത d

മുകളിലുള്ള ഉദാഹരണത്തിൽ, ഇൻക്രിമെന്റ് ഘട്ടം തുല്യമായി സജ്ജീകരിച്ചിരിക്കുന്നു 0.1, പിന്നെ വേരിയബിൾ dTotal സൈക്കിളിന്റെ ഓരോ ആവർത്തനത്തിനും 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0 മൂല്യങ്ങൾ എടുക്കുന്നു.

VBA-യിലെ ലൂപ്പ് ഘട്ടം നിർണ്ണയിക്കാൻ, നിങ്ങൾക്ക് ഒരു നെഗറ്റീവ് മൂല്യം ഉപയോഗിക്കാം, ഉദാഹരണത്തിന്, ഇതുപോലെ:

i = 10 മുതൽ 1 വരെ ഘട്ടം -1 iArray(i) = i Next i

ഇവിടെയാണ് ഇൻക്രിമെന്റ് -1, അതിനാൽ വേരിയബിൾ i സൈക്കിളിന്റെ ഓരോ ആവർത്തനത്തിലും 10, 9, 8, … 1 മൂല്യങ്ങൾ എടുക്കുന്നു.

ലൂപ്പ് "ഓരോന്നിനും"

സൈക്കിൾ ഓരോന്നിനും ഒരു ചക്രം പോലെ ഇതിനായി... അടുത്തത്, എന്നാൽ കൌണ്ടർ വേരിയബിളിനായുള്ള മൂല്യങ്ങളുടെ ക്രമത്തിൽ ആവർത്തിക്കുന്നതിനുപകരം, ലൂപ്പ് ഓരോന്നിനും നിർദ്ദിഷ്‌ട ഒബ്‌ജക്‌റ്റുകളുടെ ഗ്രൂപ്പിലെ ഓരോ ഒബ്‌ജക്റ്റിനും ഒരു കൂട്ടം പ്രവർത്തനങ്ങൾ ചെയ്യുന്നു. ഇനിപ്പറയുന്ന ഉദാഹരണത്തിൽ, ഒരു ലൂപ്പ് ഉപയോഗിക്കുന്നു ഓരോന്നിനും നിലവിലെ Excel വർക്ക്ബുക്കിലെ എല്ലാ ഷീറ്റുകളും കണക്കാക്കുന്നു:

വർക്ക്ഷീറ്റിലെ ഓരോ wഷീറ്റിനും വർക്ക്ഷീറ്റായി മങ്ങിയ wsheet MsgBox "നെയ്ഡൻ ലിസ്റ്റ്: " & wSheet.Name Next wsheet

ലൂപ്പ് ഇന്ററപ്റ്റ് സ്റ്റേറ്റ്‌മെന്റ് “എക്സിറ്റ് ഫോർ”

ഓപ്പറേറ്റർ പുറത്തുകടക്കുക സൈക്കിൾ തടസ്സപ്പെടുത്താൻ ഉപയോഗിക്കുന്നു. കോഡിൽ ഈ പ്രസ്താവന വന്നാലുടൻ, പ്രോഗ്രാം ലൂപ്പിന്റെ നിർവ്വഹണം അവസാനിപ്പിക്കുകയും ഈ ലൂപ്പിന് തൊട്ടുപിന്നാലെ കോഡിലുള്ള പ്രസ്താവനകളുടെ നിർവ്വഹണത്തിലേക്ക് പോകുകയും ചെയ്യുന്നു. ഉദാഹരണത്തിന്, ഒരു അറേയിൽ ഒരു നിർദ്ദിഷ്ട മൂല്യം തിരയാൻ ഇത് ഉപയോഗിക്കാം. ഇത് ചെയ്യുന്നതിന്, ഒരു ലൂപ്പ് ഉപയോഗിച്ച്, അറേയുടെ ഓരോ ഘടകങ്ങളും സ്കാൻ ചെയ്യുന്നു. ആവശ്യമായ ഘടകം കണ്ടെത്തിയ ഉടൻ, ബാക്കിയുള്ളവയിലൂടെ നോക്കേണ്ട ആവശ്യമില്ല - സൈക്കിൾ തടസ്സപ്പെട്ടു.

ഓപ്പറേറ്റർ ആപ്ലിക്കേഷൻ പുറത്തുകടക്കുക ഇനിപ്പറയുന്ന ഉദാഹരണത്തിൽ പ്രദർശിപ്പിച്ചിരിക്കുന്നു. ഇവിടെ ലൂപ്പ് 100-ലധികം അറേ എൻട്രികൾ ആവർത്തിക്കുകയും ഓരോന്നിനെയും വേരിയബിളിന്റെ മൂല്യവുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യുന്നു. dVal… ഒരു പൊരുത്തം കണ്ടെത്തിയാൽ, ലൂപ്പ് അവസാനിപ്പിക്കും:

i = 1 മുതൽ 100 ​​വരെയാണെങ്കിൽ dValues(i) = dVal പിന്നെ IndexVal = i എക്സിറ്റ് ഫോർ എൻഡ് ആണെങ്കിൽ

വിഷ്വൽ ബേസിക്കിൽ ലൂപ്പ് ചെയ്യുമ്പോൾ ചെയ്യുക

സൈക്കിൾ സമയത്ത് ചെയ്യാൻ നിർദ്ദിഷ്ട വ്യവസ്ഥ പാലിക്കുന്നിടത്തോളം കോഡിന്റെ ഒരു ബ്ലോക്ക് എക്സിക്യൂട്ട് ചെയ്യുന്നു. ഒരു നടപടിക്രമത്തിന്റെ ഉദാഹരണമാണ് ഇനിപ്പറയുന്നത് സബ്, അതിൽ ലൂപ്പ് ഉപയോഗിക്കുന്നു സമയത്ത് ചെയ്യാൻ 1000-ൽ കൂടാത്ത ഫിബൊനാച്ചി നമ്പറുകൾ തുടർച്ചയായി പ്രദർശിപ്പിക്കും:

'സബ് പ്രൊസീജിയർ ഔട്ട്‌പുട്ട് ഫിബൊനാച്ചി നമ്പറുകൾ 1000 സബ് ഫിബൊനാച്ചി() Dim i As Integer 'ഡിം iFib As Integer എന്ന ശ്രേണിയിലെ മൂലകത്തിന്റെ സ്ഥാനം സൂചിപ്പിക്കാൻ 'കൗണ്ടർ Dim iFib_Next As Integer' എന്ന ശ്രേണിയുടെ നിലവിലെ മൂല്യം സംഭരിക്കുന്നു 'അടുത്ത മൂല്യം സംഭരിക്കുന്നു. 'ഇനിഷ്യലൈസ് വേരിയബിളുകൾ i, iFib_Next i = 1 iFib_Next = 0 'Do while ലൂപ്പ് എക്സിക്യൂട്ട് ചെയ്യുന്നതുവരെ 'ഇനിഷ്യലൈസ് വേരിയബിളുകൾ Integer As Integer' എന്ന ക്രമത്തിൽ Dim iStep 'ഇനിഷ്യലൈസ് ചെയ്യുക നിലവിലെ ഫിബൊനാച്ചി നമ്പർ 1000-നേക്കാൾ വലുതാണെങ്കിൽ < iFib_1000 1 തുടർന്ന് 'ആദ്യ ഘടകത്തിനായുള്ള പ്രത്യേക കേസ് iStep = 1 iFib = 0 'അടുത്ത ഇൻക്രിമെന്റിന്റെ വലുപ്പം 'ഇൻക്രിമെന്റിന്റെ വലുപ്പം സംരക്ഷിക്കുക' എന്ന ശ്രേണിയുടെ നിലവിലെ മൂല്യം 'iStep = iFib iFib = iFib_Next End' എന്ന കോളം A-ൽ പ്രിന്റ് ചെയ്യുക. ഐ സെല്ലുകൾ (i , 1) ഉള്ള നിരയിലുള്ള സജീവ വർക്ക്ഷീറ്റ്.

നൽകിയിരിക്കുന്ന ഉദാഹരണത്തിൽ, അവസ്ഥ iFib_Next < 1000 ലൂപ്പിന്റെ തുടക്കത്തിൽ പരിശോധിച്ചു. അതിനാൽ, ആദ്യ മൂല്യമാണെങ്കിൽ iFib_Next 1000-ൽ കൂടുതൽ ഉണ്ടെങ്കിൽ, ലൂപ്പ് ഒരിക്കലും എക്സിക്യൂട്ട് ചെയ്യില്ല.

ഒരു ലൂപ്പ് നടപ്പിലാക്കുന്നതിനുള്ള മറ്റൊരു മാർഗ്ഗം സമയത്ത് ചെയ്യാൻ - വ്യവസ്ഥ ആരംഭത്തിലല്ല, ലൂപ്പിന്റെ അവസാനത്തിൽ സ്ഥാപിക്കുക. ഈ സാഹചര്യത്തിൽ, വ്യവസ്ഥ പാലിക്കുന്നുണ്ടോ എന്നത് പരിഗണിക്കാതെ തന്നെ ലൂപ്പ് ഒരു തവണയെങ്കിലും എക്സിക്യൂട്ട് ചെയ്യപ്പെടും.

ആസൂത്രിതമായി, അത്തരമൊരു ചക്രം സമയത്ത് ചെയ്യാൻ അവസാനം പരിശോധിക്കേണ്ട അവസ്ഥ ഇതുപോലെ കാണപ്പെടും:

ചെയ്യുക ... ലൂപ്പ് ചെയ്യുമ്പോൾ iFib_Next < 1000

വിഷ്വൽ ബേസിക്കിൽ "ഡു വരെ"

സൈക്കിൾ വരെ ചെയ്യുക സൈക്കിളിനോട് വളരെ സാമ്യമുണ്ട് സമയത്ത് ചെയ്യാൻ: നിർദ്ദിഷ്ട വ്യവസ്ഥ പാലിക്കുന്നത് വരെ ലൂപ്പിന്റെ ബോഡിയിലെ കോഡിന്റെ ബ്ലോക്ക് വീണ്ടും വീണ്ടും നടപ്പിലാക്കുന്നു (സോപാധിക പദപ്രയോഗത്തിന്റെ ഫലം ട്രൂ). അടുത്ത നടപടിക്രമത്തിൽ സബ് ഒരു സൈക്കിൾ ഉപയോഗിച്ച് വരെ ചെയ്യുക ഒരു നിരയിലെ എല്ലാ സെല്ലുകളിൽ നിന്നും മൂല്യങ്ങൾ വീണ്ടെടുക്കുക A കോളം ഒരു ശൂന്യമായ സെൽ നേരിടുന്നതുവരെ വർക്ക്ഷീറ്റ്:

iRow = 1 ചെയ്യുക IsEmpty വരെ (സെല്ലുകൾ (iRow, 1)) 'നിലവിലെ സെല്ലിന്റെ മൂല്യം അറേയിൽ സംഭരിച്ചിരിക്കുന്നു dCellValues ​​dCellValues(iRow) = Cells(iRow, 1).മൂല്യം iRow = iRow + 1 Loop

മുകളിലുള്ള ഉദാഹരണത്തിൽ, അവസ്ഥ ശൂന്യമാണ്(സെല്ലുകൾ(iRow, 1)) ഘടനയുടെ തുടക്കത്തിൽ സ്ഥിതിചെയ്യുന്നു വരെ ചെയ്യുക, അതിനാൽ ആദ്യം എടുത്ത സെൽ ശൂന്യമല്ലെങ്കിൽ ഒരു തവണയെങ്കിലും ലൂപ്പ് എക്സിക്യൂട്ട് ചെയ്യപ്പെടും.

എന്നിരുന്നാലും, ലൂപ്പ് ഉദാഹരണങ്ങളിൽ കാണിച്ചിരിക്കുന്നതുപോലെ സമയത്ത് ചെയ്യാൻ, ചില സാഹചര്യങ്ങളിൽ സോപാധികമായ പദപ്രയോഗത്തിന്റെ പ്രാരംഭ ഫലം പരിഗണിക്കാതെ, ഒരു തവണയെങ്കിലും ലൂപ്പ് എക്സിക്യൂട്ട് ചെയ്യേണ്ടത് ആവശ്യമാണ്. ഈ സാഹചര്യത്തിൽ, സോപാധിക പദപ്രയോഗം ലൂപ്പിന്റെ അവസാനത്തിൽ സ്ഥാപിക്കണം, ഇതുപോലെ:

ചെയ്യുക... ശൂന്യമാകുന്നതുവരെ ലൂപ്പ് ചെയ്യുക(സെല്ലുകൾ(iRow, 1))

നിങ്ങളുടെ അഭിപ്രായങ്ങൾ രേഖപ്പെടുത്തുക