ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[Âà¶K] For...Next »P For Each...Next °j°éªº°ò¥»·§©À

¦b¤@楼ªº°ò础¤W²K¥u¨¬«¢,´N¬O¥i¯à¦n¦h术语¤£¤@样¡A§Ú¥u§â¡§´`环¡¨§ï¦¨¤F¡§¦^°é¡¨¡G

结Ìۤƪºµ{§Ç设计¥]§t¤TÏú°ò¥»结ÌÛ¡G顺§Ç结ÌÛ¡B选择结ÌÛ©M¦^°é结ÌÛ¡C
¦^°é结ÌÛ¬O«ü¦b执¦æµ{§Ç时¡A®ÚÕu条¥óªº¯u°²¡A来§P断¬O§_­«Î`执¦æ¨ä¤¤¬Y¬q¥N码¡C­n满¨¬¬Y个条¥ó¡A´N¤@ª½­«Î`执¦æ这¬q¥N码¡Aª½¨ì¤£满¨¬条¥ó为¤î¡C¥]¬A¡GFor¡K¡KNext¡BFor Each¡K¡KNext¡BDo¡K¡Kloop¡Bwhile¡K¡K Wend¥|Ïú¦^°é语¥y¡C
1. For¡KNext语¥y
For¡KNext¦^°é属¤_计数«¬¦^°é¡Aµ{§Ç«ö·Ó该结ÌÛ¤¤«ü©wªº¦^°é¦¸数来执¦æ¦^°éÊ^³¡¤À¡C

For¡K¡KNext语¥yªº®æ¦¡¦p¤U¡G
    For¦^°é变¶q=ªì©l­È TO终­È [Step¨B长]
       [¦^°éÊ^]
    Next [¦^°é变¶q]
¦pªG¬Ù²¤ Next语¥y¤¤ªº[¦^°é变¶q]¡A´N¹³[¦^°é变¶q]¦s¦b时¤@样执¦æ¡C
    ¦b¦¹®æ¦¡¤¤¡A¨Ï¥Î¤F这样¤L个·§©À¡G
    (1)¦^°é变¶q¡G¥Î¤_统计¦^°é¦¸数ªº变¶q¡A¦^°éªº过µ{´N¬O该变¶q¬O从¬Y个­È变¤Æ¨ì¥t¤@个­Èªº过µ{¡C
    (2)ªì©l­È¡G¥Î¤_设¸m¦^°é变¶qªºªì©l¨ú­È¡C
    (3)终­È¡G¥Î¤_设¸m¦^°é变¶qªº³Ì¦Z¨ú­È¡C
    (4)¨B长¡G¥Î¤_决©w¦^°é变¶q¨C¦¸¦^°é时变¤Æªº数­È¡A§Y¦^°é变¶q¦b变¤Æ时ªº¼W­È¡C¦pªG¬Ù¨B长ªº话¡A¨äÀq认­È为1¡C¨B长ªº¨ú­È¥i¥H为¥¿¡A¤]¥i¥H为负¡C­Yªì©l­È¤p¤_终­È¡A则¥²将¨B长设为¥¿­È¤~¦³¥i¯à执¦æ¦^°éÊ^¡F­Yªì©l­È¤j¤_终­È¡A则¥²须将¨B长设为负­È¤~¦³¥i¯à¦æ¦^°éÊ^¡C
    (5)¦^°éÊ^¡G»Ý­n­«Î`执¦æªº¥N码³¡¤À¡A¥i¥H¬O¤@个©Î¦h个语¥y¡C
    (6)Next[¦^°é变¶q]¡G¥Î¤_结§ô¤@¦¸For¦^°é¡A®ÚÕu终­È©M现¦b¦^°é变¶qªº­Èªº¤j¤p关¨t决©w¬O§_执¦æ¤U¤@¦¸¦^°é¡C¨ä¤¤ªº¦^°é变¶qªº¦W称¥²须ÉO¦^°é开©l时ªº¦^°é变¶q¦W称¬Û¦P¡C

