OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

StrConv 関数の定数 「 vbansi 」??

  • 暇なときにでも
  • 質問No.178464
  • 閲覧数223
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 64% (252/388)

表題の件で不思議な定数についてお尋ねします。

Type ex
sample As String * 20
End Type

として、sampleに5文字(あいうえお)を代入し、ランダムファイルに書き出します。

書き出したデータを、変数hogeに代入し印刷します。
すると、「あいうえお・・・・・」と印字されます。
後ろの5つの「・」と変換後の空白が必要ないので、

Trim(StrConv(hoge,vbansi))

としてその後もう一度印刷します。
今度は「あいうえお」と印刷され「・」が印刷されません。
このときの定数「vbansi」は実在する定数でしょうか?
いろんなプログラムで、私はこの「vbansi」を使うのですがヘルプで調べても「vbansi」なる定数はどこにも見当たりません。
実は、たまたま変換のときにこの「vbansi」定数を使っただけなのです。
しかしながら、この「vbansi」を使わないと「・」が印刷されてこまります。
おまけに、Option Explicit を挿入すると、「vbansi」でエラーになります。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

まず参考URLを見てください。
定数にvbAnsiなるものはありません。

>あいうえお・・・・
の「・・・・」部分はおそらくvbNullCharではないでしょうか?
それをStrConv(hoge,vbAnsi)としたために、「あいうえお」は本来はエラーなのですが、未処理状態で出力、そしてvbNullChar部分もエラーなのですが、VBは文字列は基本が2バイトなので、1バイト文字のvbNullCharが自動的に省かれたのだと思います。

Replace(hoge, vbNullChar, "")

としてみては?
お礼コメント
xiaolong_goo

お礼率 64% (252/388)

遅くなりましたが、お返事有り難うございます。

>定数にvbAnsiなるものはありません。
そうなんです。MSDNにもないし、どこを探してもなかったのでどうなのかな?って思ってました。
しかし、「本来はエラー」なのになぜエラーが出ないのか、またまた不思議です。
全てVBの自動変換なのでしょうか。
下にも書きましたが、StrConv(hoge,0)とした場合に同じ結果になって、数値の0以外を入れてみるとエラーになるのも不思議です。

このままだと、動作が不安定な部分もありますので、教えていただいたReplace(hoge, vbNullChar, "") を使うことにします。

まだまだ勉強が足りない私です。
でも「なるものはなる」という考え方が嫌いで、なぜそうなるかを納得いくまで考えてみたい性分ですので、今後ご迷惑をおかけするかもしれませんが、宜しくお願いします。
投稿日時 - 2001-12-07 10:02:47
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル6

ベストアンサー率 25% (2/8)

Trim(StrConv(hoge,vbansi)) の部分ですが、おそらく vbansi は値が 0 の Variant 変数として処理されていると思われます。つまり、StrConv() 関数では何も処理されていないのではないでしょうか? Trim(hoge) のみだと、結果はどのようになりますか? ちなみに、ASCII などに変換する場合の StrConv() 関数の第 2 ...続きを読む
Trim(StrConv(hoge,vbansi))

の部分ですが、おそらく vbansi は値が 0 の Variant 変数として処理されていると思われます。つまり、StrConv() 関数では何も処理されていないのではないでしょうか?

Trim(hoge)

のみだと、結果はどのようになりますか?

ちなみに、ASCII などに変換する場合の StrConv() 関数の第 2 引数は vbFromUnicode だったと思います。
補足コメント
xiaolong_goo

お礼率 64% (252/388)

お返事有り難うございます。
Trim(hoge) のみで印刷すると、「あいうえお・・・・」となります。
Trim(StrConv(hoge,vbFromUnicode))だと、数字以外の文字は読めません。
私もOption Explicit を挿入してエラーになるので 「vbansi は値が 0 の Variant 変数」かな(もちろんプロジェクト、モジュール、プロシージャのいずれでも宣言していません)?と思い数字の「0」を入れてみたところ、「あいうえお」と印刷されます。
しかし、数字の「0」以外ではまったくだめです。
とてもとても不思議な感じがします。
投稿日時 - 2001-12-03 09:36:57


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