Excel中VBA中for循环语句的使用方法
for循环语句在VBA中扮演着比较重要的角色,为我们批量的处理表格数据提供了一个很好的途径,今天,小编就教大家在Excel中VBA中for循环语句的使用方法。Excel中VBA中for循环语句的使用步骤如下:
我们常用的for循环语句有两种,一个是for ……next结构;一个是For each……next结构。这两种结构主要都是针对多数据循环遍历的时候用到的。那么下面我将分别来介绍一下两种循环结构的具体用法,首先还是要打开VBA编辑器。
1.for……next结构
这个结构一般是这样的:
for i=初始值 to 结束值 step 步长值
……
next
具体解释一下,初始值指的是循环开始的值,结束值指的是循环结束的值,实质上就是i值得一个判断,如果i值在起始值和结束值之间,那么进入循环语句,然后i值每运行到next语句后会自动加一个步长值,直至i值超出了初始值到结束值这个范围,循环才会结束。这里要说明一下”step 步长值“往往是省略掉的,省略掉的话,步长取默认值为1。下面将以一段小实例来具体说明这个结构的用法:
实例:在sheet1工作表中一次输出1到10这个数,显示在第一列中。
程序:
Sub 循环语句()
Dim i As Integer
For i = 1 To 10
Cells(i, 1) = i
Next
End Sub
步长为+2的for循环结构
这里我们看一下一个示例程序吧
程序:
Sub 循环语句()
Dim i As Integer
For i = 1 To 10 Step 2
Cells(i, 1) = i
Next
End Sub
步长为-1的for循环结构
这里同样的我们来看一下当step值为-1的时候,程序又会是如何的呢?
看下面实例程序:
Sub 循环语句()
Dim i As Integer
For i = 10 To 1 Step -1
Cells(i, 1) = i
Next
End Sub
2.for each……next结构
具体结构:
For each 对象变量 in 对象集合
……
next
具体解释一下,这里我们看到和上一个结构的而不同的是上面一种结构主要是数值变量,而这种结构是对象变量。什么意思呢?each……in指的是在这个对象集合里面,一次将每一个对象都遍历一边。同样的道理,执行到next后对象自动指到下一个。具体我们来看一下下面的一个实例吧
实例:给一个数据区域内的所有单元格赋值,从1开始。
分析:显然数据区域就是一个对象集合,单元格就是这个集合里面的对象
程序:
Sub 循环语句()
Dim i As Integer
For Each c In Range("a1:c5")
i = i + 1
c.Value = i
Next
End Sub
循环语句运用起来是很灵活的,上面只介绍了两种循环语句的基本用法,循环语句是可以套用的,这个就需要结合具体情况来灵活运用了!
下面我们用多循环语句嵌套来实现乘法口诀:
程序:
Sub 循环语句()
Dim i, j As Integer
For i = 1 To 9
For j = 1 To i
Cells(i, j) = i & "*" & j & "=" & i * j
Next
Next
End Sub
Excel中VBA中for循环语句的使用方法
绛旓細for寰幆锛氶渶瑕佺粰瀹氬垵鍊硷紝鏈煎拰姝ラ暱锛沠or each寰幆锛氫笉闇瑕佷簨鍏堢粰瀹氬垵鍊硷紝鏈煎拰姝ラ暱锛屼粬鏄嚜鍔ㄩ亶鍘嗙粰瀹氱殑闆嗗悎浣撶殑鎵鏈夊笺
绛旓細鐢ㄨ鍙xit for鏉ヨ烦鍑for寰幆锛岃繖閲岃烦鍑哄惊鐜寚鐨勬槸璺冲嚭鏈閲岄潰涓灞傜殑寰幆缁撴瀯銆備唬鐮佸疄渚嬪涓嬶細for ii = 1 to 1000 if ii = 500 then exit for end if next 杩欓噷鐨勪唬鐮佽〃绀篿i浠1鍒1000杩涜寰幆锛屽鏋渋i涓500鏃跺垯璺冲嚭寰幆
绛旓細鏈绠鍗曠殑鏉ヤ袱鍙ワ紝涓嶆槑鐧借杩介棶~~~FOR鐨勭敤娉曟槸杩欐牱鐨勶細FOR I=1 TO N ...璇彞...NEXT I 杩欐牱鐨勫姛鑳芥槸锛屼娇閲岄潰鐨 璇彞 杩愯N娆★紝姣忔I鐨勫奸兘涓嶅悓锛屽垎鍒槸1~N锛岀敤鏉ュ畬鎴愬浐瀹氭鏁扮殑閲嶅銆侷F鐨勭敤娉曟槸杩欐牱鐨勶細IF 鏉′欢 THEN ...璇彞1...ELSE ...璇彞2...END IF 杩欐牱鐨勫姛鑳芥槸鍒ゆ柇鏉′欢鏄惁婊...
绛旓細sub text 锛堬級Dim a For a = 1 To 30 if a<>1 and a<>3 and a<>6 and a<>8 then Sheets(a).Activate Range("G3).Copy Range("F3")end if next end sub
绛旓細鐢ㄤ互涓嬩唬鐮佸彲瀹炵幇锛歋ub MCOPY()Rows("1:2").Copy'灏嗙1/2琛屾暟鎹鍒跺埌绮樿创鏉涓 For i = 1 To 100'寰幆100娆 Range("A" & i * 2 + 1).PasteSpecial鈥樹粠绗淎3"寮濮嬶紝姣忛殧涓涓紙鍗矨3銆丄5銆丄7...)绮樿创绮樿创鏉夸腑鐨勬暟鎹 Next End Sub 杩欓噷闇瑕佽瑙g殑涓鐐瑰皬鐭ヨ瘑灏辨槸锛鍦‥xcel涓澶嶅埗琛屾椂...
绛旓細涓句釜渚嬪瓙 鍋囪鏌愪釜琛ㄦ牸A鍒楁湁n琛岋紝鍏朵腑娌℃湁绌鸿 Sub xxx() Dim n As Stringn = WorksheetFunction.CountA(Columns(1))For i = 1 To nxxxxxxNext End Subn = WorksheetFunction.CountA(Columns(1))鏄皟鐢EXCEL鐨凜ountA鍑芥暟锛岀粺璁鍒楃殑闈炵┖鍗曞厓鏍间釜鏁帮紝A鍒楁湁澶氬皯琛岋紝n灏卞緱鍑狅紝for灏辨墽琛屽嚑娆 ...
绛旓細Sub 瀹1()for i=4 to 34 ActiveSheet.ChartObjects("鍥捐〃 1").Activate ActiveChart.ChartArea.Copy Cells(5, n).Select ActiveSheet.Paste ActiveSheet.ChartObjects("鍥捐〃 50").Activate ActiveChart.ChartTitle.Select Selection.Caption = sheets("椤烘渤鍚戠粯鍥").cells(1,i)ActiveChart.SeriesCollection(...
绛旓細for鈥︹ext寰幆濡備笅 Sub 寰幆1()Dim i For i = 1 To [j1].Value 瑕佹墽琛岀殑浠g爜 Next End Sub do鈥︹oop寰幆濡備笅 Sub 寰幆2()Dim i Do 瑕佹墽琛岀殑浠g爜 i = i + 1 Loop Until i = [j1].Value End Sub
绛旓細褰for寰幆鍒皀ext鏃讹紝tjm鑷姩+1锛屾敞鎰忎綘鐨勮鍙ワ細鍦ㄥ惊鐜繃绋嬩腑锛屽鏋淐ells(5, tjm) 涓虹┖锛屼綘灏唗jm-2 鐒跺悗鍙堝皢tjm+1 濡傛灉Cells(5, tjm) 涓虹┖锛屽湪浣-2鍙堜袱娆+1鍚庯紝浣犵殑绋嬪簭鎴愪簡锛歠or tjm=16 to 45 tjm=tjm-2 tjm=tjm+1 next tjm姘歌繙鏄師鏉ョ殑鍊硷紝鑷劧灏辨浜嗐
绛旓細Dim aim As Worksheet, Mee Set aim = Sheets("RE Database")Dim i As Integer Dim j As Integer If M_type.Text = "" Then Exit Sub For i = 3 To 200 If Mee.M_level1.Text = aim.Cells(5, i) Then For j = 5 To 100 If aim.Cells(j, i) <> "" Then Mee.M_level1...