• ベストアンサー

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

  • Excelでバイト数の最大数が決まったデータを作りたいんです!

    上手く説明出来ないんですが・・。 エクセルで、項目それぞれにバイト数の最大数が決まったデータを作りたいんです。 例えば ◆職員番号・・・バイト数12(半角)         職員番号は8桁なので、その後ろに残り12バイトまでの半角パディング。 ◆氏名 ・・・ バイト数16(全角8字まで)         全角8文字以内なら、その後ろに残り8文字までの全角パディング。         全角8文字を超す氏名なら、8文字で切る。 ◆カナ ・・・ バイト数58(半角)         半角カナ文字で残りの58バイトまで半角パディング。 *これをcsvに変換します! これを文字列だけ打ち込んだら、自動で最大バイト数まで半角・全角を埋めるようにすることは出来るでしょうか? また、氏名のところのように自動で8文字までの入力しか出来なくするようにすることは出来るでしょうか? 説明が下手で申し訳ないんですが、おわかりになる方ご教授下さい。 よろしくお願いします!!

  • 文字列の長さの数え方

    input type=textに入力された文字の長さを 数えたいと思います。 入力には、全角も半角もOkにしたいのですが、 DB(oracle)に登録する為、バイト数のチェックを したいのですが、lengthだけではうまくチェックしきれません。 入力された内容の文字数、バイト数のチェックする方法を 教えて下さい。 宜しくお願いします。

  • エクセルで、【スペース除き】【半角⇒全角へ】

    タイトルの件、質問します。 A1セルに、下記のように、全角と半角の文字数字及び、スペースが入っています。 これを ・全角のみ ・半角文字、半角スペース 削除 を出来ないでしょうか? あいうえお12345 アイウエオ 12345

  • またしてもAccess2000での質問

     文字数を数えるにはどうすればいいのですか?  例えば、定型入力で6文字までしか入れれなくして、もし 文字数が足りなかったらエラーを出す。  他にも文字数が多い場合もエラーを出すようにしたいのです!  それと半角と全角での文字数の識別もしたいのですが…  例えば、半角20文字までで全角10文字までという風にしたいのですがどうすればいいのですか?? よきアドバイスお願いします!本当の素人ですみません…

  • VBAで( )のものだけ(   )に変更したい

    お世話になります。 現在エクセルの複数のセルに( )空白のスペースが入った()があります。 ※()の中は半角・全角のスペースが中身が半角・全角のスペースの数がさまざまな形で入っています。 ()の中に入っているのは半角・全角のスペースがはいている()のみ( )※全角スペース3個 のものに変換したいのです。 しかしながら、他のセルに(2222)などの()の間に数字や文字が入っているものがあり、それに対しては、そのままにしたいのです。 エクセルのVBAで実現したいのですが、どのようにすればよいでしょうか? 何卒よろしくお願いします。

  • 全角半角あわせて3文字

    全角半角が混在している文字列の左から3文字を取得したい場合にいい方法はないでしょうか? mb_substr関数で第3パラメータはバイト数で指定するようです。 関数リファレンスでは「最大文字数」って表現になってます。 http://php.net/manual/ja/function.mb-substr.php 半角なら文字数=バイト数ですが、全角だと指定の半分の文字数になります。 最大だから間違ってはないですが、文字数じゃないよな‥‥っていつも思ってます。 いったん半角→全角にして、6バイト分を切り出すのはできます。 でも、英数字も全角半角混在してるので元の文字列を壊したくないのです。 mb_substrの第3パラメータを6から3まで、mb_strlenが3になるまで回すのもやってみました。 でも、なんかスマートじゃないんですよ‥‥。 なにかこう、スマートないい手はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Excel関数 文字分割

    A列               関数の結果求めたい値 AAAA BBBB(半角スペース区切)     AAAA AAAA BBBB(全角スペース区切)    AAAA AAAA/BBBB(半角/区切)        AAAA AAAA/BBBB (全角/区切)       AAAA =LEFT(A1,FIND(" ",SUBSTITUTE(A1," "," "))-1) =LEFT(A1,FIND("/",SUBSTITUTE(A1,"/","/"))-1) Excelの関数で一回の関数で上記二つの関数を使用して 区切文字複数を考慮して文字分割したいのですが、 どのように実施すればよいかご教授ねがえますでしょうか? IF文を使うのかもしれないとは思いいろいろと試したのですが うまく出来ない為質問させて頂いたおります。

  • Access Left$関数で全角半角が混在したデータの抽出 バイト数がずれる

    AccessクエリーでのLeft$関数について教えてください。 半角英数字と漢字文字列が混在したフィールドから Left$関数で17バイト抽出したいのですが、 漢字を一文字=1バイトで換算した結果がかえってしまいます。 例) 1001-500本aaa-GG-りんご ⇒ 1001-500本aaa-GG-り 1002-500mLaaa-GG-みかん ⇒ 1002_500mLaa-GG ※[本]が漢字で[mL]は半角英数です。 後で抽出が自由にできるように、 [GG]以前の文字列のバイト数を固定にしていたのですが 全角・半角が混在していると抽出にずれがでてしまうことを知りませんでした。 ※[4バイト]+"-"+[8バイト]+"-"+[GG]+"-"としていました。 GGを含むGGより以前の文字列を抽出するにはどうすればよいでしょうか? (漢字1文字を2バイトと換算しながらLeft$で抽出するには?) よろしくおねがいいたします。

  • エクセル:文字列のバイト数が欲しい

    セルB1に、  半角スペース、全角2文字、半角スペース、 と入力しました。 このシートの別のセルに、 =Len(B1)と入力すると4と表示され、 =LenB(B1)と入力すると6と表示されますので、 間違いなく「半角スペース・全角2文字・半角スペース」がB1に入っているはずです。 このシートのコードに、 Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Address = "$L$1" Then     MsgBox LenB(Cells(1, 2).Value)   End If End Sub と打ちました。 ここでシート上のセルL1に何か入力するとメッセージボックスが出るのですが、 メッセージボックスに出る値は8です。 何が原因でしょうか。 6が表示されて欲しいのですが(文字列のバイト数が欲しい)、 どのようにコードを書けばよいでしょうか。 実際にB1に入れていた文字は、 1B です。 (半角スペース・全角数字1・全角英字B・半角スペース)

  • 全角、半角文字の判別について

    フォームのテキストで全角なら10文字まで、半角なら20文字まで入力できるようにしたいのですが、EUCの場合、半角カナは2バイトになるため、バイト数で制限をかけるとうまくいきません。かといって文字数で制限をかけてもうまくいきません。 何かいい方法はあるでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう