[[20200305061519]] 『変数の定義の仕方についてk, i, m, cmax1, cmax2』(あっこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『変数の定義の仕方についてk, i, m, cmax1, cmax2』(あっこ)

在庫管理表を作りたくて某サイトのマクロを読んだら、一番初めに変数の定義として、「k, i, m, cmax1, cmax2」がでてきました。
変数の文字は自分で定めるものなのか、それともある程度ルールが決まっているのかわかりません。
また、cmax1とかcmax2はググってもよくわかりませんでした。
本当の初心者です。お優しい方がいらっしゃったら、教えてほしいです。
よろしくお願いいたします。

< 使用 Excel:Office365、使用 OS:Windows10 >


 おはようございます ^^
【VBA 変数の宣言】【VBA 変数の命名規則】
とかで検索すれば懇切丁寧に解説して下さっているサイトがいくつもあ
りますよ。ほぼ自由につけれますが、使わないほうが良い名前、使えな
い名前も有りますので、ご注意を。。。m(_ _)m
(隠居じーさん) 2020/03/05(木) 07:19

参考にしたのは、以下でしょうか?
https://www.fastclassinfo.com/entry/inventory_control_system

ここだと、以下のような宣言でコード紹介しています。

    Dim k, i, m, cmax1, cmax2 As Long

これ、最後の cmax2 はLong型ですが、他にはこの指定がかからずに、Variant型になってしまうので、良くない書き方の見本ですね。 似た名前なのに違う型、とは思えませんので、知らずに書いているのだと思われます。 在庫管理業務に詳しい方なのかも知れませんが、コードは参考にしない方が良いと思いますよ。

変数名の決め方ですが、Forループ等のカウント用に使うものは1文字、特にi,j,k,m,n が良く使われます。 小文字のLは、1とかiと見間違えやすいので、避けます。 大文字は、定数名によく使われるので、ループ変数は小文字が良いです。

i〜nというのは、初期のコンピュータ言語であるFortran(Basic言語は、Fortranの学習用と言われ、コードは似ています)では、i〜n 始まりの変数がデフォルトで整数型だったため、この時の書き方がBasic言語に引き継がれ、今でも残っているものと思われます。 特にこれで困る事は無いし、確かにループ変数と判りやすいので、私も採用しています。 i からなのは、Integer型だったからでしょうね。

cmax1 ですが、おそらくカウントの最大値の1つ目、という意味でしょう。(Count Max 1)
ただ、Basicでは接頭語としてデータの型を表す文字を付ける事がよくあるので、文字列の最大、という意味に誤解されそうなので、私だったら iMax1 としますね。

文字列としては、何でも使えますが、標準の命令やプロパティ名、メソッド名、定数名を使うと、その標準命令が使えなくなってしまうし、後からコードを読む人を混乱させる元になるので、避けましょう。 調べ方は、変数名にカーソルを合わせた状態でF1キーを押して、ヘルプ表示してみると良いです。

あとは、iMax1 のように、先頭以外の意味のある単語先頭を大文字にするのはCamel型と言って、お薦めできる書き方です。 CountMax1 と、先頭から大文字にする場合は、Pascal型と言って、これもお薦めですが、どちらかに統一しないと見にくくなります。 型を示す接頭語を使わないならば、変数名はPascal型で書いて、定数名は全部大文字にすると良いでしょう。 定数名で単語区切りが欲しい場合は、「_」が良く使われます。(Snake型)

(???) 2020/03/05(木) 09:59


 >本当の初心者です。お優しい方がいらっしゃったら、教えてほしいです。
こちらは万年初心者です。
あの、、、、初心者かどうかは気にしなくていいかと思います。
知らない人が聞く。
知ってる人が答える。
で、いいじゃないですか?
頑張っていることが分かる人には、みなさん優しいですよ。
まぁ、きついこと言うときもあるかもですが、
文字で話すと、受け取る側は余計にきつく感じますよね。
まぁ、慣れていただくしかないかと思います。

質問するときは、「ある程度調べた。」「調べ方すらわからない。」
等も伝えるようにしましょう。
何かを指摘されたときは真摯に受け止め考えてみてください。
調べられるようになるのもスキルの一つです。
それにいつ答えが返ってくるか解らない掲示板より、
自分で検索した方が、解決が早い場合が多いです。
痒いところに手が届くのは掲示板ですけど。
まぁ、気分を害することを言われる時もあるかもですが、
気長にやり取りをしながらお互いの思いをすり合わせて、
いければいいんではないでしょうか?
逆に回答者の気分を害すれば、欲しい情報が得られなく可能性もあるので、
注意しましょう。

で、本題。

http://officetanaka.net/excel/vba/variable/06.htm
https://excel-ubara.com/excelvba4/EXCEL274.html

ちらっと検索してみたらこういうのが見つかります。
「VBA 変数 命名規則」
で検索しました。

まだ何もわからない状態で、コードを読むと、
何やら意味ありげな言葉がたくさん出てきますが、
それが変数なのか命令なのかホント判別できかねます。
まぁ、そのまま検索してみて見つからなければ変数と判断出来ると思います。
お行儀のいいコードなら、コードのどこかに変数の宣言がされているはずですが。

できれば、たくさんのサンプルをみて、真似したらいいと思います。
ですが、いつもだれもがお行儀のいいコードを書いているとも限らないので、
経験していく中で取捨選択しながら改善していけばいいと思います。

変数名には漢字も使えます。
が、かな入力と英数入力を頻繁に切り替えないといけなくなるし、
変な時に不具合が出る可能性があるのでお勧めしませんが、
変数名を付けるのに何時間もかけても仕方がないので、
漢字を使うのもありかなとは思います。
慣れるまで、自分なんかは変数名を考えるだけで、
何時間もかかってコード書いてました^^;
今はグーグル先生にそれっぽい言葉を翻訳させたり、
日本語でカタカナ英語を書いて、英語に変換させたりして書いてます。

コツとしては、
1)
一応、その変数の役割(どんな値が入るはずか)を想像させる名前が、
あとで(半年後とか数年後)読むときに、意味がわかりやすいかなと思います。
それと同時にコメントで、意図等を補足しておくと後で読みやすいかも知れません。

