- 締切済み
Excel 2003 VBA 条件分岐
質問させて頂きます。 私が現在行いたい事を下記に記述します。 1・あるボタンを押すと新規ワークシートが追加されAPIで天気予報を取得、天気予報の更新。 2・天気予報が更新されると晴/雨/曇などとその日により勿論値は変化します。 3・ 2で変化された値によって、同ワークシート内に A10セルに「晴」と言う文字が有れば晴れマークの 画像を貼ります。曇の場合 曇りマークです。 ですが、2 までは上手く出来ますたが、3 で思う用に動作してくれません。 私が現在記述しているコードは下記。 Private Sub tenki_Click() Worksheets("tenki").Activate ActiveWorkbook.XmlMaps("rss_対応付け").DataBinding.Refresh Dim Tiyo As String Dim Kumori As String Tiyo = "C:\SeaNavi\resource\image\Sunny.bmp" Kumori = "C:\SeaNavi\resource\image\Cloudy.bmp" If Range("A10").Value Like "*晴*" Then ActiveSheet.Pictures.Insert(Tiyo).Select With Selection.ShapeRange .IncrementLeft 300 .IncrementTop 5 End With ElseIf Range("A10").Value Like "*曇*" Then ActiveSheet.Pictures.Insert(Kumori).Select With Selection.ShapeRange .IncrementLeft 300 .IncrementTop 5 End With End If 私は If Range("A10").Value Like "*晴*" Then の部分を次の用に理解しています。 If Range("A10").Value は値を取得し Like "*晴*" Then でA10セルの値(文字列)に「晴」と言う文字があれば True でなければ False を返すと考えています。 ですが実行結果は、A10セルには「晴」と言う文字は含まれていませんが、画像を貼る構文が実行されたりなど不具合が絶えません。また、ウォッチウィンドウで If Range("A10").Value の値を見ましたが、 Empty値となっています。ですが条件分岐の式自体は True を返しています。 もう何がなんだか分かりません。 冗長的で説明不足な部分も有ると思いますが対応お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kmetu
- ベストアンサー率41% (562/1346)
> ですが、実際に画像を貼るコードに移ると「アプリケーション定義又はオブジェクト定義のエラーです。」と出てしまいます。 2つ目は実行されるということで、どちらも同じコードなのに変ですね。 そのエラーは存在しないもしくはありえないオブジェクト(存在しないシートとかセルで0行とか)を指定した場合に出るエラーですので ActiveSheet.Pictures.Insert(Tiyo).Select こちらで出ているのか With Selection.ShapeRange .IncrementLeft 300 .IncrementTop 5 End With こちらで出ているのかを確認するためにどちらかをコメントにしてみてエラーの出るほうのコードで何か上記の指定になっていないか確認してみてください。
- kmetu
- ベストアンサー率41% (562/1346)
同ワークシートと書かれているので新規に作成したシートのA10セルの値が変化してるのだと思うのですが、該当コードはシートモジュールだと思いますのでRange("A10")はモジュールの存在するA10セルを参照していますが、そのへんはどうなのでしょうか。 Range("A10")をシート指定 Worksheets("sheet2").Range("A10").Value とか With Worksheets("sheet2") End With で指定するとかしてみてはいかがでしょう。
補足
意図通り条件分岐出来ました。 ですが、実際に画像を貼るコードに移ると「アプリケーション定義又はオブジェクト定義のエラーです。」と出てしまいます。 因みに、2つ目の条件分岐の式内に有る画像を貼るコードは実行されます。
お礼
対応有り難うございます。 時々同じエラーが出てしまいますが、再起動をかけてみると忠実にプログラムも動いてくれたのでしばらくは様子を伺いたいと思います。 また一番最初の問題も指示通りに行ってみたので現時点では問題無く動作しますので私は解決したと思っています。 迅速な対応有難うございました。