Excel VBA質問箱 IV

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

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


7320 / 76732 ←次へ | 前へ→

【75000】Re:ループ抜け教えてください
回答  hama E-MAIL  - 13/11/12(火) 11:02 -

引用なし
パスワード
   初心者なので分かりずらい質問すいません。
他の人が作ったものを加工したくて投稿しました。
やりたいことは
前シート
ABCD
あ12 
か 41
さ1 2


後シート
ABCD
か 21 
あ22 
た134

前と後のA列を検索してなかったら後のAセルに色をつける
前と後のA列に同じ値があったら
Bセル→Cセル→Dセルと比較をしていってセルの値が違っていたら
色をつけるとしたいのです。現状だと途中で空白セルがあると比較が
止まってしまいます。どう記述をしていいのかもわかりません。
大変申し訳ありません。よろしくお願いします。


▼kanabun さん:
>▼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するだけで十分なのではありませんか?
>
>なので、
>各シートの 簡単なサンプルデータつきのレイアウトで説明があると
>より分かりやすいのですが。

294 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 発言

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