2)
ループカウンター的なものはあまり複雑な命名をすると煩くなるので、
簡単なものにします。

3)
アルファベットの大文字を混ぜると、
小文字でどんどん入力しても、勝手に大文字に変換してくれるので、
大文字が混じってない単語はタイプミスがあることになるので、
タイプミスが発見しやすくなります。

4)
漢字で変数名を付けるときは、アルファベットで接頭辞を付けておきます。
rng入力
wsh印刷

そうすることで
rngまで入力したら入力候補がでますので、そちらを選ぶことで、
日本語の入力を切り替えすることなく、作業を進められて便利です。

とりあえず、思いつくとこはこんなとこです。

補足--
割と長めの変数名を使っている場合もありますが、
Ctrlキー+Spaceキー押下で入力候補がでますので、
タイプミスを恐れて敢えて短くしなくても大丈夫だと思います。
何よりも半年後、自分でちゃんと読めるようなコードを書けるようになることです・
(まっつわん) 2020/03/05(木) 13:44


隠居じーさん様

早くにご返信頂きまして、ありがとうございました。検索の方法すらわからず途方に暮れておりましたので、大変助かりました。さっそく検索してみたところ、いろんな決まりや型があって驚きです。じっくり勉強します!

???様

おっしゃる通りのサイトです。まずはこのVBAを解読しようとしてみたところでした。なぜi,j,k,m,nがよく使われるのかが、よくわかりました。背景まで教えて頂き、ありがとうございます。Camel型Pascal型などについても、ご教示頂き、今後の勉強に役立ちそうです。ありがとうございました。

まっつわん様

ご返信ありがとうございます。また、励ましのお言葉も心にしみました。ありがとうございます。おっしゃる通りで調べ方すらわからない状態が、一機に道が開けた感覚です。「そのまま検索してみて見つからなければ変数と判断出来ると思います。」本当ですね!どおりでわからないわけでした…!!!!まずは調べられるように、どこまで調べて何がわからないかきちんと質問できるようになろうと思います。

(あっこ) 2020/03/05(木) 17:14


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.