質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

3176閲覧

オーバーフローのエラーを消したい

admn

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/06/15 03:06

前提・実現したいこと

イメージ説明
この写真のような出力ができるコードを書いています

発生している問題・エラーメッセージ

実行時エラー'6': オーバーフローしました。


intRowCnt = Range("B1").End(xlDown).Row + 1
にエラーが出てしまいます

該当のソースコード

microsoft

1Option Explicit 2 3Sub main() 4 '=====宣言====== 5 Dim objIE As InternetExplorer 6 Dim strUrl As String 7 Dim intRowCnt As Integer 8 Dim objLink As Variant 9 Dim bLoopEnd As Boolean 10 Dim htmlDoc As HTMLDocument 11 Dim Lists As Variant 12 Dim rng As Range 13 14 15 16 17 Application.OnTime Now() + TimeValue("00:01:00"), "main" 18 19 Range("B1") = "スポーツ" 20 21 Range("C1") = "自然哲学" 22 23 Range("D1") = "健康法" 24 25 strUrl = "https://www.amazon.co.jp/dp/4910001050" 26 27 Call getpage(objIE, strUrl) 28 29 Set htmlDoc = objIE.document 30 31 intRowCnt = Range("B1").End(xlDown).Row + 1 32 33 Call WaitResponse(objIE) 34 Call set_webdata(objIE, intRowCnt) 35 36End Sub 37 38Sub set_webdata(objIE As InternetExplorer, rowcnt As Integer) 39 40 With objIE.document 41 Cells(rowcnt, 1).Value = Now 42 Cells(rowcnt, 2).Value = .getElementsByClassName("zg_hrsr_rank")(0).innerHTML 43 Cells(rowcnt, 3).Value = .getElementsByClassName("zg_hrsr_rank")(1).innerHTML 44 Cells(rowcnt, 4).Value = .getElementsByClassName("zg_hrsr_rank")(2).innerHTML 45 End With 46 47End Sub 48 49Sub getpage(ByRef objIE As Object, strUrl As String) 50 51 Set objIE = CreateObject("Internetexplorer.Application") 52 53 objIE.Visible = True 54 55 objIE.navigate (strUrl) 56 57 Call WaitResponse(objIE) 58 59End Sub 60Sub WaitResponse(objIE As Object) 61 62 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE 63 DoEvents 64 Loop 65End Sub 66

補足情報(FW/ツールのバージョンなど)

ofice365 標準モジュール

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Dim intRowCnt As Integer

Dim intRowCnt As Long

に変更することで解決します
(変数の命名規則が変ですので、それも修正したほうがいいかと)

投稿2020/06/15 03:13

Rocky

総合スコア261

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

admn

2020/06/15 03:19

それに変更すると Call set_webdata(objIE, intRowCnt) にコンパイルエラーByRefの型が一致しませんと出てしまいます。
admn

2020/06/15 03:23

Sub set_webdata(objIE As InternetExplorer, rowcnt As Long)に直したら先ほど質問したコンパイルエラーは出なくなりましたが Cells(rowcnt, 1).Value = Now に実行時エラー’1004’:アプリケーション定義またはオブジェクト定義のエラーですと出てしまいます、どうすればいいでしょうか。
guest

0

現状では2行目のデータがない場合、最下行+1が選択されるのでエラーになります。
こちらではいかがでしょうか。

VBA

1intRowCnt = Cells(Rows.Count, 2).End(xlUp).Row+1

投稿2020/06/15 04:13

radames1000

総合スコア1923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

admn

2020/06/15 04:48

回答ありがとうございます。
guest

0

ベストアンサー

すみません、私の回答が不十分でしたね。
以下に置き換えてください。

VBA

1intRowCnt = Cells(Rows.Count, 1).End(xlUp).Row + 1

投稿2020/06/15 04:05

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

admn

2020/06/15 04:45

すいませんこのサイトを使うのが初めてだったので新しい質問は新規で立ち上げた方がいいのかと思ってこのようにしました。わかりやすかったです
admn

2020/06/15 04:46

ありがとうございます!しっかりと動きました!
ttyp03

2020/06/15 04:51

この件だけで言えば、前の質問のコメントでやりとりした方がよかったですね。 本来なら最終行の取得方法として質問を立ち上げるのがベストですが、まったくわからないと丸投げになってしまい良くない評価がつきますので、ご注意を。
admn

2020/06/15 04:56

わかりましたほかの人のものも見てこのサイトの利用のモラルを学んできます。今回は親切にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問