見出し画像

WorksheetオブジェクトのCopyメソッドでハマった話【VBA】

プロローグ

概要

今回はVBAをコーディングしていた際にハマった話です。
内容としては、WorksheetオブジェクトのCopyメソッド(シートを複製・コピーするやつ)のお話になります。

私のVBA経験について

私はVBAの経験は今の会社に入社してからになります。
執筆時点でちょうど1年です。
ツールとしては、5本くらい作ったくらいの経験値になりますので、間違い等ありましたらご指摘ください。

エラーについて

ファイルは記事書く用に簡単に作成したので、雑さは許してください。

何が起きたか

シートをコピーしようと思い、シートオブジェクトを指定してCopyメソッドを使用し実行した所、以下のようにエラーで止まりました。

エラー再現画像

シートオブジェクトは認識しているか

前提として「シートオブジェクト」は下記画像のように、認識されてました。

シートオブジェクトが認識されているか確認

どうやって解決したか

エラーの原因

結論から申し上げると、シートオブジェクトで指定していたシートが非表示になっておりました。
→こちらを表示にした所、動くようになりました。

一応コードも

対象のシートを再表示で表示してから実行しました。

解決したコード

エピローグ

公式ドキュメントに書かれていない

一応Microsoftの公式ドキュメントを確認しましたが、注意等は特に記載されてませんでした。
https://learn.microsoft.com/ja-jp/office/vba/api/excel.worksheet.copy

VBAのエラーはが粗い

私はPythonから入ったため、個人的にVBAのエラーが粗いなぁと思ってます。
「コピーできません」としか出ないため、解決するのにかなり時間を要しました。特に今回は他プログラムから連携から、VBAを動かしていたため余計時間を要しました。(4時間くらい)
結論として、もっと細かくエラーを記載してほしい。

UI側がいじれてしまうことが問題!?

Excelなので、UIが簡単に変更できてしまうことが問題だと思ってます。
実は前にも似たことがあり、その際は行や列が非表示になっており正しく計算されずエラーになったことがありました。

結論

UIが簡単に変更でき、尚且つエラーが粗いことが大きな問題だと個人的に思います。
エラーがわからないと、偶然上手くいっちゃう場合とかもありますしね。
今に始まったことではないですが、VBA嫌い。
最近Pythonのドキュメントを書いているので、近いうちにPython関連の記事を書きます!もう少々お待ちを

あくまでも…

あくまでもソフトウェアの話です。
ハードウェアのエラーは環境なども要因として入ってくる可能性もありますので、エピローグの個人的意見はその辺を考慮して読んで頂けると幸いです。


この記事が気に入ったらサポートをしてみませんか?