Lùban ann an VBA

Tha suidheachaidhean ann nuair a tha feum air prògram VBA gus an aon sheata de ghnìomhan a dhèanamh grunn thursan ann an sreath (is e sin, ath-aithris an aon bhloc de chòd grunn thursan). Faodar seo a dhèanamh a’ cleachdadh lùban VBA.

Am measg lùban VBA tha:

An ath rud, bheir sinn sùil nas mionaidiche air gach aon de na cuairtean sin.

Airson gnìomhaiche lùb ann an Visual Basic

Structar an gnìomhaiche lùb Tha ann an Visual Basic faodar a chuir air dòigh ann an aon de dhà chruth: mar lùb Airson … Air adhart no mar lùb Airson Each.

Rothaireachd “Airson … Air adhart”

Rothaireachd Airson … Air adhart a’ cleachdadh caochladair a bheir luachan bho raon sònraichte ann an òrdugh. Le gach atharrachadh ann an luach a’ chaochladair, thèid na gnìomhan a tha dùinte ann am bodhaig a’ chearcall a choileanadh. Tha seo furasta a thuigsinn bho eisimpleir shìmplidh:

Airson i = 1 Gu 10 Iomlan = Iomlan + iArray(i) Air adhart i

Anns an lùb shìmplidh seo Airson … Air adhart caochladair ga chleachdadh i, a bheir na luachan 1, 2, 3, ... 10 ann an òrdugh, agus airson gach aon de na luachan sin, thèid an còd VBA taobh a-staigh an lùb a chuir gu bàs. Mar sin, tha an lùb seo a 'toirt cunntas air na h-eileamaidean den raon. iArraigh ann an caochladair iomlan.

Anns an eisimpleir gu h-àrd, chan eil an àrdachadh lùb air a shònrachadh, mar sin gus an caochladair àrdachadh i bho 1 gu 10, is e àrdachadh a th’ anns an àbhaist 1… Ach, ann an cuid de chùisean feumar luachan àrdachaidh eadar-dhealaichte a chleachdadh airson an lùb. Faodar seo a dhèanamh a’ cleachdadh am prìomh fhacal ceummar a chithear anns an eisimpleir shìmplidh a leanas.

Airson d = 0 Gu 10 Ceum 0.1 dTotal = dTotal + d An ath d

Leis gu bheil san eisimpleir gu h-àrd, tha an ceum àrdachaidh air a shuidheachadh co-ionann ri 0.1, an uairsin an caochlaideach d Iomlan airson gach ath-aithris den chearcall a’ gabhail ris na luachan 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Gus an ceum lùbte ann an VBA a dhearbhadh, faodaidh tu luach àicheil a chleachdadh, mar eisimpleir, mar seo:

Airson i = 10 Gu 1 Ceum -1 iArray(i) = i Air adhart i

Seo an àrdachadh -1, mar sin an caochlaideach i le gach ath-aithris den chearcall a’ gabhail ris na luachan 10, 9, 8, … 1.

Lùb "Airson gach"

Rothaireachd Airson Each coltach ri cearcall Airson … Air adhart, ach an àite a bhith ag ath-aithris thairis air an t-sreath de luachan airson an caochlaideach counter, an lùb Airson Each a’ coileanadh seata de ghnìomhan airson gach nì anns a’ bhuidheann de nithean ainmichte. Anns an eisimpleir a leanas, a 'cleachdadh lùb Airson Each ag àireamhachadh a h-uile duilleag anns an leabhar-obrach Excel gnàthach:

Dim wsheet Mar dhuilleag-obrach airson gach duilleag ann an duilleagan-obrach MsgBox "Найден лист:" & wSheet.Name An ath wSheet

Aithris brisidh lùb “Exit For”

Operator A-mach airson air a chleachdadh gus stad a chuir air a’ chearcall. Cho luath ‘s a thachras an aithris seo anns a’ chòd, bidh am prògram a ’crìochnachadh coileanadh na lùb agus a’ dol air adhart gu coileanadh nan aithrisean a tha sa chòd dìreach às deidh an lùb seo. Faodar seo a chleachdadh, mar eisimpleir, gus luach sònraichte a lorg ann an sreath. Gus seo a dhèanamh, a 'cleachdadh lùb, thèid gach eileamaid den raon a sganadh. Cho luath ‘s a lorgar an eileamaid riatanach, chan fheumar coimhead tron ​​​​chòrr - tha stad air a’ chearcall.

Iarrtas gnìomhaiche A-mach airson air a thaisbeanadh anns an eisimpleir a leanas. An seo bidh an lùb ag ath-aithris còrr air 100 inntrigeadh raon agus a’ dèanamh coimeas eadar gach fear agus luach a’ chaochladair dVal… Ma lorgar maids, thèid an lùb a thoirt gu crìch:

