• ベストアンサー
  • 暇なときにでも

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

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

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数292
  • ありがとう数7

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

  • ベストアンサー
  • 回答No.6

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連する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 にしようかなと思ったのですが なんかくどいかなって感じます。

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

    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を、その変数に入っている数字の文字列として扱うには、どうすればいいのでしょうか。 よろしくお願いします。

その他の回答 (5)

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

有名な話題に、「ハンガリアン記法」というのが在ります。興味があればゆっくり、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文字とか長くてもよくて内容的に説明志向だったと思う。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

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

こんにちは。 後から、書くと、とても書きにくいものです。前回の人のように、自分と違うことを書いたからといって、感情的になられても、こちらは困ってしまいます。 基本的には、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 側の書き方には沿うようにはしたいと思っています。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.1

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • 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

  • 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

  • 文字列をint型に変換したいのですが

    文字列をint型に変換して、計算に使用したいのですが うまくいきません。 char moji[0] = '1' moji[1] = '2' moji[2] = '3' この文字列をひとつずつint型の変数に代入したいのですが atoi関数を使用した場合、文字列全ての値が変換されてしまいます。 どうしたらいいのでしょうか? お答えいただけるとありがたいです。

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

    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 とした場合と同じようにしたいのですが可能でしょうか? ご存知の方教えてください。 よろしくお願いします。

  • VC++2005で文字列変数の定義ができない

    VC++2005Express Edtionで文字列を扱うにはどうやればよいのでしょうか? 文字列変数を定義して、それに文字を代入して、 System::Diagnostics::Debug::Printするサンプルコードを提示してもらえないでしょうか?

  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • 文字列をINTEGER型に変換

    基礎の質問ですいません。 Dim moji as String moji = "123" とあった場合moji変数をInteger型に変えるには CINT(moji)で合っているのでしょうか? Cells(CINT(moji))としたらデータ型があっていないと いうエラーがでました よろしくお願いいたします

  • 文字列をうまく返してくれない

    数値を文字列として呼び出し元に渡し、呼び出し元で文字列を数値に変えようとしたのですがatoi関数(strtolを使うと最初の文字のみ帰ってくるため2桁以上の数値に対応できない)を使うとうまく行きませんでした。 どのように変更したらatoiが使える文字列になりますか? #include <stdio.h> #include <stdlib.h> static struct{   char *name; }kuda[5]={   { "もも" , "りんご" , "みかん" , "バナナ" , "パイナップル" } } char *re_3( void ){   int a = 3;   char str_h[100];   char *str;   sprintf_s( str_h , 100 , "%d" , a );   *str = *str_h; //原因はおそらくここ   return str; } void main( void ){   printf( "%s" , kuda[ atoi( re_3() ) ].name ); }

  • 文字列の後ろから必要分だけ削除したい。

    例1 Dim str As String = "あいうえお1234" 文字列の中の1234だけ削除したい場合は、 str = str.Remove(5,4) という風に、5文字目の後から4文字削除にすればよいのですが、 例の"あいうえお"の部分の長さが毎回処理する度に異なる場合は、 文字列の頭から何文字目という指定ができないので、”後ろから4文字を削除したい”となります。その場合は、どのようなプロパティを使えばいいのでしょうか。 .NET環境です。

  • ☆文字列を抜き取る★

    テキストファイルに GetPoint = ErrMsg("おはよう",target) の行があるとします。 ダブルクオートでくくられた文字列だけを出力させたい場合 下記コードでどこが間違っているでしょうか?? 今のままだと全てのコードが出力になるんですよ。。。 アドバイスをいただけると幸いです。 Sub Main() Dim iFileNumber As Integer iFileNumber = FileSystem.FreeFile() Open "C:temp\sample.txt" For Input As #iFileNumber Dim stResult As String Dim stSerch As String Dim point As Long Do While (Not FileSystem.EOF(iFileNumber)) Dim stBuffer As String Line Input #iFileNumber, stBuffer stResult = stResult & stBuffer & vbNewLine If Instr(stResult,Chr(34)) > 0 Then If Instr(stResult,Chr(34)) > 0 Then v = stResult End If End If Loop Close #iFileNumber End Sub