- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで、デバッグをお願いします。)
VBAでデバッグ!エクセルの製品番号入力プログラムのエラーについて
このQ&Aのポイント
- VBAを使用してエクセルの製品番号入力プログラムを作成していますが、エラーが発生しています。elements.Item(0).Value = Worksheets(1).Cells(1, 1).Valueの行が常にエラーになります。正しいコードを使用していると思いますが、なぜエラーが発生するのでしょうか。
- VBAを使ってエクセルの製品番号入力プログラムを作成していますが、elements.Item(0).Value = Worksheets(1).Cells(1, 1).Valueの行でエラーが発生しています。どのように修正すれば良いでしょうか。
- VBAを利用してエクセルの製品番号入力プログラムを作成していますが、elements.Item(0).Value = Worksheets(1).Cells(1, 1).Valueの行が常にエラーになります。どのように修正すればエラーが解消されるのでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「製品番号検索」という ページ の詳細な構成が判りませんが、「ん?」と思う点を列挙いたします。 1)getElementsByName("partsno_0" & "i") は getElementsByName("partsno_0" & i) ではありませんか? 2)If Not WinExist = True Then とのことですが、「製品番号検索」という ページ 以外の WEBページ が開いている場合も、 WinExist = True になりませんかねぇ? 3)i = i + 1 しながら、「Do ~ Loop」で回すのでしたら、 i = 1 は「Do」より前ですね。 4)「i」が2桁になった場合に「partsno_20」ではなくて、「partsno_020」というような文字列になってしまいますので、(1)で訂正した ("partsno_0" & i) の部分は、 ("partsno_" & Format(i, "00")) とすべきです。
お礼
ご返答ありがとうございます。 1)気づきませんでした。その通りですね。 2)その通りです。ただ、普段はfirefoxを使用するので、予測される問題はおきません。 3)その通りですね。すみません素人で・・・。 4)なるほど、formatって、そういう使い方もできるんですね。 以下のように書き換えましたが、まだ elements.Item(0).Value = Worksheets(1).Cells(i, 1).Value で、止まります・・・・。 i = 1 Do While i < 21 Set elements = ObjIE.document.getElementsByName("partsno_" & Format(i, "00")) If elements Is Nothing Then Exit Sub End If elements.Item(0).Value = Worksheets(1).Cells(i, 1).Value i = i + 1 Loop elements.Item(0).form.submit End Sub
補足
すみません。なぜかできました。