
変数名をつけるときの注意
構文エラーになっているプログラムがあるときの注意点
【この動画で使用する教材ファイル】
・Kiso01.xls
・kiso_mm_movie.pdf(P10:講義概要)
・kiso_mm_movie.pdf(P6:Visual Basicの文法)
※講座内で使用する資料は、この個別ページ内でダウンロードできます。
この講座を含む定額コースに参加するか、この講座を購入することで、講座を利用できるようになります。
定額コースに参加すると、そのコースの利用期間中はいつでも講座を利用できます。
講座を購入すると、いつでも講座を利用できます。
学習記録としてメモを残す
質問や感想を投稿する
投稿時に 記号が \ に変換されてしまいますが、気にせず投稿してください。※投稿に必要な権限がありません。
このページへの投稿/コメント
現時点の学習段階で質問があります。
コードを書いていくときは基本的には、半角と小文字で書いていくと言うことでしたが、サブプロシージャ名と変数、そしてA1、B1などのセルは大文字で書きはじめるという理解で良かったでしょうか?
セルはa1という小文字でも反応しましたが、先生は大文字で書かれていました。小文字で書き始めない理由は何かありますか?
のちほど第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
以上で、いただいたご質問に関係しそうなところはだいたい示したつもりですが...。
いかがでしょう。
まだ疑問解消していない点がもしあるようでしたら、また投稿をお願いします。
質問に的確に回答してくださり、良く理解できました。
また、なぜ"a1"が"A1"に変換されないかという、質問以上の回答までありがとうございます!(^^)
よかったです。
ひきつづきよろしくお願いいたします ^ ^
my消費税計算
my税率
などとしておけばば、ctr+space,ctr+j
で自動変換が利くと思います。日本語を含むだと後任者(数日後の自分含む)が速く理解できる反面、Dim時に半角全角切替が必要なので面倒ということですね。
何についてどこまで気を使うか?というところは、後任者の能力(への期待)次第です。
基礎編レベルのときには書いているプログラムの質的にも書いたプログラムの量的にもピンとこないことかもしれません。
後学のため、以下のブログ記事も読んでおいてください。
○[質問] 同じ機能を実現するマクロの書き方が複数ある場合、どの書き方が良いか分からなくて迷います。
https://www.exvba.com/4378/
> 先生こんにちは。
> my消費税計算
> my税率
> などとしておけばば、ctr+space,ctr+j
> で自動変換が利くと思います。日本語を含むだと後任者(数日後の自分含む)が速く理解できる反面、Dim時に半角全角切替が必要なので面倒ということですね。
事務局に確認させます。
少しお待ちください。
> ご指定のファイルを開き、6枚目「Visual Basicの文法」をみたのですが、内容が微妙に異なっています。ファイルのバージョンが違うのかなと気になりコメントしました。
事務局に確認させましたが、以下の見解です。
海上さんの感触としては、どうでしょうか。
[1]差異はありませんでした。
動画に表示されているmindmapについて、資料のmindmapと一言一句比較しましたが、差異はありませんでした。
可能性として、動画の最初の方で表示していたmindmap(講義概要p10)の「変数」と途中から表示していたmindmap(VisualBasicの文法P6)の「変数」で混同してしまったのではないでしょうか。
[2]万が一、私が見落とした差異があったとしても、講義の内容に支障がでるほどではないと判断しました。
よろしくお願いいたします。
お忙しい中、
ファイル内容の確認をして頂き、ありがとうございました。
職務中で、今調べることができませんので、まずは迅速にご対応いただいた感謝を申し述べたいと思います。。多分私の勘違いだと思います。
仰るとおり、講義内容に差し支えることではないので‥‥。貴重なお時間をさいてお調べいただき、すみませんでした。
気になることがあれば、また気軽にお問い合わせください。
ひきつづきよろしくお願いいたします。
kiso_mm_movie.pdfの、Visual Basicの文法というページです。動画に映っている算術演算子のリストはありますし、変数という項目もあるのですが、「宣言する」などの文字はありません。
私がファイルを勘違いしてたら、教えてください。
kiso_mm_movie.pdf
の
6枚目「Visual Basicの文法」にないでしょうか。
あるいは、最後から2番目のページ「講義概要」。
※資料は本ページ動画下からもDL可能です。
> マインドマップで、動画で指摘されている箇所を確認しようとしたのですが、私のファイルでは、変数の説明をしている箇所が見つけられませんでした。
> kiso_mm_movie.pdfの、Visual Basicの文法というページです。動画に映っている算術演算子のリストはありますし、変数という項目もあるのですが、「宣言する」などの文字はありません。
> 私がファイルを勘違いしてたら、教えてください。
2バイトの漢字やひらがなを使うのは NGである。
作業時間がかかってしまう。。。今日も賢くなれました。
> 作業時間がかかってしまう。。。今日も賢くなれました。
こういう微妙?と思えることも、たくさんマクロを書くようになると大きな問題になってきます。
いまのうちから、筋のよい書き方を学んでいただければと☆
> 変数の名前をつけるにはルールがあることを学んだ。
> 2バイトの漢字やひらがなを使うのは NGである。
> 作業時間がかかってしまう。。。今日も賢くなれました。
2バイト文字で書く人もいますけどね。
量をこなしているとそんな気はなくなります。
>なぜアルファベットで書かれているのか疑問でしたがクリアになりました!
休暇中につき、お返事遅れてしまいました。
一連のコメント拝見しました。急所をついていてとてもよい内容と感じました。
半角全角の切り替えについては、普段からデフォルト半角モードで作業する。全角で入力したrら速やかに半角モードに戻す、という習慣をつけられると良いかと思います。少なくとも、プログラミングでは基本は半角です。
>ネーミングルールは大切なんですね。後でわかるようにと日本語で書いていましたが、全角、半角がめんどくさいです。コメントをつけとけばあとでわかりやすいですよね。
ありがとうございます。ひきつづきよろしくお願いいたします。
>いつも講義を拝聴してますが分かりやすくためになります。メールも楽しみに読んでます。これからもよろしくお願いします。
お世話になっております。現在基礎編復習モードに入っています。
マクロの質問ではありませんが、小川様が動画中に使っている赤字でアンダーライン引いたり、字を書いたり、四角く囲ったりするのは、特別なソフトを使っているのですか。
それとも、もともとオフィスかウインドウズに入っている機能なのでしょうか。パワーポイント以外のプレゼン、たとえばこのセミナーのようにエクセルの画面を見せながら
解説するプレゼンにも非常に有効だと思いまして、使ってみたいと思います。
Zoomitというソフトを使っています。
Microsoftのサイトからダウンロードできますので、検索して見つけて使ってみてください。おすすめです。
>小川様
>お世話になっております。現在基礎編復習モードに入っています。
>マクロの質問ではありませんが、小川様が動画中に使っている赤字でアンダーライン引いたり、字を書いたり、四角く囲ったりするのは、特別なソフトを使っているのですか。
>それとも、もともとオフィスかウインドウズに入っている機能なのでしょうか。パワーポイント以外のプレゼン、たとえばこのセミナーのようにエクセルの画面を見せながら
>解説するプレゼンにも非常に有効だと思いまして、使ってみたいと思います。
そして、今週は2つのマクロを仕上げました!ものすごく簡単なマクロなのに一瞬にして作業が終わってしまうことに感動しています。
(でも、マクロを書いていたら「暇でしょ?これやって。」(←いつもこんな感じです笑)と本業の仕事が舞い込んでいました(笑))
一つは、全部で11シートある特定セルに書かれた最大値と最小値を一つのシートにまとめるマクロです。
その最大値と最小値から絶対値での大きい方を求めてその求めた数値を別ファイルに書きこむマクロです。
↑講座内容から、少し離れていたのでネット検索で完成させました。
ほんとに、なんで今までマクロでやることを考えなかったのか…不思議でなりません。
CADでは、マクロで作業を楽にはしていましたがエクセルはエクセルのマクロ得意な社員がいるので私はそっちには手は出さない予定
だったのですが自分が業務で必要なマクロは自分にしかその必要性が分からないんだなと改めて思いました。
これからも、少しづつ学んでいきたいと思います。宜しくお願いします。
成果報告、ありがとうございます。
うれしいですね。この講座を作って本当によかったなと思います。
>↑講座内容から、少し離れていたのでネット検索で完成させました。
↑ホントすばらしいです☆
> ものすごく簡単なマクロなのに一瞬にして作業が終わってしまうことに感動しています。
そんなモンですよ。
基礎編のスキルだけでも、相当のものが作れます。
> 「暇でしょ?これやって。」(←いつもこんな感じです笑)と本業の仕事が舞い込んでいました(笑))
いいですね。
ガンガン仕事で成果出してください。どうせ仕事するなら、そのほうが楽しいかと。
いる世界も次第に変わってきますよ。
これからも、ガンガンマクロ書いてください。
心から応援しています (^^
>先週、forNextを、学びました。
>そして、今週は2つのマクロを仕上げました!ものすごく簡単なマクロなのに一瞬にして作業が終わってしまうことに感動しています。
>(でも、マクロを書いていたら「暇でしょ?これやって。」(←いつもこんな感じです笑)と本業の仕事が舞い込んでいました(笑))
>一つは、全部で11シートある特定セルに書かれた最大値と最小値を一つのシートにまとめるマクロです。
>その最大値と最小値から絶対値での大きい方を求めてその求めた数値を別ファイルに書きこむマクロです。
>↑講座内容から、少し離れていたのでネット検索で完成させました。
>ほんとに、なんで今までマクロでやることを考えなかったのか…不思議でなりません。
>CADでは、マクロで作業を楽にはしていましたがエクセルはエクセルのマクロ得意な社員がいるので私はそっちには手は出さない予定
>だったのですが自分が業務で必要なマクロは自分にしかその必要性が分からないんだなと改めて思いました。
>これからも、少しづつ学んでいきたいと思います。宜しくお願いします。
>基本の基本というものが大事ということがわかる抗議でした!
訂正:抗議→講義でした。
ありがとうございます☆
てか、基本がキチンとしていれば、そこそこのマクロはちゃんと書けますので。
知識を追うより、基本をしっかりと!てことでお願いいたします☆
>匿名 さん:
>
>>基本の基本というものが大事ということがわかる抗議でした!
>訂正:抗議→講義でした。
>
内容に関しても Ctrl+Jがチェック機能にも使えそうでしたので、見直すときはショートカットの内容に関して注目したいと思います。
ありがとうございます。
まさに、そうですね。
プログラミングは、作法に従えばだいぶ簡単になります。
[Ctrl] + [J] 、重要です。
こういうところで楽するから、頭の中が楽になって、その分高度なことを考える余裕がでてきます。
>変数ルールについて、やはり「書き方の基本の形」に沿った物を作ることが大切だと解りました。
>内容に関しても Ctrl+Jがチェック機能にも使えそうでしたので、見直すときはショートカットの内容に関して注目したいと思います。
>ありがとうございます。
Ctrl+Jは、すばらしいですね!!
[Ctrl] + [J] をすばらしいと思えるあなたも相当にすばらしいです!!
>小川塾長
>
> Ctrl+Jは、すばらしいですね!!
まー、だいたい平たく言うと、「奇をてらって変わったことするな!」ということですけどね。
あと気をつけたいのは、 sort とか left とかの英単語1文字の名前。
キーワードと重複する名前はとにかく避けます。動画でも言いましたが、そうしないと思わぬ誤動作の原因になます。
>変数のルールについて、納得です。私の持っているVBAの教本には、どこ見たらあ書いてあるのだろう、と思います。すごく丁寧で、よくわかります。