システムエンジニア方excel

ExcelVBAで結合セルの入力規則の値を削除する方法

ローグライクゲームかと思うくらいに

ExcelVBAに触らない期間があると、すぐに記憶・技術の全てがLV.1まで戻ってしまうのが悩みのタネのサジマです。

今回はいわゆる見積書のようなものを作成していた時に問題に直面しました。入力規則で設定してある値を選択すると、条件に従って算出された金額が表示される、という単純なもの。正しく計算結果を返すということは当然のことながら大前提ですが、それを印刷して提示する必要もありました。

スポンサーリンク

セルの削除とクリアの違い

今更なにを、ではありますが、「セルのデータを消す」という表現に様々ありますね。

Range(“A1”).Delete
 →セルを削除し、左か上の方向にシフトする
Range(“A1”).Clear
 →セルの値と書式をクリアする
Range(“A1”).ClearContents
 →セルの値をクリアする
Range(“A1”).ClearFormats
 →セルの書式をクリアする

一般的に用いられていそうな「削除」という言葉を使ってしまい、なおかつそれを額面通り受け取ると、マクロで処理するにつれ、どんどことセルが消えていく悲しさ。実際は、新人さんなど不慣れな方がやっちゃうくらいだと思いますが。

結合セルの入力規則の値を削除する

さて、今回の見積書のネックは、使用環境。キーボードなし、タブレットPCのみで値を操作する予定があったのです。

実機確認の結果、タブレットPCでexcelの入力規則の値を変えるのは、なかなかに手間になるケースがあり得るということが分かりました。iPad等他のタブレット端末ならば別かもしれませんが、少なくともその環境化では①反応しない②異なった値を誤選択してしまう回数が大半を占めました。

原因のひとつは、プルダウンボタンが小さすぎて視認性も悪いこと。さらに、一度値を入力した状態で再選択をする場合、更に変更が難しくなります。

ちなみにボタンが小さい件、Excel2013では「コマンド間隔」をマウスではなくタップ用にすることができますが、入力規則のプルダウンボタンのサイズは非可変です。どうにかして頂けたら嬉しいように思います。

デザインや用途等を検討した結果、入力したデータをクリアするマクロを作り、操作開始時に必ずそれを押すことにしました。

ところが、印刷する前提だったため、入力規則を設定したセルを、周囲のセルと結合させていました。そのセルを単純に「Range(“A1”).ClearContents」でクリアしようとすると「いつもの」=「実行時エラー:1004」がでました。

入力規則を設定したセルにある値は、ClearContentsでは削除できないのか?などと早とちりしかけましたが、マクロを指定して実行する(Alt+F8などで画面出現)と、下記エラーが出てきてくれました。

マクロ実行画面
マクロ実行画面
VBAのエラー「この操作は結合したセルには行えません」
エラー内容がはっきりしました

つまりは、「指定するRangeを含む結合セルの値をクリアする」という指定をする必要があるということで、下記の通りにしたら、問題なく処理できました。

Range(“A1”).MergeArea.Clearcontents

以上、備忘録でした。

スポンサーリンク

投稿者: サジマ

WEB担当+IT系の備忘録を担当するはずが、家庭菜園にも挑戦中。 2016年はコケリウムと水耕栽培に手を出しています。

同一シリーズの前後の記事

同一カテゴリの記事(ランダム)

スポンサーリンク

「ExcelVBAで結合セルの入力規則の値を削除する方法」への2件のフィードバック

  1. いやー、参考になりました。
    内覧会のアンケートをタブレットで記入してもらうので、エクセルで作成しました。
    中に、コメント欄があり、終了ボタンを押すとクリアするようにしたのですが、結合セルだったので、消せずに悶々としました。
    これで、解決です。
    自分は、エンジニアではないのですが、マクロを使うと便利だと思います。

    1. おじじ様
      サジマと申します。コメントありがとうございます。
      マクロは、使いこなせれば効率が格段に向上する一方、なかなか思い通りには動いてくれないため、「ニクイ」存在だと思っております。
      このようなつたない備忘録で、お役に立つことができ、光栄です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です