表題の件で不思議な定数についてお尋ねします。
Type ex
sample As String * 20
End Type
として、sampleに5文字(あいうえお)を代入し、ランダムファイルに書き出します。
書き出したデータを、変数hogeに代入し印刷します。
すると、「あいうえお・・・・・」と印字されます。
後ろの5つの「・」と変換後の空白が必要ないので、
Trim(StrConv(hoge,vbansi))
としてその後もう一度印刷します。
今度は「あいうえお」と印刷され「・」が印刷されません。
このときの定数「vbansi」は実在する定数でしょうか?
いろんなプログラムで、私はこの「vbansi」を使うのですがヘルプで調べても「vbansi」なる定数はどこにも見当たりません。
実は、たまたま変換のときにこの「vbansi」定数を使っただけなのです。
しかしながら、この「vbansi」を使わないと「・」が印刷されてこまります。
おまけに、Option Explicit を挿入すると、「vbansi」でエラーになります。
No.2ベストアンサー
- 回答日時:
まず参考URLを見てください。
定数にvbAnsiなるものはありません。
>あいうえお・・・・
の「・・・・」部分はおそらくvbNullCharではないでしょうか?
それをStrConv(hoge,vbAnsi)としたために、「あいうえお」は本来はエラーなのですが、未処理状態で出力、そしてvbNullChar部分もエラーなのですが、VBは文字列は基本が2バイトなので、1バイト文字のvbNullCharが自動的に省かれたのだと思います。
Replace(hoge, vbNullChar, "")
としてみては?
参考URL:http://www.microsoft.com/JAPAN/developer/library …
遅くなりましたが、お返事有り難うございます。
>定数にvbAnsiなるものはありません。
そうなんです。MSDNにもないし、どこを探してもなかったのでどうなのかな?って思ってました。
しかし、「本来はエラー」なのになぜエラーが出ないのか、またまた不思議です。
全てVBの自動変換なのでしょうか。
下にも書きましたが、StrConv(hoge,0)とした場合に同じ結果になって、数値の0以外を入れてみるとエラーになるのも不思議です。
このままだと、動作が不安定な部分もありますので、教えていただいたReplace(hoge, vbNullChar, "") を使うことにします。
まだまだ勉強が足りない私です。
でも「なるものはなる」という考え方が嫌いで、なぜそうなるかを納得いくまで考えてみたい性分ですので、今後ご迷惑をおかけするかもしれませんが、宜しくお願いします。
No.1
- 回答日時:
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」以外ではまったくだめです。
とてもとても不思議な感じがします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Excel(エクセル) エクセル2013「次のページ数に合わせて印刷」が小さすぎる 9 2023/03/28 10:18
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Excel(エクセル) エクセルでキーリストからデータを取り出して1枚1枚印刷するには? 11 2022/06/27 09:52
- ノートパソコン ページ番号の入れ方について 3 2023/02/16 17:11
- Excel(エクセル) 【Excel】複数シートがあるエクセルデータで片面印刷と両面印刷設定がシートごとに入 1 2023/03/10 15:25
- Word(ワード) Wordの機能について教えてください。 2 2023/07/12 15:08
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで大量のファイルをシート名...
-
Vba 実数および実数タイプの変...
-
エクセルVBAについて
-
ユーザーフォームに別シートか...
-
VB.net(VB)で、フォームにExcel...
-
Excelのマクロについて教えてく...
-
エクセルの合計を自動で表示さ...
-
Excelのマクロでワードのテキス...
-
VBAの計算で@が出てしまう件
-
VBA listBoxから
-
エクセルのマクロについて教え...
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
左右の表のキー位置を合わせたい
-
VBAの質問になります メッセー...
-
Excel マクロについての相談
-
VBA レジストリの値の読み方に...
-
2つのマクロでチェックボックス...
-
Vba SelStart、SelLen教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報