電子書籍の厳選無料作品が豊富!

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

A 回答 (6件)

文字列(String)をあらわす記号だったと思いますよ。


以下に入る文字はString型ですよっていうことを明確にするために
記述されるようですが、VBの場合、"$"を書いても書かなくても結果は変わりません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/22 09:58

$付き 文字型


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

昔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
    • good
    • 0

MID関数とかに$を付けるのは、知る人ぞ知る最適化テクですね。


実行速度が速くなり、EXEのサイズが小さくなります。
理由は↓を参照。

参考URL:http://www.ht-net21.ne.jp/~hatagaya/vb/compact_1 …
    • good
    • 0

$は文字というのはもう出てますね。


それ以外にも機能があります。

処理速度が違います。

下のコードを行ってみてください。

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)の型にキャストする処理があるからだと勝手に思っておりますが、違うかも知れないので無視してもらっても結構です。
    • good
    • 0

旧マイクロソフトのBASIC言語では


$付きは数値じゃなくて文字列変数を表していました
その名残にゃん

変数が何に属するか分かりやすくするために今も使ってる人もいます にゃん
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/22 09:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!