基礎講座第1章9 - 変数を活用するときの注意点

変数とワークシート関数での挙動の違い
変数名をつけるときの注意
構文エラーになっているプログラムがあるときの注意点

【この動画で使用する教材ファイル】
 ・Kiso01.xls
 ・kiso_mm_movie.pdf(P10:講義概要)
 ・kiso_mm_movie.pdf(P6:Visual Basicの文法)
※講座内で使用する資料は、この個別ページ内でダウンロードできます。

この講座を含む定額コースに参加するか、この講座を購入することで、講座を利用できるようになります。
定額コースに参加すると、そのコースの利用期間中はいつでも講座を利用できます。
講座を購入すると、いつでも講座を利用できます。

この講座を含む定額コースや購入の詳細については、講座トップページの「利用方法」を御覧ください。

学習記録としてメモを残す

完全に理解できた
まあまあ理解できた
ふつう
あまり理解できてない
さっぱり分からない

※メモを残すにはこの講座の利用権限が必要です。

質問や感想を投稿する

とても満足 満足 普通 不満 とても不満

ユーザ名を使う ニックネームを使う 匿名で投稿

※投稿に必要な権限がありません。

このページへの投稿/コメント

投稿ID: 5212 受講生さんの投稿
おはようございます。
現時点の学習段階で質問があります。

コードを書いていくときは基本的には、半角と小文字で書いていくと言うことでしたが、サブプロシージャ名と変数、そしてA1、B1などのセルは大文字で書きはじめるという理解で良かったでしょうか?

セルはa1という小文字でも反応しましたが、先生は大文字で書かれていました。小文字で書き始めない理由は何かありますか?
投稿日時: 2021年11月13日 16時32分13秒
コメントID: 7392 小川慶一さんからのお返事
おはようございます。

のちほど第2章で説明しますが、セル番地の指定は文字列で行います。

Range("A1").Value = 5 であれば、 "A1" の部分は文字列です。
セル番地指定の部分を小文字で書いても結果的に正常動作します。

とはいえ、そもそも、厳密に言えば "A1" という文字列と "a1" という文字列は別物です。
エクセルシート上ではセル番地は大文字アルファベットと数値の組み合わせで書かれています。
その点を考慮すると、 "A1" という番地を指定するのに "a1" と書いてしまうのはあまりスマートではないと僕は思います。


なお、以下は、念のための補足 & 今後のための追加情報です。

"a1" が "A1" に自動変換されないのは、これが文字列だからです。
「"excel" とすべて小文字で文字列を書きたかったのに "Excel" と勝手に変換された」みたいなことは起こりませんが、それと同じことです。(起きたらむしろ困りますね)


一方、Range, Value 等の、命令を示すためにあらかじめ用意されている言葉は、小文字で書いても、自動的に大文字小文字の組み合わせに変更されます。(かなり学習が進むと例外はありますが、当面はこの理解でOKです)


以上から、以下のようにプログラムを書くと

range("a1").value = 5

以下のように、 range, value だけ自動的に書き直されます。

Range("a1").Value = 5


この自動的に書き直してくれる機能は、活用できると便利です。

どのように便利かというと、書き間違いの検出に利用できます。

たとえば、英語のつづりを間違えて、以下のように書いてしまったとしましょう。

ranje("a1").balue = 5

すると、 ranje, balue という言葉はあらかじめ用意された言葉ではないので、自動的に大文字小文字の組み合わせに変更されません。
そのことから、「あれ?大文字小文字の組み合わせに変更されなかったぞ...?なぜだ...?ああ、つづりを間違えていた!」と、すぐに気づくことができます。

これが、以下のように最初から ranje -> Ranje, balue -> Balue と律儀に大文字小文字の組み合わせで書いてしまうと、

Ranje("a1").balue = 5

この「自動変換されないことからおかしいと気づく」という機会を逃してしまいます。

「コードを書いていくときは基本的には、半角小文字で書いていく」という書き方を推奨しているのは、以上の理由からです。


