お世話になっております。
現在、VBAを利用し始めてひと月足らずの者です。
上司から依頼を受けて新しいVBAの作成に当たっているのですが、
苦戦しており、ご質問させていただきます。
全社員が業務で使うExcelシートについて、各人の入力ミスが多いため
手入力する場所が間違っていたらエラー表記が出るようなマクロを作成してほしいとの依頼です。
具体的には、
① 所属部署、社員番号の入力ミスがあったらエラーになる
② ある項目の割合を100%にする箇所があるのですが、
(例えば50%、30%、20%という形、こちらも手入力)
そちらが100%になっていなければエラーになる
③ とあるセル(例えばB4セル)に入力があった場合、
別のセル(例えばC4セル)に入力がなければエラーになる
といったマクロにしてほしいとのことです。
これまでにExcelシートの切り分けなどをしたことはあるのですが、
上の三つについては構想が思いつかず、調べてもなかなかほしい情報にヒットしません…
大変お手数ですが、もし解法あるいはヒントがありましたら、お教えいただけますと幸いです。
自分の書き方では十全な理解をしていただくこともままならないかもしれませんが、
何卒、よろしくお願いいたします。
「初心者アイコン」を質問につけられますし質問タグもあるので
【VBA初心者です】や冒頭の挨拶はなくても良いかと思います。
見る方としては要件だけを淡々と書いてもらったほうがありがたいのです
2,3は条件付き書式、1は部署数・社員数にもよるけどデータの入力規則で要件は達成できそう
①所属部署の一覧を別シートに用意し、入力欄の「条件付き書式」で、その一覧に一致するものがない場合はセル色を変える
または、所属部署の一覧を別シートに用意し、入力欄の「データの入力規則」でその範囲を指定する
②たとえばE1,E2,E3セルの合計が100%になる必要があるとしたら、
E1~E3の「条件付き書式」で、「=SUM($E$1:$E$3)<>1」の条件の時にはセル色を変える
③C4セルの「条件付き書式」で「=AND(NOT(ISBLANK($B$4)),ISBLANK($C$4))」の条件の時にはセル色を変える
m.ts10806様
ご指摘ありがとうございます。修正させていただきました。
Y.H.様、,jinoji様
コメントありがとうございます。
やはりマクロにこだわらずにExcel機能を活用すべきですかね…ありがとうございます!
VBAを使ってもできますし、使わない方法もあります。
どの方法を使うのが適切なのかは、実際の利用シーンによって変わってくると思います。
たとえば、そのExcelシートを使う各社員が入力時/入力後にチェックするのか、
そのシートを回収して集計する業務の人が、集計前にチェックするのか、といった具合です。
全社員にExcelシートを配るとしたら、マクロありのファイルで配るのはやめた方が無難かもしれません。
「マクロを無効にする」の設定で開く人がいると、チェックが行われないからです。
一方、もしも今回の上司さんの指示の意図が「あなたがVBAに習熟できるよう、ひとつ業務っぽい課題を与えてみた」というものであれば、私が上に書いた「条件付き書式」などの方法では意味がないかもしれません。
jinoji様(先ほどお名前を間違ておりました、訂正し、お詫び申し上げます。
コメントありがとうございます。
なるほど、マクロを無効にする人も出てくる可能性がありますね…上司からは教育目的ではなくあくまで業務改善を喫緊の課題としている旨が伝わってきますので、やはり関数で解決するほうが総合的にはベターな解決策かもしれません。
ありがとうございます。