■ループ処理 DoUntil…Loop
同一の処理を何度も繰り返すことを「ループ処理」と呼ぶ。
ループ処理には、指定した回数だけ繰り返す方法や、
ある特定の条件を満たすまで処理を繰り返す方法がある。
今回はDoWhile…Loop文を使用する。
Do While 条件
処理A
Loop
■例題
以下の「Main」シートに表示されている表の「インプットデータ」列について、
「演算子フラグ」列の値に従い、計算処理をする。
※演算子フラグの内容
フロー図:
サンプルコード:
' シート名の定数
Private Const SHEETNAME_MAIN As String = "Main"
' Mainシート関係の定数
Private Const STARTROW As Integer = 4 ' 処理開始行
Private Const NOCOL As Integer = 3 ' 「No.」列
Private Const ENZANFLGCOL As Integer = 4 ' 「演算子フラグ」列
Private Const INPUTDATACOL As Integer = 5 ' 「インプットデータ」列
Private Const RESULTCOL As Integer = 6 ' 「結果」列
Private Const CALDATA As Integer = 2 ' 計算用の定数
Public Sub Cal()
' 変数宣言
Dim ShtName As Worksheet ' ワークシート格納変数
Dim looprow As Integer ' 処理行の変数
Dim resultdata As Integer ' 処理結果格納変数
' シート名を変数に格納
Set ShtName = Sheets(SHEETNAME_MAIN)
' 処理開始行を変数に格納
looprow = STARTROW
' ループ処理(「No.」列が空白セル以外の間)
Do While ShtName.Cells(looprow, NOCOL).Value <> ""
' 値の初期化
resultdata = 0
Select Case ShtName.Cells(looprow, ENZANFLGCOL).Value
Case Is = 0
' 計算処理(演算子フラグ「0」の場合はそのまま)
resultdata = ShtName.Cells(looprow, INPUTDATACOL).Value
Case Is = 1
' 計算処理(演算子フラグ「1」の場合は加算)
resultdata = ShtName.Cells(looprow, INPUTDATACOL).Value + CALDATA
Case Is = 2
' 計算処理(演算子フラグ「2」の場合は減算)
resultdata = ShtName.Cells(looprow, INPUTDATACOL).Value - CALDATA
Case Is = 3
' 計算処理(演算子フラグ「3」の場合は乗算)
resultdata = ShtName.Cells(looprow, INPUTDATACOL).Value * CALDATA
Case Is = 4
' 計算処理(演算子フラグ「4」の場合は除算)
resultdata = ShtName.Cells(looprow, INPUTDATACOL).Value / CALDATA
Case Is = 5
' 計算処理(演算子フラグ「5」の場合はべき乗)
resultdata = ShtName.Cells(looprow, INPUTDATACOL).Value ^ CALDATA
Case Is = 6
' 計算処理(演算子フラグ「6」の場合は除算の商)
resultdata = ShtName.Cells(looprow, INPUTDATACOL).Value ¥ CALDATA
Case Is = 7
' 計算処理(演算子フラグ「7」の場合は除算の余り)
resultdata = ShtName.Cells(looprow, INPUTDATACOL).Value Mod CALDATA
End Select
' 計算結果を「結果」列に出力
ShtName.Cells(looprow, RESULTCOL).Value = resultdata
' 処理行をインクリメント
looprow = looprow + 1
Loop
' 終了処理
Set ShtName = Nothing
End Sub
実行結果:
コメント