[[20070314003513]] 『列を変数で指定する方法』(VBA勉強中) ページの最後に飛ぶ

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

 

『列を変数で指定する方法』(VBA勉強中)

 A列からE列まで選択するのには

 Columns("A:E").Select

 とできますが、列の変数として整数 C1 C2 があり、「C1列からC2列までを選択する」と
 いうのはどうすればいいのでしょうか?

 非常に基本的なことだと思うのですが、よろしくお願いします。


 Range(Cells(1,C1),Cells(Rows.Count,C2)).Select
 とか???
 C1、C2って、変数かどうか分かりにくいですね^^;
 (ROUGE)

 ROUGEさん、ありがとうございます。

 Rows というのを使うのですね。で、Rows.Count が 65536 になる。
 なんとなく「列の選択」にとらわれていましたが、「1行目から65536行目までのセル範囲の選択」でも
 同じことなのですね。なるほど!といった感じです。

 >C1、C2って、変数かどうか分かりにくいですね^^;

 変数名のつけ方について、実はよくわかりません。コマンド名とかと同じでなければ
 どんな変数名でも動くとは思うのですが、A や AA や X1 とかばかりだと後で見たときに
 自分でも何の変数だかわかりにくいです。
 わかりやすい変数名にするにはどんなことを心がけたらいいのでしょう?

 ちなみに、ここでの C1 とかは、「列(Column)を表す1番目の変数」というつもりでつけてみたものです。

 (VBA勉強中)


 過去に↓こんなスレがありました。
[[20070116100023]]『複数の列を選択したい』(たけちゃん)
(純丸)(o^-')b


 分かりやすい変数名にはいろいろ個人的な見解もあるでしょうが、
 その変数が何を意味しているか分かりやすいもの、
 例えばこの例では、「列(Column)を表す1番目の変数」というなら、
 myColumn1 とか、先頭にmyをつける人も多いようですね。
 あと、先頭の文字は小文字にしておくのもいいと思います。

 >C1、C2って、変数かどうか分かりにくいですね^^;
 C1セル、C2セルと混同しやすいので、私ならそういう変数名は避けます。
 (sato)

 超個人的見解なれど多く思われるであろうお話
 
私もC1やC2と言う変数名はとても分かりにくいと思いました。
理由はExcelにおいてセルを示す番地として「A1」や「B1」そして当然「C1」と言う表記があるためですね。
仮に以下のようなコードがあったとしたら、どう見えるでしょう。
 
Dim C1 As String
 〜
C1 = "A1"
 〜
Range(C1).Select
 
上記ではコードが短いため間違える事は無いでしょうが、100行くらいの関数内でふとこういった表記が出てきたらどうなるでしょう。
名前はC1であるが故に、C1を示しているのでは、と、予備知識無く見た人の目には映ってしまうかもしれません。
こうした思い込みが発生する変数名である、と言うのが私的に好ましく思えない理由です。
 
更に、「C」がColumnの略であると言う事は、それを作った人間で無ければすぐには分かりません。
Cだけでは、それがColumnなのか、それともCellなのか、サッパリ分からないのです。
もちろん使われている場面を見れば分かるでしょう。
それは逆に言えばその場面を見ない限りは分からないのです。
せめて、せめて「Col1」と言う名であれば「あ、これはColumnを意味する変数なのかな?」と、当たりがつけられます。
 
次に1とか2とかの連番で意味を持たせようとするのは、あまり好みません。
例えば
 
Dim C1
Dim C2
 
と言う変数が登場した場合、何の予備知識も無く見た人は「あれ、ひょっとしてC3もあるんだろうか?」と思ってしまいます。
あるいは「じゃあC3と言う変数を作ろう。」と思うかも知れません。
そうしてコードが書き換わって行った時、C1、C2、C3の意味をどれだけの人が理解できるでしょう。
 
もし最初の列だと言う意味を持たせたいのであれば、それに見合った単語を用いるべきです。例えば
 FirstCol
 SecondCol
もしそれらが開始と終了のみを示すのであれば
 BeginCol
 FinishCol
だとか
 StartCol
 EndCol
等と付けるのも良いかもしれません。
場合によっては見た目的にColを先にしておいたほうが、ぱっと見たときに見やすいかもしれません。
これは好みであるとか、他のコードのルール付けに習うと言う外因で変わってくる所だったりします。
 
もう一点、ここまでColumnの意味としてColと略して表記しましたが、ColではCollectionの略かと思う方も居るかも知れません。
少数だとは思いますが……Columnと略さずに記述するのも、また良いかもしれません。
これもまた好みにもよります。
ただ少なくとも、その同一プロジェクト上では、Colと決めたなら必ずColと表記し、ColとColumnが混在する状況は避けるべきです。
混在する事によって、Colが別の意味に使われて居るのかもしれない、との懸念を読み手に生じさせてしまうからです。
 
なんか長くなってしまったけど、
基本は、誰が見ても意味が分かる名前である、のが好ましい命名規則だと思います。
 
古くからMicrosoftは、ハンガリアン記法と言う命名規則を推奨してきました。
最近では.NETに開発環境が移り、そちらでは逆にハンガリアン記法は避けるような形を推奨しています。
また更に変数名の記述方法として、Camel形式だとかPascal方式といったものも存在します。
理由は……書き出すと終わらないので中途半端ながらに締め。
 
うおーほんとに中途半端だ
(ご近所PG)やめときゃよかった

 皆さん、ありがとうございます。変数名のつけかたにはいろんな観点があるのですね。
 自分で考えているときは Column の1番目で C1 と安直にやっていましたが、シートのセルの
 アドレスと紛らわしいという以外にも問題があることがわかりました。

 勉強することはまだまだ多いです。

 (VBA勉強中)


 >うおーほんとに中途半端だ
 >(ご近所PG)やめときゃよかった
 さらに中途半端に、R、Cの類はコンパイラがR1C1と誤認する時があるみたいだから
 私は使うのをやめました。単一のR、C(小文字含む)も間違えそうな気がして
 使うのをやめました。(なんか動かなかったことがあったような??)
 CC,RRは使ったりするけど・・。
 BJ

コメント返信:

[ 一覧(最新更新順) ]


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