• ベストアンサー

"$"記号

関数の末尾に"$"記号が付いてるものそうでないものを見かけるのですが、意味の違いはあるのでしょうか? 例えば、MID$()とMID()とか、Trim$()とTrim()とかのことなのですが。 よろしければ、お教えください。

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

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

文字列(String)をあらわす記号だったと思いますよ。 以下に入る文字はString型ですよっていうことを明確にするために 記述されるようですが、VBの場合、"$"を書いても書かなくても結果は変わりません。

rpepper
質問者

お礼

さっそくの回答ありがとうございます。 長い間の疑問が解けてやっとすっきりしました。

その他の回答 (5)

  • qwer021
  • ベストアンサー率24% (70/281)
回答No.6

$付き 文字型 $なし バリアント型 を返します。 文字列に代入するのなら $を付けた方がベストです。 私は なるべく$付を使います、他の人が見た時 解りやすいと思って.... でも 時々文字型でも $を付けるのを忘れる時も有ります。

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

昔DOS-Basicのころ、それもはじめの頃、 Dim a as stringなど変数宣言も無く、aという変数が文字列か数値か、その数値も倍精度長かどうかを1文字を変数名にあとにつけていました(%、#、!)。しかも1、2、3文字しか変数名として使わず、$付きかどうかで内容を判読する手掛かりにもなりました。しかし後期になり、処理系の種類によっては無くても良くなったように記憶します。VBになっては、付けない方が主流になりました。一方関数についても同じ事情です。結果(処理時間は知らない)に差が無いことは下記のようなテストをすれば納得出来るかもしれない。 余分ですが「・・B」とBのついたものと、つかないものが出来ました(ありますね)。これは差があります。 「Let」なども早々と使われなくなりましたね。 Private Sub Form_Click() a = " 大阪  " Form1.Print "=" & a & "=" b = Trim(a) Form1.Print "=" & b & "=" c = Trim$(a) Form1.Print "=" & c & "=" End Sub

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

MID関数とかに$を付けるのは、知る人ぞ知る最適化テクですね。 実行速度が速くなり、EXEのサイズが小さくなります。 理由は↓を参照。

参考URL:
http://www.ht-net21.ne.jp/~hatagaya/vb/compact_1.htm
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

$は文字というのはもう出てますね。 それ以外にも機能があります。 処理速度が違います。 下のコードを行ってみてください。 Option Explicit Private Declare Function timeGetTime Lib "winmm.dll" () As Long Private Sub Command1_Click()   Dim lngMemoryTime  As Long   Dim strWork     As String   Dim i        As Long      lngMemoryTime = timeGetTime   For i = 1 To 1000000     strWork = Left("ああああ", 4)   Next i   Debug.Print timeGetTime - lngMemoryTime, "処理時間:コマンド1" End Sub Private Sub Command2_Click()   Dim lngMemoryTime  As Long   Dim strWork     As String   Dim i        As Long      lngMemoryTime = timeGetTime   For i = 1 To 1000000     strWork = Left$("ああああ", 4)   Next i   Debug.Print timeGetTime - lngMemoryTime, "処理時間:コマンド2" End Sub コマンドボタン2の方が明らかに早いです。何故かというのは、はっきりわかりません。 私は「$無は収納される変数(strWork)の型にキャストする処理があるからだと勝手に思っておりますが、違うかも知れないので無視してもらっても結構です。

回答No.2

旧マイクロソフトのBASIC言語では $付きは数値じゃなくて文字列変数を表していました その名残にゃん 変数が何に属するか分かりやすくするために今も使ってる人もいます にゃん

rpepper
質問者

お礼

回答ありがとうございます。 昔の名残だったんですね。