Excelセミナーレポート


Excelセミナーレポート

6月26日「ExcelマクロVBAセミナー初級編」開催レポート

こんにちは、サブ講師の鹿島です。
今日は「ExcelマクロVBAセミナー初級編」の開催でした!

すごい改善のセミナー少人数制なので、
講師もサブ講師も総力体制でサポートしています。

今日は、しっかりとプロシージャの意味を読み解いて身に着けようと
熱心に講師&サブ講師にご質問をされる受講者さまが、
いつも以上に多くいらっしゃったように感じます。

熱心に聞いてくださると、教える方もついつい熱が入りますね!


さて、今日ご紹介するご質問は、こちらです。

列番号を数字で指定していますが、途中で列挿入を行うとどうなりますか?

ワークシートで関数を使う時、動画のように列挿入をしても、
関数の参照セルが動いてくれるので、エラーになったり、
意図せぬ結果になってしまったりすることはありません

それでは、マクロではどうでしょうか?
シート上で列の挿入などを行っても、VBE上のプロシージャに書いた
列指定は固定値で書いた時のまま、変化することはありません。

それでは、
誰かが列の追加を行う可能性がある場合には、どうすればよいでしょうか?
やり方はいろいろありますが、以下のような方法が考えられます。

・列挿入はしない、というルールを作る
 →アナログですが、運用ルールを作るというのは実は一番重要だったりします。
  「列追加は絶対にNG!」としなくても、
  「列追加は右端に付け足すのみOK」や、
  「(マクロで使用する)○列より右ならOK」とすることでも運用できます。

・毎回列位置を探す
 →Match関数などを使って、特定の値(列タイトル)が入っている列を探し
  その列番号を変数に入れて使用する方法です。
  Dim c As Long
  c = WorksheetFunction.Match("ID", Range("1:1"), 0)

  列番号を入れる変数cを用意し、Match関数で処理したい列の列番号を格納する

・タイトル行のセルに、名前定義をする
 →タイトル行に名前の定義をしておけば、セルにつけた名前を使って、
  以下のような書き方ができます。
  Range("ID") →「ID」という名前を付けたセル
  Range("ID").Columns → 「ID」という名前を付けたセルの列数(列番号)
  Range("ID").EntireColumn → 「ID」という名前を付けたセルの行全体

このように、解決方法はいろいろ考えられます。


マクロを作る上で、やはりある程度の制約は必要です。
列の追加以外でも、シート名の変更、タイトル行のタイトル名の変更、などなど
ユーザに自由を許しすぎてしまうと、あらゆるパターンを想定した
複雑なマクロを書かなくてはいけなくなってしまいます

セミナーで習ったコードや、検索して調べたコードを
そのまま加工せずに業務で活用できる、ということはほとんどありません。
実務に即して、問題点と一緒に無期限サポートでご相談いただけば
具体的なアドバイスやサンプルコードのご提供が可能です。

「本に書いてあるマクロを実務に活かしきれない」、
「ネットで見たけどどう加工していいのかわからない」
そういうお悩みがあれば、ぜひセミナー受講&無期限サポートのご利用を!

次回のマクロセミナーは、7月31日!
お申込み受付中です。




  • Excel学習法診断
  • 100の極意マスター講座
  • おすすめショートカット一覧・壁紙ダウンロード
  • オリジナルExcelグッズ
  • Twitter:吉田 拳@Excelすごい改善社長
  • Excelで業務効率化を実現!
  • Excelで業務効率化を実現!
  • 約1万人の業務効率を劇的に改善!Excel速技BEST100
  • 資金繰り予報士 こがねむしクラブ