• ベストアンサー

文字列型の一般的な変数名は?

おはようございます。 サンプルコードで 数値型の変数名は Dim i As Long のようにiをよく見かけます。 ただ、私が勉強不足のため 文字列型の変数名の一般的な文字に何が使われているのかわかりません。 (str?moji?など?) サンプルコードを書くときに使用する 文字列型の変数名を教えてください!

  • bkshfu
  • お礼率98% (516/525)

質問者が選んだベストアンサー

  • ベストアンサー
  • Azzz___
  • ベストアンサー率40% (9/22)
回答No.6

こんにちは。私の場合は自己流ですが、ネットなど見て他の方を 参考にして今日に至っています。 ルールは簡単で変数に何を(何の型)格納するかによって変えています。 ・長整数の数字を格納する場合:Dim lngXXX as Long ・文字列を格納する場合:Dim strXXX as String ・ワークシートを格納する場合:Dim Wsh as WorkSheet などです。「変数の型」を「変数の名前」に使います。 これで時間が経過した後にプログラムを読み返した時に 思い出しの助けとなります。 「XXX」の部分も同様で変数を使う目的の名前を含ませると、 後で読んだときにさらに助けになると思います。 例えばString型で何からの「名前」を格納するときには Dim strName as String などXXX→Nameとすると可読性が上がると思います。 他の方の回答でもあるように日本語の変数は使わないように しています。 なお、変数名でアルファベット大文字、小文字混在を使うことで 変数を入力時にすべて小文字で入力したときに変数を打ち間違えていると 気づきやすくなりこれも小さい便利です。

bkshfu
質問者

お礼

変数の型を参考にするのですね。 ご回答ありがとうございます。参考になりました。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

有名な話題に、「ハンガリアン記法」というのが在ります。興味があればゆっくり、Googleで「ハンガリアン記法」で照会して、読んでください。 例 ウイキペディア http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%AC%E3%83%AA%E3%82%A2%E3%83%B3%E8%A8%98%E6%B3%95 いまは変数だけでなくオブジェクトの命名方法も問題になると思う。 http://ja.wikipedia.org/wiki/%E5%91%BD%E5%90%8D%E8%A6%8F%E5%89%87_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0) http://social.msdn.microsoft.com/Search/ja-jp/?Query=%e5%90%8d%e5%89%8d%e3%81%ab%e9%96%a2%e3%81%99%e3%82%8b%e3%82%ac%e3%82%a4%e3%83%89%e3%83%a9%e3%82%a4%e3%83%b3 ーー >Dim i As Long のようにiをよく見かけます。 はメモリを節約するために変数名を2文字以内とかに制限した言語の時代があり(Fortran?初期Basic)、数値といえば代表的なのが整数で、整数はIntegerなのでその頭文字のiが良く使われ、その次はj、k・・と使われた。 これがカウンター変数などに習慣的に今も残っている。 コボルでは当初から30文字とか長くてもよくて内容的に説明志向だったと思う。

bkshfu
質問者

お礼

理由がわかり勉強になりました。ありがとうございます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 後から、書くと、とても書きにくいものです。前回の人のように、自分と違うことを書いたからといって、感情的になられても、こちらは困ってしまいます。 基本的には、VBAは、プライベートでチームで作成するわけでもありませんし、何をどうしてもかまわないのです。そういう状況下で可読性という点を追求しても、意味があるとは思いませんが、VBAやVBには、一定の基準があると思っても良いと思います。#3さんのおっしゃるように、String 型には、あまり規定がないのは、その意味を表す単語を入れることが多いからだと思います。 全体的なことから書かせていただくと、変数名は、インクリメントするものは、i,j とか使うという暗黙?のルールがあります。(それは、Microsoft がレールを敷いているのです。)困ったことに、チャールズ・シモニーが、Microsoftを退社してから、会社の一般的な記法が変わったような気がします。根本的には、.Net FrameWork などの登場が原因にあるのだと思います。 これは、.Net FrameWorkの問題ですから、従う必要はないとは思いますが、「ハンガリー表記法は使用しない。」とされています。ただ、VBAも将来的なことを考えると、数値型の int やlng のプレフィックスは、混乱の原因になりますから、やめたほうが良いかもしれません。 それで、本題の >文字列型の変数名の一般的な文字に何が使われているのかわかりません。 >(str?moji?など?) すくなくとも、str のプレフィックスを単独で使うのは間違いです。これについては、自分で分からないと、いくら、自称プロだといえども、VBAやVBは良く分かっていないと思います。時々、プロパティが、value とか、text と全部小文字になっている人がいますが、変数の書き方のミスが原因です。VBAには、予約語として入力できない文字は、そんなに多くあるわけではありませんが、使わないほうがよいものはいくつか存在しています。 変数は、なるべく英語を使い、ローマ字や省略形は頻繁に使ってはいけないと言われます。たとえば、num (numberの省略)は、推奨されないといわれますが、Microsoft サポートでも使っているようです。良く知られているものなら、かまいません。たとえば、sh は、シートのことです。x, y などは、x は、縦の長さを表し、y は横の長さを表すとか、ret は、return (戻り値)、c は、セル(Cells)、v は、Value 、Ar は、Array(配列)の略です。t やbuf は、テンポラリ(temporary)の変数に使われます。 文字型は、strValue や、strText、私は、sText という書き方をしたりすることもあります。変数はキャメル(らくだ)型にします。もし、意味がはっきりしているなら、sWords やstrLineも使うことがあります。文字型には、そのものを表す単語を書いても良いかもしれません。私は、変数の中には「_ アンダーバー」は入れません。とても扱いにくくなるからです。文字型は、他人からみて、大雑把に変数に何が入れているのか想像つくレベルで良いと思います。 ただし、変数の2バイト文字はいけません。なぜいけないかというと、特別な開発の環境下にある場合、いまだに検索をするときに、文字はインプットボックスに入力さえ出来ないからです。 直接、VBAの表記ルールや記法があるわけではありませんが、いくつかの本は参考にしています。私は、なるべく、Microsoft 側の書き方には沿うようにはしたいと思っています。

