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関連の記事を書きます!もう少々お待ちを
あくまでも…
あくまでもソフトウェアの話です。
ハードウェアのエラーは環境なども要因として入ってくる可能性もありますので、エピローグの個人的意見はその辺を考慮して読んで頂けると幸いです。
この記事が気に入ったらサポートをしてみませんか?