For¡KNext语¥y¦^°éªº执¦æ过µ{(¤u§@­ì²z)¡G
¥ý将¦^°é变¶q¨ú为ªì©l­È¡AµM¦Z检验¦^°é变¶qªº¨ú­È¬O§_¶W¥X终­È¡A­Y¦^°é变¶q没¦³¶W¥X终­È¡A则执¦æ¤@¦¸¦^°éÊ^语¥y¡AµM¦Z将¦^°é变¶q¥[¤W¨B长赋­È给¦^°é变¶q¥»¨­¡A¦AÉO终­È进¦æ¤ñ较¡Aª½¨ì¦^°é变¶q¶W¥X终­È时¡A°h¥X¦^°é¡A执¦æ¦Z­±ªº语¥y¡C©Ò谓¶W¥X终­È¬O«ü¡G­Y¨B长为¥¿­È¡A则检验¦^°é变¶q¬O§_¤j¤_终­È¡F­Y¨B长为负­È¡A则检验¦^°é变¶qªº¨ú­È¬O§_¤p¤_终­È¡C
For¡KNext语¥y结§ô¦Z会ªð¦^[¦^°é变¶q]ªº­È¡A¦ý¥¦¤@©w¤£µ¥¤_[终­È]:
Sub t()
Dim i
For i=1 to 10
Next
End  sub
³Ì¦Zi¬O¦h¤Ö©O¡H¤£ºÞ¬O¦h¤Ö¡A¥¦¤@©w¤£¬O10¡G
Sub t1()
    Dim i, j
    For i = 1 To 10
        j = j + 1
        MsgBox "¨B长­È为1,²Ä" & j & "¦¸¦^°é[¦^°é变¶q]ªº­È:" & i
    Next
    MsgBox "¦^°é¦¸数:" & j & Chr(13) & "³Ì¦Z[¦^°é变¶q]ªº­È:" & i
End Sub

Sub t2()
    Dim i, j
    For i = 1 To 10 Step 1.6
        j = j + 1
        MsgBox "¨B长­È为1.5,²Ä" & j & "¦¸¦^°é[¦^°é变¶q]ªº­È:" & i
    Next
    MsgBox "¦^°é¦¸数:" & j & Chr(13) & "³Ì¦Z[¦^°é变¶q]ªº­È:" & i
End Sub
¦b¦^°éÊ^¤¤¤]¥i¥H§ï变[¦^°é变¶q]ªº­È¡A¦ý这会¨Ïµ{§Ç¥N码ªº阅读©M调试变±o«D±`§x难¡A¤@¯ë¤£´£­Ò这样°µ:
Sub t3()
    Dim i, j
    For i = 1 To 10
        i = i + 1
        j = j + 1
        MsgBox "¨B长­È为1.5,²Ä" & j & "¦¸¦^°é[¦^°é变¶q]ªº­È:" & i
    Next
    MsgBox "¦^°é¦¸数:" & j & Chr(13) & "³Ì¦Z[¦^°é变¶q]ªº­È:" & i
End Sub

¦bFor¡KNext¦^°é¤¤¡A¥u­n¨B长¤£为0¡A´N¥Ã远¤£会¥X现¦º¦^°é¡C¦]为¥u­n¨B长¤£为0¡A无论©l­È©M终­È¤§间¬Û®t¦h¤\¤j¡A总¥i¥H经过¦³­­¦¸ªº¦^°é¡A¨Ï©l­È¶W¥X终­È¡A从¦Ó¸õ¥X¦^°é¡C¥Ñ¦¹¥i见¡AFor¡KNextÓì¥Î¤_预¥ýª¾¹D¦^°é¦¸数ªº±¡况¡C
¦b¬Y¨Ç±¡况¤U¡A¥i¯à»Ý­n¦b¦^°é变¶q没¦³¶W¥X终­È¤§«e´N¸õ¥X¦^°é¡A这时¥i¥H¥ÎExit For语¥y¡A当满¨¬¬YÏú¯S®íªº条¥ó时¡A´N´£«e¸õ¥X¦^°é¡C

从For¡KNext语¥yªº®æ¦¡¤¤¥i¥H¬Ý¨ì¡G¨ä¤¤ªº¦^°éÊ^¬O¥i选ªº¡C­Y¬Ù²¤¤F¦^°éÊ^¡A§YFor¦^°éªº¦^°éÊ^内没¦³¥ô¦ó¨ãÊ^ªº语¥y¡A则¨ä¥u¬O°_¨ì©µ时ªº§@¥Î¡C¦]为当¦^°é¤F¤@©w¦¸数¦Z虽¤£执¦æ¥ô¦ó¾Þ§@¡A¦ý却ªá费¤F¤@©w时间¡A¬G¥i§@为©µ时¤u¨ã¨Ï¥Î¡C¦ý­nª`·Nªº¬O¥Ñ¤_现¦b计ºâÉ󪺳t«×³£¤ñ较§Ö¤F¡A¦pªG¦^°é¦¸数¤ñ较¤Öªº话将¤£会达¨ì预´Áªº®ÄªG¡A¦]¦¹­nÓì当选择¦^°é¦¸数¡C

2.For Each¡KNext语¥y
FOR¡K¡KNext语¥yÉOFor¡KNext语¥y¦³¨Ç类¦ü¡A¦ý¥¦们¦³«Ü¤jªº区别¡G«eªÌ¬O¥Ñ«ü©w©Î¶°¦X¤¤ªº¤¸¯À来±±¨î¦^°é¡A¦Ó¦ZªÌ¬O¥Ñ¦^°é变¶q来±±¨î¦^°é过µ{¡C¥Ñ¦¹¥i见¡AFor Each¡K语¥y¬O¤£»Ý­n预¥ýª¾¹D¦^°é¦¸数ªº¡A«ü©w数组©Î¶°¦X¤¤ªº¤¸¯À个数´N¬O¦^°é¦¸数¡C该语¥yªº¨Ï¥Î®æ¦¡为¡G
    For Each¦^°é变¶qIn数组©Î¶°¦X
        ¦^°éÊ^
    Next¦^°é变¶q
    这¨½ªº¦^°é变¶q¥²须¬O变Ê^«¬(Variant)©Î对¶H«¬(Object)ªº¡C对¤_数组¡A¦^°é变¶q¥²须¬O变Ê^«¬ªº¡F对¤_¶°¦X¡A¦pªG¶°¦X¤¤¥]§t对¶H¡A则¦^°é变¶q应该¬O对¶H«¬¡A当µM¤]¥i¥H¬O变Ê^«¬¡C
