プロが教えるわが家の防犯対策術!

win7からwin10にPC変えてからマクロが動かなくなりました。

Dim i,d

For i =3 To 50

If Cells(i,1).Value <> "" Then

d=Cells(i,4).Value

Worksheets(d).PrintOut

End If

Next

こんな感じでA列に日付が入っていたらD列に対応したシートを印刷するマクロです。

win7の時は普通に動いていたんですがwin10になってからインデックスが有効範囲にありません的なメッセージが出て動かなくなりました。

デバッグで一行づつ実行すると何事もなく動作するのですが何が原因か分かる人がいましたらご教授の程よろしくお願いいたします。

A 回答 (2件)

こんばんは、


>デバッグで一行づつ実行すると何事もなく動作する
OSバージョン変更に伴いOfficeに不具合が発生した可能性も捨てられません。
この場合、Officeの修復などを実行してみてください。(簡単な修復から再インストールまでいくつか方法があります)

OS,Officeに問題がない場合は、GooUserラックさんの回答にあるように、VBAコードの問題と思います(示されているものならば)
ただ、この条件で今までエラーが返らなかった事には、疑問もありますが。。

示されているVBAコードには明らかに対策が必要な部分がありますので、そのためエラーが返る可能性があります。
(今回の不具合がそこにあるとは断言できませんが)

>If Cells(i,1).Value <> "" Then A列対象セル空白でなければ、、です。
これだけでは、D列対象セルが空白でも(又は何が入っていても)実行されてしまいますね。

まあ、詳しい表組み参照式など分かりませんので断言できませんが、コードだけで判断するに、
最低でも下記の様にエラー対策をするべきです。

If Cells(i,1).Value <> "" and Cells(i,4).Value <> "" Then

また、検証が必要な事として、シート自体をVBAで作成している場合、そのコードでD列への出力部分での問題の可能性もあります。

もっとも、型やシートなどを省略されているので、投稿用に走り書きしたのかも知れませんが、
コードの対策、ダメならOfficeの修復、新規ブックに移すなどなど、、不具合を確認しながら、対策(原因)を切り分けて進めてみてはいかがでしょう。
    • good
    • 0
この回答へのお礼

エラー対策の提案ありがとうございます。

アクティグシートを明示してコード書いたら直りました。

今まで正常に動作していたのが不思議ですがOS変わるとこういう事もあるんだと勉強になりました。

お礼日時:2020/02/19 04:53

エラーが出た時「デバッグ」ボタンを押して、表示された部分の変数にマウスポインターを持って行って少し経つと下図のように何か表示されませんか?


対象の変数と表示されたものを提示して下さい
「マクロが急に動かなくなった」の回答画像1
    • good
    • 0
この回答へのお礼

変数はエンプティでした。問題解決の糸口になりました。ありがとうございます。

お礼日時:2020/02/19 04:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング