• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vbaを使用して文字をそろえる)

VBAを使用して文字をそろえる方法

このQ&Aのポイント
  • VBAを使用して行の文字をそろえる方法について説明します。現在、VBAを使用して行の文字をそろえるプログラムを作成しています。具体的には、指定された行にある特定の位置の文字列を基準にして、その行の他の位置の文字列をそろえたいと考えています。現在、スペースを使用してそろえることはできるのですが、タブに変更すると文字がずれてしまいます。この問題を解決するための良い方法があればご教示ください。
  • VBAを使用して行の文字をそろえる方法について質問です。現在、VBAを使用して文字をそろえるプログラムを作成しています。具体的には、特定の位置の文字列を基準にして、その行の他の位置の文字列をそろえたいと考えています。スペースを使用してそろえることはできるのですが、タブに変更すると文字がずれてしまいます。この問題を解決する方法をご教示いただけないでしょうか。
  • VBAを使用して行の文字をそろえるプログラムを作成していますが、タブに変更すると文字がずれてしまいます。この問題を解決する方法があれば教えてください。現在は、スペースを使用してそろえていますが、タブに変更するとずれてしまいます。どのように修正すれば、文字を正しくそろえることができるでしょうか?

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

  • ベストアンサー
  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.1

> そうすると出力したものがずれてしまいます。 どのようにずれるのかが肝心なのですが。 (1) プロポーショナルフォントを使っている為ずれる。 (2) バイト数の計算の仕方が間違っている。 のどちらかなのではないかと。

msyh9999
質問者

お礼