当¬Y¤@数组©Î¶°¦X¨½ªº©Ò¦³¤¸¯À进¦æ¦P¤@¾Þ§@时¡A´N»Ý­n¨Ï¥Î该语¥y¤F¡C
¦P样ªº¥i¥H¥ÎExit For语¥y¡A当满¨¬¬YÏú¯S®íªº条¥ó时¡A´N´£«e¸õ¥X¦^°é¡C

For Each¡KNext语¥y结§ô¦Z¡A¤£会ªð¦^[¦^°é变¶q]¡A这ÉOFor¡KNext语¥y¤£¤@样:
Sub t4()
    Dim c
    For Each c In Array(1, 2, "aa")
    Next
    MsgBox TypeName(c)
End Sub
Sub t5()
    Dim r As Range
    For Each r In [a1:a4]
    Next
    MsgBox TypeName(r)
End Sub

3.Do¡KLoop语¥y
    Do¡KLoop¦^°é¬O®ÚÕu¬Y个条¥ó¬O§_¦¨¥ß来决©w¬O§_¦^°é¡C¥¦¦}¤£­­¨î¦^°éªº¦¸数¡A¥u­n满¨¬条¥ó´N继续¦^°é¡Aª½¨ì¤£满¨¬条¥ó时¸õ¥X¦^°é¡Cª`·N­n¦b¦^°é¤¤§ï变条¥ó¡A§_则ªº话¥i¯à会³´¤J¦º¦^°é¡C

    Do¡KLoop语¥y¦³¥|Ïú§Î¦¡¡G
§Î¦¡1¡G
DO
¦^°éÊ^
Loop While 条¥ó
这Ïú§Î¦¡ªº执¦æ过µ{¬O¡G¥ý执¦æ¤@¹M¦^°éÊ^¡AµM¦Z¦A§P断条¥ó¬O§_¦¨¥ß¡A­Y条¥ó¦¨¥ß¡A 继续¤U¤@¦¸¦^°é¡F§_则¡A´N°h¥X¦^°é¡C

§Î¦¡2¡G
Do While 条¥ó
¦^°éÊ^
Loop
这Ïú§Î¦¡¬O§â¡§While条¥ó¡¨©ñ¦b¦^°éÊ^ªº«e­±¡A¤]´N¬O说¥¦ªº执¦æ过µ{¬O¥ý§P断条¥ó¬O¥ß¡A¦A决©w¬O§_继续¦^°é¡C

§Î¦¡3¡G
DO
¦^°éÊ^
Loop Until 条¥ó
这Ïú§Î¦¡©M²Ä¤@Ïú§Î¦¡¦³¨Ç类¦ü¡A¤]¬O¥ý执¦æ¦^°éÊ^¡AµM¦Z¦A§P断条¥ó¡CÉO²Ä¤@Ïú§Î¦¡¤£¦P¡A这Ïú§Î¦¡¥u¦³当条¥ó¤£¦¨¥ß¤~会继续¦^°é¡A§_则´N°h¥X¦^°é¡C

§Î¦¡4¡G
DO Until 条¥ó
¦^°éÊ^
Loop
这Ïú§Î¦¡©M²Ä¤GÏú§Î¦¡¦³¨Ç类¦ü¡A¥ý§P断条¥ó¡A¦A决©w¬O§_继续¦^°é¡CÉO¤§¤£¦Pªº¬O¡A这Ïú§Î¦¡¤]¬O当条¥ó¤£¦¨¥ß¤~会继续¦^°é¡C

¥Ñ¤W­±¥|Ïú§Î¦¡ªº®æ¦¡¥i¥H¬Ý¥X¡G
    ²Ä¤@Ïú©M²Ä¤TÏú§Î¦¡¬O¥ý执¦æ¦^°éÊ^¡AµM¦Z¦A§P断条¥ó¡A条¥ó¦¨¥ßÉO§_¡A¦Ü¤Ö执¦æ¤@¦¸¦^°éÊ^¡F²Ä¤GÏú©M²Ä¥|Ïú§Î¦¡¡A则¬O¥ý§P断条¥ó¡A¦pªG条¥ó当¡A¦^°éÊ^¥i¯à¤@¦¸¤]没¦³执¦æ¡C¥B¡§While¡¨©M¡§Until¡¨¥¿¦n¬Û¤Ï¡A«eªÌ¬O条¥ó¦¨¥ß时¤J¦^°é¡A¦Ó¦ZªÌ则¬O条¥ó¤£¦¨¥ß时¤~进¤J¦^°é¡C¨Ï¥Î时¥i®ÚÕu»Ý­n选择³ÌÓì当ªº§Î¦¡¡C

    ¦b«e­±For¡KNext语¥y¤¤¤¶绍ªºExit语¥y¤]Óì¥Î¤_DO¡KLoop语¥y¡A¥u¬O§â¡§Exit For¡¨§ï¦¨¡§Exit Do¡¨§Y¥i¡A¥¦们ªº§@¥Î¬O¤@样ªº¡A³£¬O¥Î来´£«e¸õ¥X¦^°éªº¡C

资®Æ来·½:·L软帮§U

TOP

        ÀR«ä¦Û¦b : §Ú­Ì­n°µ¦nªÀ·|ªºÀô«O¡A¤]­n°µ¦n¤º¤ßªºÀô«O¡C
ªð¦^¦Cªí ¤W¤@¥DÃD