プロが教える店舗&オフィスのセキュリティ対策術

VBAにてSQL文を作成し
「MsgBox SQL」
と実行したところ、
実際作成したSQL文の途中までしか表示されません。

「MsgBox Len(SQL)」
で文字数を取得したところSQL文の文字数は1388文字なのですが
実際MsgBox表示される文字数は939文字でした。

この939文字というのは
Debug.Printで改行する地点と同じでした。
やはりこれ以上の文字数はMsgBoxでは表示できないのでしょうか?
ちなみに環境はaccess2003、vistaです。

A 回答 (1件)

Access VBAのヘルプを見ると、以下のように記述されています:



> 名前付き引数 prompt に指定できる最大文字数は、1 バイト文字で
> 約 1,024 文字です。ただし、使う文字の文字幅に依存します。

「名前付き引数 prompt」というのは、MsgBox関数の1番目の引数です。
単純に「最大文字数は約1024文字」ではなく、「1バイト文字で」と
断っているということは、恐らく2バイト文字(漢字・かななど)が
入るとその分、文字数としては減る、ということなのかと思います。
(なお、1バイト文字に限定しても「約」がつくというのは不明です(汗):
 何らかの制御文字がカウントされない?)

ですので、ご質問の件で、MsgBoxに939文字までしか表示されないと
いうのは、全角文字を含んでいるために、940文字目になると、
引数promptに保持できる最大バイト数を超えてしまったため、
と推測されます。

であれば、これはMsgBox関数の仕様ということなので、ご質問のSQL文に
ついては、これ以上の文字数は表示できない、ということになります。
(別の事例であれば、2バイト文字の文字数が違ってくる可能性が大きい
 ため、これ以上の文字数を表示させられる(或いは逆にもっと文字数が
 減ってしまう)場合もあり得ます)


2バイト文字の参考(念のため):
http://ja.wikipedia.org/wiki/2%E3%83%90%E3%82%A4 …
    • good
    • 0
この回答へのお礼

1バイトまでしか表示できないのですね!すっきりしました!
ありがとうございます。

お礼日時:2009/04/19 00:07

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

このQ&Aを見た人はこんなQ&Aも見ています