Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
リストにないはずなのに結果に出ない
投稿日時: 20/10/14 13:28:08
投稿者: vaioyuki

いつもお世話になっています。
またまたよろしくお願いします。
 
現在、特殊シートのD列に会社コードがあります。(重複あり)
リストシートに会社コードと会社名があります。
会社コードを元にリストシートから会社名をもってくるのですが、
特殊シートに記載されているがリストシートに記入がない場合、リストシートを更新するために
以下のコードを作成しました。
 

Sub 実行()
Dim SosikiDic As New Scripting.Dictionary
Dim Keys
Dim miFind As Range

Set tokSH = Worksheets("特殊")
Set tokhSH = Worksheets("特殊_配布")
Set listSH = Worksheets("リスト")

r_cntL = listSH.Range("A1").CurrentRegion.Rows.Count
r_cntT = tokSH.Range("B3").CurrentRegion.Rows.Count + 2 '特殊シートの最終行…タイトル行があるためプラス2

With listSH

    Set tokR = tokSH.Columns(5)

    For i = 5 To r_cntT
        If Not SosikiDic.Exists(tokSH.Cells(i, 5).Value) Then
           SosikiDic.Add tokSH.Cells(i, 5).Value, tokSH.Cells(i, 5).Value
        End If
    Next i

    Keys = SosikiDic.Keys

    For j = 0 To SosikiDic.Count - 1
        If listSH.AutoFilterMode = True Then
            listSH.AutoFilterMode = False
        End If

        Set miFind = listSH.Cells.Find(SosikiDic.Keys(j), lookat:=xlWhole)

        If miFind Is Nothing Then
            MsgBox "リストシート内に" & SosikiDic.Keys(j) & "がありません"

            GoTo continue
        End If
    Next j

    SosikiDic.RemoveAll
End With

 
これが実際にないのにそのままスルーしてしまいます。
 
stopをかけてローカルウィンドウで確認すると、keysには特殊シートのD列が格納されています。
昨日から悩んでいるのですがさっぱりわかりません。
 
よろしくお願いします。

回答
投稿日時: 20/10/14 14:18:49
投稿者: sk

引用:
Set tokSH = Worksheets("特殊")

引用:
r_cntT = tokSH.Range("B3").CurrentRegion.Rows.Count + 2 '特殊シートの最終行…タイトル行があるためプラス2

ワークシート[特殊]において、2 行目は完全に空白行になっているのでしょうか。
 
引用:
現在、特殊シートのD列に会社コードがあります。(重複あり)

引用:
If Not SosikiDic.Exists(tokSH.Cells(i, 5).Value) Then
    SosikiDic.Add tokSH.Cells(i, 5).Value, tokSH.Cells(i, 5).Value
End If

この場合、D 列(会社コード)ではなく E 列(別の項目)の
各セルの値を参照することになるはず。
 
引用:
Set listSH = Worksheets("リスト")

引用:
Set miFind = listSH.Cells.Find(SosikiDic.Keys(j), lookat:=xlWhole)

ワークシート[リスト]の全てのセルが検索範囲に設定されていますが、
それでよいのでしょうか。

投稿日時: 20/10/14 14:36:39
投稿者: vaioyuki

大変失礼しました。
私の勘違いでした。
 
結果はべつのところであったようです。
また別スレッドで質問させて頂きます。
 
気にとめて頂き、ありがとうございました。