Excel処理に マクロを使うか、関数を使うか、 それでもって VBA コードってどのように書いて行けば良いのよ?

極力!Excel関数を使いましょう!!

とにかく Excel VBA は、
すごく 遅い です。

Max
爺さん爺さん 質問、
なぜ VBA は、遅いだ ワン!

Excel関数で 対応できるのであれば、VBA は、使わず「極力 関数を使いましょう!」というのが爺さんの見解です。

VBAは、なぜ遅いかの説明は、奥が深いので 爺さんは、簡単に説明できません。

なぜ コンピューターが動く?という説明から必要になってきます。

ドングリ爺さん
Maxや、
江戸時代の人に、なぜテレビに画像が映るのか説明しろ!と同じような事だと言えば少しは分かってもらえるかの?説明するには、 電気ってなに? からの説明になってしまうじゃろ..

そうじゃのぅ.. 一言でいえば、Excel本体は、すでに アプリケーションとして コンパイル されてるからで、

Excel マクロ を実行するには、人間が理解できる VBA という言葉から コンピューターが理解できる 機械語 という言葉に訳す必要があるので遅いんじゃよ。

ほら!わからんじゃろ

コンパイルとは、

VBA という人間が理解できる命令語から、コンピューターが理解できる言葉(機械語)に 翻訳 する事です。

実際には、プログラミング言語は、VBA だけじゃなく、パスカル とか C 言語 など数多く存在しています。

Excel自体、C 言語 で作られていると耳にした記憶があります..

いずれにせよ、最終的に コンパイル して コンピューターが理解できる(機械語)にする必要があります。

プログラミング言語は、数多くありますが、将来生き残るのは、C 言語JAVA言語 かな?と爺さんは、思っています。

と言うより..

若い皆さんは、現在、使用している コンピューターの事を 古典コンピューター  とよび、量子コンピューター を使う日が 近いかも知れませんね。蛇足でした..

じゃぁ、 どう言うときに マクロ を使うのよ?

答えは、関数じゃ処理できない事をさせたいときです。

Max
爺さん爺さん、

関数で、できない事ってなんだワン!

ドングリ爺さん
それは、Excel自体を操作することじゃのぅ。

印刷とか、

罫線を引くとか、

セルに色をつけるとか、

文字を並び替えるとか、じゃの..

いつもやっている、
コピペ だってそうじゃ。

これらの事は、関数じゃできんじゃろ?

マクロは、どういうときに使うの?

手作業で行わなければいけない Excel作業を自動化 させたいときに マクロ を使います。

マクロ とは?下記記事を合わせてお読み下さい。

Excel マクロ・VBA・VBE ってなぁに?

Excelの広場   爺さんが感じた事なんじゃが、Excelの自動化の事を マクロ と読んだり、VBA と読んだり、VBE と言う言葉もでてきたり..ハッキリしていないので、Max や、説明してくれる ...

続きを見る

プロシージャーの作成、【VBA の書き方】

Max
VBA を書く VBEの準備 方法は、下記記事をお読みくださいだワン!
Excel マクロの VBA を 書く VBE の 準備

Excelの広場 Max 最初に、「Excel マクロ の VBA を 書く VBE」って ? な方は、下記記事を合わせてお読みくださいだワン! 「Excel マクロ・VBA・VBE ってなぁに?」記 ...

続きを見る

マクロ を使うときは、手作業でおこなっている Excel操作の自動化 を、させたいときです。と書きました。

マクロ で処理させたいコードを、VBA にて VBE に書いていくのですが.. スペルが一文字間違っても エラー になり動かなく、とにかくやっかいです!

又、エラーメッセージ 内容も 何を言ってるのか分かりません?なんども 破壊 してやりたくなりました!!

昔 パソコンは、OS が Windows になるまで MS-DOS といって キーボードから コマンド(命令文)を打ち込む必要が有り、B と 8 を間違えるとか、一文字違っても動かなくとにかくやっかいなヤツでした。使える色も豊富で綺麗だし Apple の Mac にあこがれていたものです..

そんな中、劇的な進化をとげた、Windows95 が登場しました。