一応、完璧ではないですが、自己解決しました。 私の説明不足だったと思うのですが、 >"あ" AS 行あの名前 >"いう" AS 行いうの名前 >"えおか" AS 行えおかの名前 >"きく" AS 行きくの名前 >"け" AS 行けの名前 の部分はEXCELのセル内に記述されているものから、 抜き出したもので、編集はすべてVBAで行っています。 編集したものを、VBAの機能でクリップボードにコピーして、 テキストエディタに貼り付けると、崩れてしまうのです。 例えば a AS a1 aa AS a2 aaa AS a3 aaaa AS a4 aaaaa AS a5 というものもずれてしまいます。 なので、フォントは特に関係ないかなと思っています。 バイトの計算も、タブに変換しなければ"AS"の位置は揃うので それも間違ってはいないと思っています。 ただ、無理やり最大の文字数に合わせてスペースを埋め込んでいくので、 「1タブのスペース数」では変換できないもの(例えば1タブ4スペースで、 文字の後ろに13スペース付ける場合は、1スペースあまってしまう) があるのでその辺は何度か繰り返し実行してみて、パターンがあったので、 それに対応してみました。 ご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C# での文字列パディング

    ある文字列をバイト数でパディングするにはどうしたらよいでしょうか? 文字数でのパディングは、 str.PadRight(10,' ');  ↑で可能ですが、バイト単位でのやり方がわかりません。 よろしくお願いします。 環境:VisualStudio 2005 C#

  • "の文字列長について

    下記のようにテキストファイルより1行読み込んで、 その1行目の文字数(バイト数)を取得する処理を作成しました。 Dim sBuffer As String Open "aaa.txt" as Input For #1 Line Input #1, sBuffer Msgbox sBuffer おおよそはうまく動作するのですが、 テキストファイルの1行目が "aaaaaaaaaa","bbbbbbbbbbbbb" のように、"が含まれていると、"を2バイトと 換算してしまうので、うまく動作しません。 "を1バイトとして換算して、正確な文字数(バイト数)を 取得するのには、どうしたらよろしいのでしょうか?

  • 任意の区切り文字でsplitする方法

    VBAで任意の区切り文字でsplitする方法を教えてください。 例えば 123 456 789 333 3444 66 65 22 といようなスペースあるいはタブで区切られたテキストデータがあるとします。 これを配列に格納したいのですが、 この区切りがタブ一つとか、スペース一つとか決まっていれば split関数で簡単に配列に格納することができますが、 タブかも知れないし、スペースがかも知れないし その数も未定の場合にはどうしたら良いですか? replace関数を使って、まず全てのタブをスペースに変換し その後に、複数のスペースを一つのスペースに変換し 最後にsplit関数を使うという方法しかないでしょうか? もっとスマートな方法があれば教えてください。

  • WORD・VBA、文字列変換

    知っている人には簡単なプログラムと思いますが、 参考書籍がないので全く組めません。 プログラム全文を教えてください。 環境は、Windows7、WORD2010 です。 次のような3行の原文があったとします。 あいうえお か{きく}けこ さしすせそ この原文のうち、 か{きく}けこ の行だけ手動で反転させておきます。 この状態でプログラムを走らせます。 プログラムは一瞬で終了します。 そして、任意の場所、たとえば、原文の2行下にカーソルを手動でもってきて Ctrl+V で手動でペーストすると、次のような文章が出現するプログラムを組みたいのです。 あいうえお か{きく}けこ さしすせそ か{  }けこ つまり、反転した文字列だけをメモリに取り込み、 メモリ内に取り込んだその文字列だけをプログラムにより操作しますので、 原文は操作を受けずそのままです。 そして、プログラムの機能は、 メモリに取り込んだ文字列内にある中かっこ{ }の中の文字(この例では「き」と「く」)を 同じバイト数の空白で置換するということです。 追伸: どこかの出版社がWORD・VBAの書籍を出してくれたら、こんな簡単な質問をしなくても済むのですが・・・。全文を聞くことが情けないことは百も承知です。それでもやはり全文を教えて下さい。

  • VBAでテキストファイルの読み書き

    ExcelVBAで、テキストファイルの読み込みと書き換えについて教えてください。 現在は「LINE Input」で一行を読み込み、MIDで文字列を読み込んだり、書き換えていました。 が・・・それは「1文字目から5文字目まで」と決まった位置で書いてあるというのが大前提です。 でも、いつもそうとは決まっていません。当然いろいろな形があるわけです。 500▲▲6.54▲99999▲▲▲▲DDD▲▲ 3000▲40▲▲▲▲PPP▲60.45▲▲ AAA▲CCC▲80.45▲666▲777▲ (見にくいのですが▲はスペースです)などかなり不規則に並んでいる物があります。 「1行目の3番目の数値」(この場合だと99999)をうまく取り出すにはどうしたら良いのでしょうか? 当然その前の500と6.54はどんな数値になっているかわかりませんし、スペースの数も不規則です。 取り出す値の桁数だって決まっている訳じゃありません。 この場合は▲をスペースとしていますが、当然タブで区切られていることも予想できます。 かなりいい加減なデータテキストファイルなのですが、決まっているのは「1行目の3番目の数値」ということだけなのです。 一文字一文字、スペースかタブか文字か?と認識する必要があるのはわかるのですが、切り貼りがうまくできないのです。 文字とスペース(もしくはタブ)を認識してそれを変数に取っておいて、文字をくっつけたりするのでしょうが・・・なかなかうまくいきません。 変数とかもいろいろ用意しているのに・・・根本ができていないようです。 何かわかりやすくて、いい方法を教えていただけないでしょうか?昨日はずっとこれをしていたのですが、目当ての物を取り出せずにいました。どうかお力をお貸しください。よろしくお願いします。

  • VBA 文字数の判定

    テキストファイルを1行ずつ読み取り、 100文字を超えている行のみ、新しいテキストファイルまたはexcel行に書き込んでいくという バッチを作成したいと思います。 以下でテキストファイルを1行ずつ読み取ることはできました。 1行ずつ読み取った行に対して、文字数以上の判定の方法を教えてください。 また100文字以上の場合は、別ファイルに書き込んでいく構文も教えていただけますか。 Sub test() Dim buf As String, n As Long Open "パス\a.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf n = n + 1 Cells(n, 1) = buf Loop Close #1 End Sub

  • 秀丸で行を文字数で並び替えしたい

    秀丸で行を文字数で並び替えしたいです。 例えば、 123 あいうえおか a ・ ・ ・ これを 文字数ごとに並び替えたいです。 a 123 あいうえ 宜しくお願いします。 テキストファイルですが、かなりデータ数が重いです。 秀丸で難しい場合には、何かソフトウェアなどを教えてもらえると 嬉しいです。Excelではファイル数が大きすぎて無理でした。

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

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

  • VBA 文字間に半角スペースを入れる

    OSは Win7、Excelは2013 を使用しています。 F列に名前が入っています。 名前の文字の間に、半角スペースを入れたいのですが、 (山田太郎 → 山 田 太 郎) 名前なので文字数がそれぞれ違うので、どうすればいいかわかりません。 どなたかご教示いただけたら有難いです。 よろしくお願い致します。

  • ワード2013で文字が左に行かない

    ワード2013を使っていますが 一度でも行の頭にスペースを何文字分か入れると 以降の行で永遠に元に戻れなくなってしまい 文字が左の方に書けなくなります。 ファイル→オプション→文章校正→ オートコレクトのオプション→入力オートフォーマットで Tab/Space/BackSpace キーでインデントとタブの設定を変更する、の チェックを外せばいいと知りましたが その方法で設定自体を変えたくない場合は どうすれば文字が左に行くでしょうか? ある行で行頭を何文字分か下げると 以降の行で二度と復活できないのでしょうか? 嫌がらせのようなシステム・・・

このQ&Aのポイント
  • We must give up many things to which we are addicted, considering them to be good. Otherwise, courage will vanish, which should continually test itself.
  • Greatness of soul will be lost, which can’t stand out unless it disdains as petty what the mob regards as most desirable.
  • The overall meaning of the passage is that we need to let go of the things we are attached to, even if we think they are good. Otherwise, our courage will fade away and our greatness of soul will be lost.
回答を見る