bkshfu
質問者

お礼

2バイトは使わないようにします。 ありがとうございます。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.3

i,j,k,l,m,nは、大昔のBASICで「単精度整数型」が指定されていた 関係上、ループのインデックスなど「integer型」で使うのが通常に なっていますが、最近のプログラマーは特段そういった発想は無い みたいで、よくそれ以外の指定をしていたりしますね。私のような 古い人間はこれをやられると結構戸惑います。 ですが、文字列や実数型などは、特段の「暗黙の約束事」は無いです。 むしろ、そのプログラム環境での外部的な取り決め(納品先の仕様とか 自社の設計基準とか)で決まる場合が多いです。逆に言えば、そういう のが無い「自分専用のプログラム」の場合、自分で勝手に決めてしまえ ばいいんですね。 まあ、一般的には、変数タイプを変数名に明示的に表示する場合は、 DIMのAS以下の3文字を使う事が多いみたいです。例えば str_* とか dbl_* とか・・・ですね。 でも、私自身も某納品先も「テーブル(データベース)」単位で変数名 が決まることが多く、あまり変数タイプを明示する文字列を先頭に持って 来ることはない、と思いますけど・・・。

bkshfu
質問者

お礼

ありがとうございます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

サンプルコードの場合は特に規約があるわけでもないですから何でもいいとは思います。個人的には変数名の頭に「str」や「s」を付けると、判りやすいかなぁと思って居ます。

bkshfu
質問者

お礼

sはわかりやすいですね。 ありがとうございます。

  • tadagenji
  • ベストアンサー率23% (508/2193)
回答No.1

変数名はなんでもよいですが、定義文では Dim p as string とします。 VBAでの文字列は、単にダブルクォーテーション(”)でくくるだけで使えます。 p="いろは"

bkshfu
質問者

お礼

pですか。 ありがとうございます。