それは、マウス を使い、コマンドを打つ必要がなく アイコン という 絵文字 で操作できるようになった事です。

爺さんは、パソコンが一般に普及したのは、アイコン をクリックすることで、簡単に操作できるようになった事だと思っています。

学生時代は、機械語 で 操作する時代で、C3 04 20 32 04 20.. と A からF までの アルファベット と 数字 だけで操作できました。

ビル・ゲイツ が ベーシック言語 を 使う MS-DOS を普及させるまでは..

米国人は、英語が言語なので困らないと思いますが、英語が苦手で カミングアウトすると.. アップル というスペルさえ 間違えてしまう 爺さんにとっては、とっつきにくくなり、パソコンなんか Windows95 が出るまでは、放置状態でした。

残念ながら Excel VBA は、使いにくい MS-DOS に似ています。

VBE への VBAコード 記述 方法1 【基本は、コピペ】

分けのわからなく、一文字でも間違えると動かない VBA コードなんか手打ちしません!爺さんの場合、キーを打つのは、TrueFalse くらいです。

VBE の記載は、txt文字 です。

爺さんは、メモ帳 に よく使う VBAコードを書いた一覧を作り、そこから VBE に コピペ 記入しています。

VBE に コピペしたら、変数記述 を 書き換えたり、記入された 参照セル、参照シート名 等、を書き換えて使っています。

シート名を書くときさえ コピペ しています。

なぜなら 形は同じでも、大文字/小文字 まで正確に書かないと エラー になるからです。

VBA は、とにかく やっかいな 人なんです..

VBE への VBAコード 記述 方法2 【動作実績のある プロシャージャー の 一覧作成 及び 流用】

バグ(不具合ヶ所)を修正し 動作実績 のある プロシャージャー は、財産です。db(虎の巻)化して、どんどん増やしていきましょう。

下記図 の例は、シート内に 素材
書かれている セル位地 を検索し、
tateyoko 変数に返す プロシージャー です。

爺さんは、プロシージャーを コピペ し、素材 という文字部を必要に合わせ 書き替えて 使っています。

このように、メモ帳 に 動作実績のある プロシャージャー を db化して増やしていき それを、コピペ すればよい分けです。

これにより、VBE に文字など打つ必要は 99% 無くなります。

じゃぁ 欲しい物が、db に無かったらどうするのか? Excel VBA を扱っている人は多くいらしゃいます。ネットでググれば、すぐに見つかります。

雪だるま式に、VBA コードや、プロシージャー を どんどん db に登録し充実 させていきましょう。

VBE への VBAコード 記述 方法3 【マクロ記録機能って役に立つの?有効な使い方は?】

残念ながら、マクロ記録機能を使ってできた VBAコードを そのまま実務で使う事はできません。

マクロ記録機能が使えない理由

  1. マクロ記録は、操作全てが VBAコード として単純に記録されるだけで、汎用性 がありません。
  2. 必要のないコードまで 全て 書かれている。(ゴミだらけ..)

マクロ機能で自動作成された プロシージャー は、カスタマイズ して使う必要があります。

Excel操作を マクロ記録 させる方法

では、どんな マクロVBA が作られるのか?マクロの記録 させてみましょう。

  1. 「開発」リボンに切り替えます。
  2. 「マクロの記録」アイコンを
    クリック
  3. ダイアログが表示されるので「OK」釦を押して下さい。釦を押すと ② 「マクロの記録」アイコン表示が「記録終了」と変わりり、マクロの記録状態 となります。

手作業で、昇順ソート させてみます。

  1. ソート キー A2 を選択
  2. データ リボンに切り替え
  3. 昇順ソート アイコンを
    クリック

昇順ソート したので「マクロ記録」を終了させます。

  1. 「開発」リボンに切り替えます。
  2. 「記録終了」アイコンをクリックします。これで 昇順ソート マクロ が記録されました。

どれどれ、記録された マクロ VBA をみてみよう。

注意ポイント

記録作成された マクロ VBA は、VBE に作成されています。

昇順ソート 操作した、内容全てが マクロ VBA 記録されてました。