この「自動的に大文字小文字の組み合わせに変更される」機能は、「あらかじめ」用意されている言葉だけでなく、自分で定義する変数やサブプロシージャの名称(つまり、「自分で新たに用意した言葉」)についても使えます。
たとえば、以下で、 hensu = 3 という箇所は、自動的に Hensu = 3 と修正されます。一方、「hemsu」のほうではそういうことは起こりません。これにより、「hemsu」等と書き間違えた場合にそのミスを検出できます。

Sub Hoge()
    dim Hensu
    hensu = 3
    range("A2").Value = hemsu
End Sub

発展編1では、「サブプロシージャを他のサブプロシージャから呼び出す」という手法も学びます。(導入編でもちらっとやりました)
そのときにもこの自動変更機能が役に立ちます。

たとえば、以下では、 hoge は Hoge に変更されますが、 hqge は hqge のままです。

Sub Hoge()
    dim Hensu
    Hensu = 3
End Sub
Sub Fuga()
    hoge
    hqge
End Sub


以上で、いただいたご質問に関係しそうなところはだいたい示したつもりですが...。
いかがでしょう。

まだ疑問解消していない点がもしあるようでしたら、また投稿をお願いします。
コメント日時: 2021年11月13日 17時57分29秒
コメントID: 7393 受講生さんからのお返事
早速の返信ありがとうございました!

質問に的確に回答してくださり、良く理解できました。

また、なぜ"a1"が"A1"に変換されないかという、質問以上の回答までありがとうございます!(^^)
コメント日時: 2021年11月13日 21時15分53秒
コメントID: 7395 小川慶一さんからのお返事
受講生 さん:

よかったです。
ひきつづきよろしくお願いいたします ^ ^
コメント日時: 2021年11月15日 20時33分18秒
投稿ID: 4485 ゲストさんの投稿
先生こんにちは。
my消費税計算
my税率
などとしておけばば、ctr+space,ctr+j
で自動変換が利くと思います。日本語を含むだと後任者(数日後の自分含む)が速く理解できる反面、Dim時に半角全角切替が必要なので面倒ということですね。
投稿日時: 2019年05月19日 08時38分28秒
コメントID: 6183 小川慶一さんからのお返事
ゲストさん:

何についてどこまで気を使うか?というところは、後任者の能力(への期待)次第です。

基礎編レベルのときには書いているプログラムの質的にも書いたプログラムの量的にもピンとこないことかもしれません。

後学のため、以下のブログ記事も読んでおいてください。

○[質問] 同じ機能を実現するマクロの書き方が複数ある場合、どの書き方が良いか分からなくて迷います。
https://www.exvba.com/4378/



> 先生こんにちは。
> my消費税計算
> my税率
> などとしておけばば、ctr+space,ctr+j
> で自動変換が利くと思います。日本語を含むだと後任者(数日後の自分含む)が速く理解できる反面、Dim時に半角全角切替が必要なので面倒ということですね。
コメント日時: 2019年05月19日 11時14分27秒
投稿ID: 3575 受講生さんの投稿
ご指定のファイルを開き、6枚目「Visual Basicの文法」をみたのですが、内容が微妙に異なっています。ファイルのバージョンが違うのかなと気になりコメントしました。
投稿日時: 2017年12月12日 18時13分06秒
コメントID: 5056 受講生さんからのお返事
受講生さん:

事務局に確認させます。
少しお待ちください。


> ご指定のファイルを開き、6枚目「Visual Basicの文法」をみたのですが、内容が微妙に異なっています。ファイルのバージョンが違うのかなと気になりコメントしました。
コメント日時: 2017年12月12日 18時30分33秒
コメントID: 5057 受講生さんからのお返事
受講生さん:

事務局に確認させましたが、以下の見解です。
海上さんの感触としては、どうでしょうか。

[1]差異はありませんでした。
動画に表示されているmindmapについて、資料のmindmapと一言一句比較しましたが、差異はありませんでした。
可能性として、動画の最初の方で表示していたmindmap(講義概要p10)の「変数」と途中から表示していたmindmap(VisualBasicの文法P6)の「変数」で混同してしまったのではないでしょうか。

[2]万が一、私が見落とした差異があったとしても、講義の内容に支障がでるほどではないと判断しました。

よろしくお願いいたします。
コメント日時: 2017年12月12日 23時42分43秒
コメントID: 5058 受講生さんからのお返事
小川先生、事務局様