関連するQ&A

  • 【vba】「CStr」と「Str」は同じ意味ですか?

    Sub 数値を文字型に変更() Dim i As Long Dim moji As String i = 1 moji = CStr(i) moji = Str(i) End Sub 上記のコードで得られる結果は同じです。 "1"になります。 「CStr」でも「Str」でも数値を文字列に変換しています。 ということは「CStr」でも「Str」は同じなのですか? しかしコードの表示色が 「CStr」→キーワード 「Str」→識別子 です。 これが違うと言うことは何かが違うのでしょうか?  よろしくお願いします。

  •  日付型なら変数の先頭になんてつけてますか?

    変数名で、 文字列型なら Dim str組織名 As String 数値型なら Dim intNo As Long としてるのですが、 日付型なら変数の先頭になんてつけてますか? Dim date月日 As Date にしようかなと思ったのですが なんかくどいかなって感じます。

  • 変数名やサブプロシージャーの名前を英語ではなく日本

    VBAにおいて 変数名やサブプロシージャーの名前を英語ではなく日本語でつけると どのような不具合が発生しますか? ネット上のサンプルコードなどを見ていると、 Dim i As Long など、変数名を英字にしてありますが 自分は Dim 行 As Long Dim 数 As Long などにしてしまいます。 このように日本語で変数名をつけると どのようなデメリット・不具合が発生するのでしょうか? コードとして見にくいだけですか? ご回答よろしくお願いします。

  • 最終列の列番号を列文字に変換することはできますか?

    例えばaaaがある列を探し、その列番号は4で列文字がDですが、 列番号から列文字をvbaで取得する方法はありますか? Sub Sample() Dim i As Long Dim Colmoji As String i = Rows(1).Find(What:="aaa", LookAt:=xlWhole).Column Colmoji = i 'ここで列文字に変換したい MsgBox i & "の列文字は" & Colmoji & "です" End Sub このようなコードを作ってみたのですが列文字に変換する方法がわかりません。

  • オブジェクト名を変数で参照できますか

    VB初心者です。 配列の場合 Dim str(10) as string と宣言し、i番目のデータを取り出したいときには、str(i) と記述すると思います。 そこで質問ですが、例えばCommandが1~10まであるとします。 オブジェクト名はそのまま(Command1, Command2)で、それぞれのCaptionに違ったデータが入っています。 (例えば、Command1のCaptionには'A' Command2のCaptionには'B'といった感じに) ある文字列があり、For文を使い、CommandのCaptionとその文字列が一致したときに文字列を出力するという処理を行いたいとき、どのように Command1~10のCaptionを回せばいいのでしょうか? コードを記述しておきます。 Dim str(10) as String Dim i as Integer Dim j as Integer for i = 0 to 10 for j = 0 to 10 ☆☆ if Command(i).Caption = str(j) then print.str(j) end if next next ☆☆のところです。 可能であれば回答をお待ちしております。 環境は windows XP, VB6.0 です。

  • Accessでフィールド名を変数(文字列)で・・・

    以下のようなテーブルがあります ID  回答1  回答2 1   A    D 2   C    A 3   B    B VBAで回答1と回答2のデータを得ようとした場合 Me!回答1 とするのですがこれを変数(文字列で)行う場合どうしたらよいでしょうか? イメージとしては以下のようにしたいのですが・・ Dim str as String str = "回答1" Me!str

  • 変数を文字列として扱う方法

    VB初心者なのですが、 変数を、その変数のまま文字列で扱う方法がないかと悩んでいます。具体的に言うと、 たとえば、 Dim Bef(i,j) As String と宣言しておいて、 Bef(1,1)に、SCATTERBRAiN11 Bef(1,2)に、SCATTERBRAiN12 Bef(1,3)に、SCATTERBRAiN13 …… Bef(i,j)に、SCATTERBRAiNij という「文字列」を入れたいのです。 (最後の2文字i,jが、そのときの変数i,jの値。) これをFor構文を使って、 Bef(i,j)="SCATTERBRAiN" + i + j と書いたら、エラーになってしまいました。 iやjを、その変数に入っている数字の文字列として扱うには、どうすればいいのでしょうか。 よろしくお願いします。

  • vba関数 変数の中に該当の文字がいくつあるか

    vba関数 変数の中に該当の文字がいくつあるかを取得するには? Sub Sample() Dim moji As String moji = "aiuuueou" MsgBox "uは4つです" End Sub こんな感じで、moji という変数の中にuはいくつあるかを取得する方法はありますか?

  • 文字列を変数名として扱う方法

    vb6.0 か vb.net で文字列を変数名として扱うにはどうすればいいでしょうか? 例をあげると下記のようなことです。 -------------------- dim abc as string dim x as string abc = "テスト" x = "b" msgbox "a" & x & "c" -------------------- これをそのままvb6.0で実行すると"abc"という文字が表示されますが "abc"ではなく"テスト"と表示させたいのです。 つまり msgbox abc とした場合と同じようにしたいのですが可能でしょうか? ご存知の方教えてください。 よろしくお願いします。

  • VBA 文字列と数値の混在

    Excel VBA 独学中の初心者です。独学中の初心者です。 データ型に関する以下の疑問についてお答えいただける方、よろしくお願い致します。 疑問1.「文字列 & 数値」でエラーにならず、結果は文字列になるようですが、これはVBAの規則上当たり前のことでしょうか。 疑問2.InputBox関数の戻り値は、Typeを省略した場合文字列と思いますが、これを数値型の変数に代入してもエラーは発生しませんでした。これも当たり前のことでしょうか。 具体例は以下です。 ------------------ Option Explicit Sub 文字列と数値の疑問() '初期設定 Cells.Clear Range("A1").Select '本題はここから Dim i As Long Dim j As Long Dim strRange As String Dim strInput As String '------------------ '疑問1の例 i = 2 strRange = "A" & i '疑問1:文字列と数値変数(長整数型)を文字列連結演算子で連結してもエラーにならない。・・・なぜ? '結果は1つの文字列→strRange ="A2" '例 Range(strRange).Select '動作OK Range(strRange) = i '動作OK '------------------ '疑問2の例 strInput = InputBox("選択行を入力してください", , "4") 'strInputは文字列型変数 j = strInput '疑問2:数値変数(長整数型変数)に文字型変数を代入してもエラーにならない・・・なぜ? '結果は長整数型変数(数値) j=4 (Input BOX をデフォルトでOKしたとき) '例:以下の両方とも動作OK '1) strRange = "A" & strInput '文字列 & 文字列 →文字列 strRange ="A4";疑問なし Range(strRange).Select '動作OK Range(strRange) = strInput '2) Cells.Clear '確認用にクリアスクリーン Range("A1").Select '確認用にセル位置移動 strRange = "A" & j '文字列 & 数値 →文字列 strRange ="A4";疑問1と同じ Range(strRange).Select '動作OK Range(strRange) = j '動作OK End Sub

専門家に質問してみよう