Airson i = 1 Gu 100 Ma tha dValues(i) = dVal An uairsin IndexVal = i Fàgail airson Deireadh Ma tha an ath rud i

An Dèan Fhad ‘s a tha lùb ann an Visual Basic

Rothaireachd Dèan fhad 'sa tha cuir an gnìomh bloc de chòd fhad ‘s a thèid an suidheachadh ainmichte a choileanadh. Tha na leanas mar eisimpleir de mhodh-obrach Fo, anns a bheil a 'cleachdadh an lùb Dèan fhad 'sa tha Tha àireamhan Fibonacci nach eil nas àirde na 1000 air an taisbeanadh ann an òrdugh:

Bidh 'Fo-mhodh-obrach a' toirt a-mach àireamhan Fibonacci nach eil nas àirde na 1000 Fo-Fibonacci() cunntais Dim i As Integer' gus suidheachadh na h-eileamaidean san t-sreath Dim iFib As Integer 'a' stòradh luach làithreach an t-sreath Dim iFib_Next As Integer 'a' stòradh an ath luach den t-sreath Dim iStep As Integer 'stòraidh meud an ath àrdachaidh 'tòisich caochladairean i agus iFib_Next i = 1 iFib_Next = 0 'Dèan Ged a thèid an lùb an gnìomh gus am bi luach 'àireamh làithreach Fibonacci nas àirde na 1000 Dèan Ged iFib_Next < 1000 Ma tha i = 1 An uairsin 'cùis shònraichte airson a' chiad eileamaid iStep = 1 iFib = 0 Eile 'sàbhail meud an ath àrdachaidh mus sgrìobh thu thairis air 'luach làithreach an t-sreath iStep = iFib iFib = iFib_Next End Ma 'clò-bhuail an àireamh Fibonacci làithreach ann an colbh A de an duilleag-obrach gnìomhach 'anns an t-sreath le clàr-amais i Cells(i , 1).Value = iFib' obraich a-mach an ath àireamh Fibonacci agus àrdaich clàr-amais suidheachadh na h-eileamaid le 1 iFib_Next = iFib + iStep i = i + 1 Loop End Fo

Anns an eisimpleir a chaidh a thoirt seachad, an suidheachadh iFib_Air adhart <1000 air a sgrùdadh aig toiseach a’ chearcaill. Uime sin, ma tha a 'chiad luach iFib_Air adhart Nam biodh barrachd air 1000 ann, cha bhiodh an lùb air a chuir gu bàs gu bràth.

Dòigh eile air lùb a chuir an gnìomh Dèan fhad 'sa tha - cuir an suidheachadh chan ann aig an toiseach, ach aig deireadh an lùb. Anns a 'chùis seo, thèid an lùb a chur gu bàs co-dhiù aon uair, ge bith a bheil an suidheachadh air a choileanadh.

Gu sgeamaigeach, leithid cearcall Dèan fhad 'sa tha leis an t-suidheachadh ri sgrùdadh aig an deireadh seallaidh e mar seo:

Dèan ... Lùb Fhad 's a tha iFib_Air adhart < 1000

Tagh «Dèan Suas gu» ann an Visual Basic

Rothaireachd Dèan Gus glè choltach ri cearcall Dèan fhad 'sa tha: tha am bloc còd ann am bodhaig na lùb air a chuir gu bàs a-rithist agus a-rithist gus an tèid an suidheachadh ainmichte a choileanadh (is e toradh an abairt chumha True). Anns an ath mhodh-obrach Fo a 'cleachdadh cearcall Dèan Gus fhaighinn air ais luachan bho gach cealla ann an colbh A duilleag-obrach gus an coinnich an colbh ri cealla falamh:

iRow = 1 Dèan Gus an tèid IsEmpty(Cells(iRow, 1)) 'Tha luach na cealla làithreach air a stòradh san raon dCellValues ​​​​dCellValues(iRow) = ceallan(iRow, 1).Luach iRow = iRow + 1 lùb

Anns an eisimpleir gu h-àrd, an suidheachadh IsEmpty(Ceallan(iRow, 1)) suidhichte aig toiseach an structair Dèan Gus, mar sin thèid an lùb a chuir gu bàs co-dhiù aon uair mura h-eil a’ chiad chill a chaidh a thogail falamh.

Ach, mar a chithear ann an eisimpleirean lùb Dèan fhad 'sa tha, ann an cuid de shuidheachaidhean feumar an lùb a chuir gu bàs co-dhiù aon uair, ge bith dè an toradh tùsail a th’ aig an abairt chumha. Anns a 'chùis seo, bu chòir an abairt chumha a bhith air a chur aig deireadh an lùb, mar seo:

Dèan ... lùb gus am bi e falamh (Ceallan(iRow, 1))

Leave a Reply