Excel VBA質問箱 IV

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

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


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

【65376】2つの条件分岐をLOOPで行う方法 suika 10/5/16(日) 19:30 質問[未読]
【65377】Re:2つの条件分岐をLOOPで行う方法 H. C. Shinopy 10/5/16(日) 20:32 回答[未読]
【65378】Re:2つの条件分岐をLOOPで行う方法 suika 10/5/16(日) 22:24 お礼[未読]

【65376】2つの条件分岐をLOOPで行う方法
質問  suika  - 10/5/16(日) 19:30 -

引用なし
パスワード
   こんばんわは。suikaです。
いつもお世話になっております。

早速ですが、質問させて下さい。

下記のように、2つの条件にあてはまるデータについて、担当者の振分けを
ループで行いたいです。データが全部で、300行〜800行あり、毎回不定です。
各倉庫によって、グループ名が、多い物もあれば、少ない物もあり、データ
の内容が毎回不定なので、マクロによる担当者の自動振分けを考えています。


<条件1>  <条件2>
'倉庫Aの  《グループ1》が、担当者=山田さん
'倉庫Aの  《グループ2》が、担当者=佐藤さん
'倉庫Aの  《グループ3》が、担当者=鈴木さん
  ・      ・        ・
  ・      ・        ・
  ・      ・        ・
'倉庫Zの  《グループ30》が、担当者=岡本さん

  A   B   C  D  E  F  G  H  I  J  K
1 倉庫 グループ                        担当者
2  A   1                          山田さん
3  A   2                          佐藤さん
4  A   3                          鈴木さん
・  ・  ・                           ・
・  ・  ・                           ・
・  ・  ・                           ・
800  Z   30                          岡本さん


”倉庫A”かつ、”グループ1”の場合、《K列》の担当者欄に山田さんを入力
”倉庫A”かつ、”グループ2”の場合、《K列》の担当者欄に佐藤さんを入力
”倉庫A”かつ、”グループ3”の場合、《K列》の担当者欄に鈴木さんを入力

とする場合、下記のマクロをどのように改造すればよいのか、分かりません。

どなたか分かる方がいらっしゃいましたなら、ご教授の程、宜しくお願い致し
ます。


Sub 担当者の自動振分け()
 
 Dim lngRow As Long
 Dim lngRowLast As Long

 With ActiveSheet
  lngRowLast = .Range("A" & .Rows.Count).End(xlUp).Row
  lngRow = 2
  Do While lngRow <= lngRowLast
   With .Range("A" & lngRow)
    Select Case .Value


   Case Is = "倉庫A"
      .Offset(, 10).Value = "山田さん"


End Select
  
   End With
   lngRow = lngRow + 1
  Loop
 End With


End Sub

【65377】Re:2つの条件分岐をLOOPで行う方法
回答  H. C. Shinopy  - 10/5/16(日) 20:32 -

引用なし
パスワード
   VBAのSelect Caseは条件式が一つしか指定できないんですね。
ありゃ〜、今まで気が付きませんでした。
文字列連結で苦肉の策を講じて対処。

Sub 担当者の自動振分け()
 Dim lngRow As Long
 Dim lngRowLast As Long
 Dim StrAandB As String
 '
 With ActiveSheet
  lngRowLast = .Range("A" & .Rows.Count).End(xlUp).Row
  lngRow = 2
  Do While lngRow <= lngRowLast
   ' With .Range("A" & lngRow) ←取り敢えず、不要ということで。
   
   ↓A列とB列を半角スペースを間に入れて文字列連結。
   StrAandB = .Range("A" & lngRow).Value & " " & CStr(.Range("B" & lngRow).Value)
   Select Case StrAandB
    Case "A 1"
     .Range("K" & lngRow).Value = "山田さん"
    Case "A 2"
     .Range("K" & lngRow).Value = "佐藤さん"
    Case "A 3"
     .Range("K" & lngRow).Value = "鈴木さん"
    Case "Z 30"
     .Range("K" & lngRow).Value = "岡本さん"
    Case Else
     MsgBox "A・B列の組み合わせの値 該当なし! " & lngRow & "行目"
     Exit Sub
   End Select
   ' End With
   lngRow = lngRow + 1
  Loop
 End With
End Sub

【65378】Re:2つの条件分岐をLOOPで行う方法
お礼  suika  - 10/5/16(日) 22:24 -

引用なし
パスワード
   ▼H. C. Shinopy さん:

こんばんわ。suikaです。
早速の返信、どうもありがとうございます。

早速、検証させて頂きました。

結果は、私の期待した通りに、動作してくれました。

《文字列連結》の“秘策”があるとは、全く考えもつきませんでした。

H. C. Shinopy さんの高度なVBA知識に、感動しました。

とっても勉強になりました^^

また、今度分からない事があれば、投稿させて頂きますので、その時は、
どうかお力をお貸し下さい。

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

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