このまま実行させても、昇順ソート しますが...

直接 昇順ソート には、関係ないコードまで含まれています。

Max
爺さん爺さん このコードをみても、何が関係ないのか分からないだワン!
ドングリ爺さん
Maxや、それは、おって説明するから待ってなさい。

 昇順ソートさせるのに必要な コードは、どこなのよ?

昇順ソート は、ソート という オブジェクトを操作する メソッド で、できています。

Max
爺さん爺さん まったく言っている意味が分からないだワン!
ドングリ爺さん
専門用語 だらけで頭にくるぐらい、わからんのぅ..

ソートとは、データーの並び替え のことで、

昇順ソートとは、
小さい順 に並び替えること。

降順ソートとは、
大きい順 から並び替えること じゃ。

その ソート命令は、
オブジェクト(物)でできていて、

メソッド(Method)とは、日本語でいったら、方法 という意味で、

プロパティー のような物なんじゃ。

メソッド が プロパティー と違うのは、

引数 を変える事により 処理内容 が変化する事じゃのぅ..

例として Header という引数があるんじゃが、

これに、

xlNo と書けば 一番上の データーは、
表題じゃ無いよ!

xlYes と書けば 一番上の データーは、
表題じゃよ!

という処理に変わるんじゃ。

昇順ソート するのに直接関係ない VBA コードは、下記図 赤枠 コード です。

Order このメソッドを xlAscending と書けば、(昇順) xlDescending と書けば、(降順) となります。

今回は、昇順 にしたいので、xlAscending

SortOn は、セル背景色で並べ替え DataOption は、並べ替えの方法 使わないので削除します。

SetRange ソート対象範囲を指定します。今回は、A1 ~ A15 なので、Range("A1:A15") と書きます。

Header 今回は、一番上は 表題なので、xlYes と書きます。

MatchCase 大文字と小文字を区別 Orientation 並び替えの方向を指定 SortMethod ふりがなを使うか指定 これらは、使わないので削除します。

最後に Apply 並べ替えを実行します。

標準ソート プロシージャー の VBAコード (赤枠コード 以外)を日本語フロー図で表すと、下記図になります。

ドングリ爺さん
百聞は、一見にしかず! やってみて下され

メソッド と プロパティー の違い

プロパティー は、オブジェクト(物)の詳細だと書きました。

具体的に 釦 の プロパティー を例にします。

  1. 釦の色 = 緑
  2. 釦の高さ = 100
  3. 釦の長さ = 200
  4. 釦に書いてある 文字 = 起動スタート

釦 の プロパティー を下記のように変えると。

  1. 釦の色 = 赤
  2. 釦の高さ = 50
  3. 釦の長さ = 100
  4. 釦に書いてある 文字 = 起動

プロパティー 設定に合わせ が変化しました。

メソッド は、ソート オブジェクト(物)のように、メソッド を変更すると 処理内容 が 変わります。

ドングリ爺さん
この事を専門用語では、オブジェクト指向 とかよんじょる。
ほんとうに、意味がわからんわい!

マクロ記録機能の有効な使い方

Excelには、数えきれないほどの機能があります。

その機能を VBA で書いたらどうなるのかな?

それが知りたいとき、この マクロ記録は、神機能 となります。

 

まとめ

  1. 関数でできることは、極力 関数を使う
    但し!関数式が複雑で長くなる場合、修正が困難になる為、一つのセルに蛇のように書くのではなく、複数のセルを使う。
  2. マクロを使うのは、Excel操作を自動化させたいときである
  3. VBE に書くコードは、手打ちするのではなく、コピペ せよ
  4. バグ修正し、確実に動く プロシージャー は、財産である。db化して充実し蓄積していこう!
  5. マクロ記録機能は、数あるExcel機能を VBA にしたらどうなるのか 確認する TOOL である
  6. マクロ VBA は、本を読んで勉強するのではなく、実際に動かしやってみて 体で覚えろ

 

 

 

 

 

スポンサーリンク

-Excel の広場

Copyright© ドングリ爺のblog , 2021 All Rights Reserved Powered by AFFINGER5.