
Excel.VBA 数式を壊されたときの対応
事の発端
「この前作ってくれたExcelうまいこと動かないんだけど」
職場で「Vlookupでデータを検索、マクロで別シートに転記する」というシステムを作ったのですが、
私のところに苦情が来てしまいました。
このExcelは社内の共有フォルダにおいてありますので誰でも触ることが出来ます
それを開いてみたら、うまく動かない原因がすぐにわかりました。
なんと信じがたい事に…
Vlookup関数があったところが手入力で上書きされているではありませんか!
数式が壊されてしまいました(涙
なんでわざわざ数式を組んであるのに、手入力したら何の意味もないじゃないですか
数式を組みなおして、テキストボックスで「数式が入っている為編集禁止!」等で注意を促して対応終了
戦いの始まり
編集禁止のテキストボックスを用意しているのに、わざわざそれをずらして数式を壊してくるとか考えられますか?
そうです、また数式を壊されました
許せません
いくらExcelの知識がなかろうと、知りませんでしたでは済まされない罪
編集禁止っていっているじゃあありませんか!
その後テキストボックスを赤色で強調するなどしましたが、また壊されてしまいました
もうこうなったら数式が壊れていたらマクロが動かないようにしてやる!
マクロをちょっと書き換えるだけ
そうと決まれば話しは早い
マクロにちょっと手を加えるだけで「数式が壊れていたら動かなくする」ことが可能なのです
HasFormulaは範囲内のセルがすべて数式ならTrue、すべて数式じゃなかったらFalse、数式とそれ以外が混在しているとNullが返ってきます
ThisWorkbook.Close savechanges:=Falseで強制クローズします
これでよし!
もし数式がちょっとでも壊されていたら強制クローズするマクロの完成です!
対応完了!
数式が壊されてしまうのでマクロで対応してやりましたよ
もうこれで安心です
この後、状況に進展があったら追記していきたいと思います
もし、このブログが困ってらっしゃる人の助けになれば幸いです
私は日々ExcelやVBAなど勉強しております
その中で気づいたこと、ためになったことを発信出来たらなと思っております
最後までご覧いただきありがとうございました