お忙しい中、
ファイル内容の確認をして頂き、ありがとうございました。
職務中で、今調べることができませんので、まずは迅速にご対応いただいた感謝を申し述べたいと思います。。多分私の勘違いだと思います。
仰るとおり、講義内容に差し支えることではないので‥‥。貴重なお時間をさいてお調べいただき、すみませんでした。
コメント日時: 2017年12月13日 00時41分53秒
コメントID: 5060 受講生さんからのお返事
受講生さん:

気になることがあれば、また気軽にお問い合わせください。
ひきつづきよろしくお願いいたします。
コメント日時: 2017年12月13日 01時23分35秒
投稿ID: 3574 受講生さんの投稿
マインドマップで、動画で指摘されている箇所を確認しようとしたのですが、私のファイルでは、変数の説明をしている箇所が見つけられませんでした。
kiso_mm_movie.pdfの、Visual Basicの文法というページです。動画に映っている算術演算子のリストはありますし、変数という項目もあるのですが、「宣言する」などの文字はありません。
私がファイルを勘違いしてたら、教えてください。
投稿日時: 2017年12月12日 16時08分27秒
コメントID: 5055 受講生さんからのお返事
受講生さん:

kiso_mm_movie.pdf

6枚目「Visual Basicの文法」にないでしょうか。
あるいは、最後から2番目のページ「講義概要」。

※資料は本ページ動画下からもDL可能です。


> マインドマップで、動画で指摘されている箇所を確認しようとしたのですが、私のファイルでは、変数の説明をしている箇所が見つけられませんでした。
> kiso_mm_movie.pdfの、Visual Basicの文法というページです。動画に映っている算術演算子のリストはありますし、変数という項目もあるのですが、「宣言する」などの文字はありません。
> 私がファイルを勘違いしてたら、教えてください。
コメント日時: 2017年12月12日 17時54分44秒
投稿ID: 3306 受講生さんの投稿
変数の名前をつけるにはルールがあることを学んだ。
2バイトの漢字やひらがなを使うのは NGである。
作業時間がかかってしまう。。。今日も賢くなれました。
投稿日時: 2017年08月09日 04時53分28秒
コメントID: 4766 小川慶一さんからのお返事
受講生 さん:

> 作業時間がかかってしまう。。。今日も賢くなれました。

こういう微妙?と思えることも、たくさんマクロを書くようになると大きな問題になってきます。
いまのうちから、筋のよい書き方を学んでいただければと☆


> 変数の名前をつけるにはルールがあることを学んだ。
> 2バイトの漢字やひらがなを使うのは NGである。
> 作業時間がかかってしまう。。。今日も賢くなれました。
コメント日時: 2017年08月10日 02時04分43秒
投稿ID: 2597 受講生さんの投稿
なぜアルファベットで書かれているのか疑問でしたがクリアになりました!
投稿日時: 2016年09月26日 23時43分11秒
コメントID: 4030 ゲストさんからのお返事
受講生 さん:

2バイト文字で書く人もいますけどね。
量をこなしているとそんな気はなくなります。

>なぜアルファベットで書かれているのか疑問でしたがクリアになりました!
コメント日時: 2016年09月27日 22時58分41秒
投稿ID: 2516 受講生さんの投稿
ネーミングルールは大切なんですね。後でわかるようにと日本語で書いていましたが、全角、半角がめんどくさいです。コメントをつけとけばあとでわかりやすいですよね。
投稿日時: 2016年08月14日 00時01分28秒
コメントID: 3945 ゲストさんからのお返事
受講生 さん:

休暇中につき、お返事遅れてしまいました。
一連のコメント拝見しました。急所をついていてとてもよい内容と感じました。
半角全角の切り替えについては、普段からデフォルト半角モードで作業する。全角で入力したrら速やかに半角モードに戻す、という習慣をつけられると良いかと思います。少なくとも、プログラミングでは基本は半角です。

