- 締切済み
DTPickerで入力したらの検索が出来なくなりました。
お世話になります。 質問ですが 以下のVBAコードがあります。Sheet3のCells(2, 6)に記入した日付によってSheet1の検索を一部行うのですが、Cells(2, 6)への入力をDTPickerを使って行うようにしたら該当する日付がありませんのエラーが帰ってきます。たぶん書式が違うせいかなと思うのですがどうすればいいのでしょうか? どなたか分かる方いらっしゃいますか?よろしくお願いします。 Private Sub CommandButton1_Click() Dim trgA As Variant, trgB As Variant With Worksheets("Sheet3") If IsEmpty(.Cells(2, 7)) Then MsgBox "個数が空です。", vbCritical: Exit Sub '日付 trgA = Application.Match(.Cells(2, 6).Value2, Worksheets("Sheet1").Range("A:A"), 0) If IsError(trgA) Then MsgBox "該当する日付がありません。", vbCritical: Exit Sub '製品名 trgB = Application.Match(.Cells(2, 4).Value, Worksheets("Sheet1").Range("2:2"), 0) If IsError(trgB) Then MsgBox "該当する製品名がありません。", vbCritical: Exit Sub If Worksheets("Sheet1").Cells(trgA, trgB + 1).Value = "" Then Worksheets("Sheet1").Cells(trgA, trgB + 1).Value = .Cells(2, 7).Value Else If MsgBox("上書きしますか", vbQuestion + vbOKCancel) = vbOK Then Worksheets("Sheet1").Cells(trgA, trgB + 1).Value = .Cells(2, 7).Value End If End If End With End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。Wendy02です。 >Cells(2, 6)への入力をDTPickerを DTPickerは、一応VB6のランタイムのことと思ってお話します。 DTPickerコントロールはどこにおいて使っているのでしょうか? それで、どのように、DTPickerを使っていらっしゃるのでしょうか? それと、ExcelのVersion はいくつですか? Versionによって戻り値に違いがあります。 通常、今のコードは、DTPicker の Valueは、Date型のはずですから、DTPicker で、セルに代入すれば、キャストされて、Date型になります。 そのセルの代入値の Value2プロパティなら、そのまま数値で検索するはずです。 ただし、Sheet1のA列のデータか、DTPicker 側のどちらかの年が違えば、それは検索しません。その場合は、Findメソッドを使うのですが、この部分で、xcel の Versionによって、それぞれの仕様が変わります。 今のコードですと、あえて行うなら、念のため、もう一度、CDateで、値をDate型に戻して、それを CLng で、数値に変えて検索すればよいのですが、現時点では、その必要性は感じません。 もし、ご自分で確認するなら、 代入値の Cells(2,6).Value と Cells(2,6).Value2 と Cells(2,6).Text のそれぞれの値で、Match 関数で検索が可能か調べてみてください。
補足
wendy02さんこんにちは。 先日はお世話になりました。 エクセルは2003、DTPicker1はシート3上に貼り付けてあります。 質問した後、いろいろいじっていたらうまく反映されるようになりました。最初DTPicker1を右クリックしたときに現れるプロパティのlinkedcell欄にF2と入れたときはだめでしたが、コード入力画面で Private Sub DTPicker1_Change() Cells(2, 6) = DTPicker1.Value End Sub と入れたところ出来るようになりました。プロパティに入れたときと何が違うのか、良く判らないのですが、目的を達成することが出来ました。 先日の質問と今回の件と本当にお世話になりました。 今回のwendy02さんの回答も今後の参考にさせていただきます。(むずかしくてなかなか理解できませんが、無駄にならないように努めます) 本当にありがとうございました。