次の方法で共有

format関数について

Anonymous
2020-06-08T09:04:03+00:00

format関数をAccess(クエリ・VBA)上で使用する場合について質問です。

「先頭円マーク + 数値」で表現されている文字列を、format関数を挟み、

3桁カンマ区切りにして揃えようとしているのですが、

戻り値として、先頭円マークが消えるというのが理解できません。

例)

 format("\1000","#,##0")  → 1,000

 ※先頭バックスラッシュは円マークです

結果として、欲しい結果が返ってきてはいるのですが、

先頭の円マークが消えるのはどういう理由なのか、理解できないでいます。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

2 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2020-06-09T04:33:58+00:00

    > 「先頭円マーク + 数値」で表現されている文字列を、format関数を挟み、

    > 3桁カンマ区切りにして揃えようとしているのですが、

    > 戻り値として、先頭円マークが消えるというのが理解できません。

    > format("\1000","#,##0")  → 1,000

    ・第 2 引数 format において指定されている "#,##0" は、

     数値データに対して適用される書式である。

    ・この時、第 1 引数 expression に渡された値が

     「数値データとして評価できる文字列」である場合、

     渡された値を暗黙的に数値型のデータに型変換した上、

     上記の書式を適用した文字列を戻り値として返す。

    ・更にこの時、第 1 引数 expression に渡された文字列に

     通貨記号が含まれていた場合、その記号を無視して

     型変換が行なわれる

    ・ここでの通貨記号とは、システムの[地域と言語]の設定において

     通貨記号として設定されている文字のことである。

     (日本語環境の場合、既定では円マーク()が設定されている)

    例えば、システムで使用する通貨記号が "$" に変更されている環境において、

    "\1000" という文字列を第 1 引数 expressionに渡した場合、

    渡した文字列がそのまま Format 関数の戻り値として返されることになります。

    (カンマ区切りになることもない)

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2020-06-09T04:51:35+00:00

    sk.exe様

    ご返信ありがとうございます。

    なるほど、理解できました。

    ためしに、PCの通貨記号を$にして該当のformat関数を挟んだところ、

    おっしゃる通り、わたした文字列がそのまま返ってきました。

    開発しているシステム上では、format関数を挟むフィールドは

    円マークしかありえない前提なので、そこら辺を踏まえて開発進めていこうと思います。

    ありがとうございました。

    0 件のコメント コメントはありません