>ネーミングルールは大切なんですね。後でわかるようにと日本語で書いていましたが、全角、半角がめんどくさいです。コメントをつけとけばあとでわかりやすいですよね。
コメント日時: 2016年08月20日 18時02分06秒
投稿ID: 2386 菊池 明彦さんの投稿
いつも講義を拝聴してますが分かりやすくためになります。メールも楽しみに読んでます。これからもよろしくお願いします。
投稿日時: 2016年05月25日 07時54分23秒
コメントID: 3815 ゲストさんからのお返事
菊池 明彦 さん:

ありがとうございます。ひきつづきよろしくお願いいたします。



>いつも講義を拝聴してますが分かりやすくためになります。メールも楽しみに読んでます。これからもよろしくお願いします。
コメント日時: 2016年05月26日 15時11分34秒
投稿ID: 1816 受講生さんの投稿
小川様
お世話になっております。現在基礎編復習モードに入っています。
マクロの質問ではありませんが、小川様が動画中に使っている赤字でアンダーライン引いたり、字を書いたり、四角く囲ったりするのは、特別なソフトを使っているのですか。
それとも、もともとオフィスかウインドウズに入っている機能なのでしょうか。パワーポイント以外のプレゼン、たとえばこのセミナーのようにエクセルの画面を見せながら
解説するプレゼンにも非常に有効だと思いまして、使ってみたいと思います。
投稿日時: 2015年12月01日 14時51分38秒
コメントID: 3123 ゲストさんからのお返事
受講生 さん:

Zoomitというソフトを使っています。
Microsoftのサイトからダウンロードできますので、検索して見つけて使ってみてください。おすすめです。


>小川様
>お世話になっております。現在基礎編復習モードに入っています。
>マクロの質問ではありませんが、小川様が動画中に使っている赤字でアンダーライン引いたり、字を書いたり、四角く囲ったりするのは、特別なソフトを使っているのですか。
>それとも、もともとオフィスかウインドウズに入っている機能なのでしょうか。パワーポイント以外のプレゼン、たとえばこのセミナーのようにエクセルの画面を見せながら
>解説するプレゼンにも非常に有効だと思いまして、使ってみたいと思います。
コメント日時: 2015年12月02日 17時26分59秒
投稿ID: 1773 受講生さんの投稿
先週、forNextを、学びました。
そして、今週は2つのマクロを仕上げました!ものすごく簡単なマクロなのに一瞬にして作業が終わってしまうことに感動しています。
(でも、マクロを書いていたら「暇でしょ?これやって。」(←いつもこんな感じです笑)と本業の仕事が舞い込んでいました(笑))
一つは、全部で11シートある特定セルに書かれた最大値と最小値を一つのシートにまとめるマクロです。
その最大値と最小値から絶対値での大きい方を求めてその求めた数値を別ファイルに書きこむマクロです。
↑講座内容から、少し離れていたのでネット検索で完成させました。
ほんとに、なんで今までマクロでやることを考えなかったのか…不思議でなりません。
CADでは、マクロで作業を楽にはしていましたがエクセルはエクセルのマクロ得意な社員がいるので私はそっちには手は出さない予定
だったのですが自分が業務で必要なマクロは自分にしかその必要性が分からないんだなと改めて思いました。
これからも、少しづつ学んでいきたいと思います。宜しくお願いします。
投稿日時: 2015年11月14日 18時19分17秒
コメントID: 3075 ゲストさんからのお返事
受講生 さん:

成果報告、ありがとうございます。
うれしいですね。この講座を作って本当によかったなと思います。

>↑講座内容から、少し離れていたのでネット検索で完成させました。

↑ホントすばらしいです☆

> ものすごく簡単なマクロなのに一瞬にして作業が終わってしまうことに感動しています。

そんなモンですよ。
基礎編のスキルだけでも、相当のものが作れます。

> 「暇でしょ?これやって。」(←いつもこんな感じです笑)と本業の仕事が舞い込んでいました(笑))

いいですね。
ガンガン仕事で成果出してください。どうせ仕事するなら、そのほうが楽しいかと。
いる世界も次第に変わってきますよ。

