プロが教えるわが家の防犯対策術!

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

Type ex
sample As String * 20
End Type

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

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

Trim(StrConv(hoge,vbansi))

としてその後もう一度印刷します。
今度は「あいうえお」と印刷され「・」が印刷されません。
このときの定数「vbansi」は実在する定数でしょうか?
いろんなプログラムで、私はこの「vbansi」を使うのですがヘルプで調べても「vbansi」なる定数はどこにも見当たりません。
実は、たまたま変換のときにこの「vbansi」定数を使っただけなのです。
しかしながら、この「vbansi」を使わないと「・」が印刷されてこまります。
おまけに、Option Explicit を挿入すると、「vbansi」でエラーになります。

A 回答 (2件)

まず参考URLを見てください。


定数にvbAnsiなるものはありません。

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

Replace(hoge, vbNullChar, "")

としてみては?

参考URL:http://www.microsoft.com/JAPAN/developer/library …
    • good
    • 0
この回答へのお礼

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

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

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

まだまだ勉強が足りない私です。
でも「なるものはなる」という考え方が嫌いで、なぜそうなるかを納得いくまで考えてみたい性分ですので、今後ご迷惑をおかけするかもしれませんが、宜しくお願いします。

お礼日時:2001/12/07 10:02

Trim(StrConv(hoge,vbansi))



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

Trim(hoge)

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

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

この回答への補足

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

補足日時:2001/12/03 09:36
    • good
    • 0

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