[[20140916161932]] 『型が一致しません、を無くすには?』(ふみ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『型が一致しません、を無くすには?』(ふみ)

教えて下さい。
下記コードで、該当するデータが有る場合は問題ないのですが、
データが無い場合、
Range("AA1").Resize(ObjDic.Count, 1).Value = Application.Transpose(ObjDic.keys)
のところで「型が一致しません」というエラーが出ます。

色々考えてみたのですが、解決方法がわかりません。
よろしくお願いします。

 Dim ObjDic As Object                              '担当者を調べて担当者毎の予定工数と実績工数と発注数と図面枚数の合計をセルに記入
 Dim Rng As Range
 Dim TgRng As Range

 With Sheet2                                                                             'プログラムの工数
 Set ObjDic = CreateObject("Scripting.Dictionary")
 Set TgRng = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
 For Each Rng In TgRng
       If Rng.Value <> "" Then
           If Not ObjDic.exists(Rng.Value) Then ObjDic.Add Rng.Value, Empty
       End If
  Next Rng

 Range("AA1").Resize(ObjDic.Count, 1).Value = Application.Transpose(ObjDic.keys)
 Range("AB1").Resize(ObjDic.Count, 1).Formula = "=SUMIF(Sheet2!A:A,AA1,Sheet2!I:I)"      '予定工数
 Range("AC1").Resize(ObjDic.Count, 1).Formula = "=SUMIF(Sheet2!A:A,AA1,Sheet2!Q:Q)"      '実績工数
 Range("AD1").Resize(ObjDic.Count, 1).Formula = "=SUMIF(Sheet2!A:A,AA1,Sheet2!Y:Y)"      '発注数
 Range("AE1").Resize(ObjDic.Count, 1).Formula = "=SUMIF(Sheet2!A:A,AA1,Sheet2!Z:Z)"      '図面枚数

 End With

1

 Set ObjDic = Nothing
 Set TgRng = Nothing

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 該当するものがない場合は、何も処理しなくて終了してよければ、
 Next の後ろで、

 If ObjDic.Count = 0 Then
     MsgBox "該当するものがありません。"
     Exit Sub
 End If

 のように中断すればどうでしょうか。
(Mook) 2014/09/16(火) 16:34

Mookさん、ありがとう御座います。

該当するものが無い場合は、このコードと同じコードが8コード続くので、
End Withの後の1に飛ばそうとして色々コードを考えていたのですが、
どうしてもうまくいきませんでした。

教えて頂いたコードを参考に
If ObjDic.Count = 0 Then

 GoTo 1
 End If

でうまくいきそうです。
ありがとう御座いました。

(ふみ) 2014/09/16(火) 16:45


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.