これからも、ガンガンマクロ書いてください。
心から応援しています (^^



>先週、forNextを、学びました。
>そして、今週は2つのマクロを仕上げました!ものすごく簡単なマクロなのに一瞬にして作業が終わってしまうことに感動しています。
>(でも、マクロを書いていたら「暇でしょ?これやって。」(←いつもこんな感じです笑)と本業の仕事が舞い込んでいました(笑))
>一つは、全部で11シートある特定セルに書かれた最大値と最小値を一つのシートにまとめるマクロです。
>その最大値と最小値から絶対値での大きい方を求めてその求めた数値を別ファイルに書きこむマクロです。
>↑講座内容から、少し離れていたのでネット検索で完成させました。
>ほんとに、なんで今までマクロでやることを考えなかったのか…不思議でなりません。
>CADでは、マクロで作業を楽にはしていましたがエクセルはエクセルのマクロ得意な社員がいるので私はそっちには手は出さない予定
>だったのですが自分が業務で必要なマクロは自分にしかその必要性が分からないんだなと改めて思いました。
>これからも、少しづつ学んでいきたいと思います。宜しくお願いします。
コメント日時: 2015年11月14日 18時34分26秒
投稿ID: 1194 受講生さんの投稿
基本の基本というものが大事ということがわかる抗議でした!
投稿日時: 2015年03月19日 07時49分20秒
コメントID: 2384 受講生さんからのお返事
匿名 さん:

>基本の基本というものが大事ということがわかる抗議でした!
訂正:抗議→講義でした。
コメント日時: 2015年03月19日 07時50分24秒
コメントID: 2386 ゲストさんからのお返事
匿名 さん:

ありがとうございます☆

てか、基本がキチンとしていれば、そこそこのマクロはちゃんと書けますので。
知識を追うより、基本をしっかりと!てことでお願いいたします☆

>匿名 さん:
>
>>基本の基本というものが大事ということがわかる抗議でした!
>訂正:抗議→講義でした。
>
コメント日時: 2015年03月19日 08時30分36秒
投稿ID: 994 watanbe daichiさんの投稿
変数ルールについて、やはり「書き方の基本の形」に沿った物を作ることが大切だと解りました。
内容に関しても Ctrl+Jがチェック機能にも使えそうでしたので、見直すときはショートカットの内容に関して注目したいと思います。
ありがとうございます。
投稿日時: 2015年01月04日 23時41分34秒
コメントID: 2131 ゲストさんからのお返事
watanbe daichi さん:

まさに、そうですね。
プログラミングは、作法に従えばだいぶ簡単になります。

[Ctrl] + [J] 、重要です。
こういうところで楽するから、頭の中が楽になって、その分高度なことを考える余裕がでてきます。

>変数ルールについて、やはり「書き方の基本の形」に沿った物を作ることが大切だと解りました。
>内容に関しても Ctrl+Jがチェック機能にも使えそうでしたので、見直すときはショートカットの内容に関して注目したいと思います。
>ありがとうございます。
コメント日時: 2015年01月05日 06時22分43秒
投稿ID: 967 山本 茂生さんの投稿
小川塾長

 Ctrl+Jは、すばらしいですね!!
投稿日時: 2014年12月25日 20時00分30秒
コメントID: 2099 ゲストさんからのお返事
ライスミルク さん:

[Ctrl] + [J] をすばらしいと思えるあなたも相当にすばらしいです!!

>小川塾長
>
> Ctrl+Jは、すばらしいですね!!
コメント日時: 2014年12月26日 17時31分08秒
投稿ID: 349 受講生さんの投稿
変数のルールについて、納得です。私の持っているVBAの教本には、どこ見たらあ書いてあるのだろう、と思います。すごく丁寧で、よくわかります。
投稿日時: 2014年07月08日 00時48分31秒
コメントID: 1136 小川慶一さんからのお返事
匿名 さん:

まー、だいたい平たく言うと、「奇をてらって変わったことするな!」ということですけどね。
あと気をつけたいのは、 sort とか left とかの英単語1文字の名前。
キーワードと重複する名前はとにかく避けます。動画でも言いましたが、そうしないと思わぬ誤動作の原因になます。

>変数のルールについて、納得です。私の持っているVBAの教本には、どこ見たらあ書いてあるのだろう、と思います。すごく丁寧で、よくわかります。
コメント日時: 2014年07月08日 01時50分49秒