• ベストアンサー

No2978の追加での再質問

お礼も補足も書いてしまったためこれ以上自分で書き込みできないのですみませんが再度質問させていただきます。 NO2978での回答していただいたやり方で「半角文字+スペース」はつけることができたのですが「全角文字+スペース」、「全角文字と半角文字が混じっている+スペース」でも同じバイト数にしたいのですがどうすればいいですか? 例えば ABCDEF____ あ________ あA_______ (ただし「_」はスペースを表す) 上記の場合だとスペース込みで10バイトにしたいのです。 (文字が全角半角何が入っているかはわからない) LEFT([DBの列名] & SPACE(10),10) これだと全角半角関係なしに一文字と数えて10文字に足りない分をスペースが付け加えられます。(以下のように) ABCDEF____ あ_________ あA________ 説明が下手で申し訳ないですがよろしくお願いします。

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

  • ベストアンサー
回答No.3

関数を作ってみました。 Private Function RPad(ByVal strSrc As String, ByVal intLength As Integer) As String   RPad = StrConv(LeftB(StrConv(strSrc + Space(intLength), vbFromUnicode), intLength), vbUnicode) End Function 例えば、10 byte にするなら Dim s As String s = RPad("あA", 10) のような使い方です。

その他の回答 (2)

回答No.2

LeftB ですが、最近の VB は内部的には UNICODE を使用しているので、 LeftB("ABC",2) → "A" となってしまいます。 なので、StrConv 関数で一度 Shift-JIS に変換して LeftB を使用し、その結果に対して StrConv 関数で UNICODE に戻す、という処理が必要になると思います。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

LEFTB([DBの列名] & SPACE(10),10) とすると良いです。 「LEFTB」はヘルプでの解説を参照。

moshamosha
質問者

補足

回答いただいた通りにやってみたのですが 半角スペースを正しく1バイトとして扱ってくれません。 実際に試したのはこんな感じです。 変数A=LeftB("1" & Space(35), 35) 変数B=変数A + LeftB("2" & Space(35), 35) 上記の場合の結果は 変数A=1________________ 変数B=1________________?????????????????? となります。 どこが悪いのでしょうか?

関連するQ&A