|
こんにちは。かみちゃん です。
>セル:G2が、[倉庫A] か [倉庫B] か [倉庫C] の場合、
>セル:K2に、担当者の [鈴木さん] を入力したいと、考えています。
>
>データ量に関係無く、セルG2〜セルGの最終行まで、上記の条件分岐を
>LOOPで処理するには、どうしたらよいでしょうか?
繰り返し処理には、いろいろありますので、以下3案を示します。
'Do 〜 Loopを使う方法
Sub Sample1_1()
Dim lngRow As Long
Dim lngRowLast As Long
With ActiveSheet
lngRowLast = .Range("G" & .Rows.Count).End(xlUp).Row
lngRow = 2
Do While lngRow <= lngRowLast
With .Range("G" & lngRow)
Select Case .Value
Case Is = "倉庫A", "倉庫B", "倉庫C"
.Offset(, 4).Value = "鈴木さん"
Case Is = "倉庫D", "倉庫E", "倉庫F"
.Offset(, 4).Value = "山田さん"
Case Is = "倉庫G", "倉庫H", "倉庫I"
.Offset(, 4).Value = "森さん"
End Select
End With
lngRow = lngRow + 1
Loop
End With
MsgBox "終了しました"
End Sub
'For 〜 Nextを使う方法
Sub Sample1_2()
Dim lngRow As Long
Dim lngRowLast As Long
With ActiveSheet
lngRowLast = .Range("G" & .Rows.Count).End(xlUp).Row
For lngRow = 2 To lngRowLast
With .Range("G" & lngRow)
Select Case .Value
Case Is = "倉庫A", "倉庫B", "倉庫C"
.Offset(, 4).Value = "鈴木さん"
Case Is = "倉庫D", "倉庫E", "倉庫F"
.Offset(, 4).Value = "山田さん"
Case Is = "倉庫G", "倉庫H", "倉庫I"
.Offset(, 4).Value = "森さん"
End Select
End With
Next
End With
MsgBox "終了しました"
End Sub
'For 〜 Each 〜 Nextを使う方法
Sub Sample1_3()
Dim rngLast As Range
Dim c As Range
With ActiveSheet
Set rngLast = .Range("G" & .Rows.Count).End(xlUp)
For Each c In .Range("G2", rngLast)
Select Case c.Value
Case Is = "倉庫A", "倉庫B", "倉庫C"
c.Offset(, 4).Value = "鈴木さん"
Case Is = "倉庫D", "倉庫E", "倉庫F"
c.Offset(, 4).Value = "山田さん"
Case Is = "倉庫G", "倉庫H", "倉庫I"
c.Offset(, 4).Value = "森さん"
End Select
Next
End With
MsgBox "終了しました"
End Sub
|
|