Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3350 / 13644 ツリー ←次へ | 前へ→

【62765】条件分岐をLOOPで行う方法 AT 09/8/30(日) 20:47 質問[未読]
【62766】Re:条件分岐をLOOPで行う方法 かみちゃん 09/8/30(日) 21:05 発言[未読]
【62777】Re:条件分岐をLOOPで行う方法 AT 09/9/1(火) 0:04 お礼[未読]

【62765】条件分岐をLOOPで行う方法
質問  AT  - 09/8/30(日) 20:47 -

引用なし
パスワード
   こんばんわ。ATです。

下記の条件分岐がうまくいかず、困っています。
            
【セル:G1】は倉庫名で、【セル:K1】は担当者名を《列タイトル》に
してあります。
            
セル:G2が、[倉庫A] か [倉庫B] か [倉庫C] の場合、        
セル:K2に、担当者の [鈴木さん] を入力したいと、考えています。            
            
Sub 条件分岐()            
                  
   Select Case Range("G2").Value            
              
   Case Is = "倉庫A", "倉庫B", "倉庫C"            
               
   Range("K2").Value = "鈴木さん"            
                     
   Case Is = "倉庫D", "倉庫E", "倉庫F"            
               
   Range("K2").Value = "山田さん"            
               
   Case Is = "倉庫G", "倉庫H, "倉庫I"            
               
   Range("K2").Value = "森さん"            
               
End Select            
               
   Select Case Range("G3").Value            
              
   Case Is = "倉庫A", "倉庫B", "倉庫C"            
               
   Range("K3").Value = "鈴木さん"            
                     
   Case Is = "倉庫D", "倉庫E", "倉庫F"            
               
   Range("K3").Value = "山田さん"            
               
   Case Is = "倉庫G", "倉庫H, "倉庫I"            
               
   Range("K3").Value = "森さん"            
               
End Select            
            
End Sub            
            
※上記の Select Case Range("G●").Value のデータ量が毎回不定です。            
   少ない時 ⇒ "G50"        
   多い時   ⇒ "G250" (今後、超える事があるかもしれません)            
            
Select Case Range("G●").Value            
          ↑            
データ量に関係無く、セルG2〜セルGの最終行まで、上記の条件分岐を            
LOOPで処理するには、どうしたらよいでしょうか?
            
ご教授のほど、宜しくお願いします。

【62766】Re:条件分岐をLOOPで行う方法
発言  かみちゃん  - 09/8/30(日) 21:05 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>セル: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

【62777】Re:条件分岐をLOOPで行う方法
お礼  AT  - 09/9/1(火) 0:04 -

引用なし
パスワード
   ▼かみちゃん さん:
こんにちは。AT です。

先日は、『セル範囲を指定して削除するには?』で、大変お世話になりました。

今回も、条件分岐の繰り返し処理について、なんと、3通りものソースデータを
作成してくださり、有難うございます。

早速ですが、3通り、全ての動作確認を行いました。

結果ですが、3通り全て、私の期待通りに動作してくれました。
正直、驚きました。 感謝です。

今回の私のマクロには、<Do 〜 Loopを使う方法>を使用させて頂きます。

繰り返し処理でも、色々あるのですね。

繰り返し処理は、マクロを操作する上で、とても重要なキーを占めていると、
思います。

大量のデータを効率的に処理する時に無くてはならない「存在」だからです。

今後も、日頃の業務でマクロを組む際に、使用することが多々あると思います。

かみちゃんさんから、教わった3通りのマクロを応用して仕事に活かせたら、
いいなぁ。と思います。

でも、実際は、まだまだ、低レベルなので、日々精進したいです。

本当に有難うございました^^

3350 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free