Excel VBA質問箱 IV

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

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


7322 / 76732 ←次へ | 前へ→

【74998】Re:ループ抜け教えてください
発言  kanabun  - 13/11/12(火) 10:01 -

引用なし
パスワード
   ▼hama さん:

インデントや変数名等 読みにくかったので(失礼)
いらぬお節介かもですが、修正してみました。
・2つの Worksheet は 変数に入れる
・外側の Do 〜 Loop は 「後」シートのA列をLoopしているようだから
  For Each 〜 Next に変更。
・そのシートのA列の値を検索値Ans1 としているようだが、
  セルそのもの(Rangeオブジェクト) と セルの値 は区別してコーディング
  したい。
   Ans1 = c.Value


Sub 後シート色づけ3()
 Dim Ans1 As Variant
 Dim Ans2 As Variant
 Dim newX As Long
 Dim newY As Long
 Dim oldX As Long
 Dim oldY As Long
 Dim ws前 As Worksheet
 Dim ws後 As Worksheet
 Dim foundCell As Range
 Dim c As Range
  
  Set ws前 = Worksheets("前")
  Set ws後 = Worksheets("後")

  '「後」シートのA列(の値を検索値として)でループする
  For Each c In ws後.Range("A2", _
         ws後.Cells(ws後.Rows.Count, 1).End(xlUp))
    Ans1 = c.Value
    '「後」シートのA列の値で「前」シートを検索
    Set foundCell = ws前.Cells.Find(Ans1)
    '「前」シートにみつからなければ、この値のセルを色塗り
    If foundCell Is Nothing Then
      c.Interior.ColorIndex = 27
    
    Else '「前」シートにこの値があったばあい
    '     A列〜D列まで比較・色塗りする  …… ?
      newX = 2
      oldX = 2
      oldY = ws前.Cells.Find(Ans1).Row
      Do
        If ws前.Cells(oldY, oldX).Value <> _
          ws後.Cells(newY, newX).Value Then
          ws後.Cells(newY, newX).Interior.ColorIndex = 27
        End If
        newX = newX + 1
        oldX = oldX + 1
        Ans2 = ws後.Cells(newY, newX)
      Loop Until Ans2 = ""
    End If
  
  Next c

End Sub


このように直してみると、
質問
>ループをA列〜D列までにしたい
は、
内側のLoop時の 検索列をA列〜D列までに限定したいということのようですが、
より具体的に その内側のループでやっていることを日本語で説明してもらうと、
どう書いたら良いか、レスが付きやすいと思います。
というのも、現状コードでは(A列ではなく) B列から比較を始めているように
読めるので、その点も含めて、説明が必要と思うのです。

他にも分からないところがあります。
たとえば、「後」シートのA列の値で、「前」シートのセル全体をFindしてます
が、ほんとに Cells(全セル)の検索が必要なのでしょうか?
「前」シートのほうも、A列をFindするだけで十分なのではありませんか?

なので、
各シートの 簡単なサンプルデータつきのレイアウトで説明があると
より分かりやすいのですが。

302 hits

【74996】ループ抜け教えてください hama 13/11/11(月) 20:30 質問
【74998】Re:ループ抜け教えてください kanabun 13/11/12(火) 10:01 発言
【75000】Re:ループ抜け教えてください hama 13/11/12(火) 11:02 回答
【75001】Re:ループ抜け教えてください kanabun 13/11/12(火) 12:03 発言
【75002】Re:ループ抜け教えてください hama 13/11/12(火) 13:30 お礼
【75005】Re:ループ抜け教えてください hama 13/11/12(火) 20:28 質問
【75006】Re:ループ抜け教えてください kanabun 13/11/12(火) 22:17 発言
【75007】Re:ループ抜け教えてください hama 13/11/12(火) 23:22 回答
【75008】Re:ループ抜け教えてください kanabun 13/11/12(火) 23:45 発言
【75009】Re:ループ抜け教えてください hama 13/11/13(水) 2:15 お礼
【74999】Re:ループ抜け教えてください kanabun 13/11/12(火) 10:40 発言

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