• 締切済み

VB6リストボックスでの文字列処理

お世話になります。 VB6、リストボックスの処理 なのですが、 (処理) リストに項目1、項目2を 複数行表示する。 この際項目ごとずれないように そろえて表示したい。 項目1が半角文字の場合は リストのFONT指定、FORMAT関数の 使用できちんと処理できるのですが、 項目1に全角文字が来た場合1行目と それ以降項目1の文字数が違うとずれて しまいます。 なにかよい方法があったらお知恵を拝借 したいのですが。 よろしくお願いします。

みんなの回答

  • andy_kun
  • ベストアンサー率23% (64/274)
回答No.4

リストボックスのフォントを等幅のフォントに設定します(例えばMS ゴシック) list1.additem 項目1 & vbtab & 項目2 こうすれば項目1と項目2が全角文字を含んでも項目の先頭は並びます。 ただし項目1は8バイト未満である必要があります。 もしくは ColPos = 8 strData = 項目1 List1.AddItem strData & String$(ColPos - LenB(StrConv(strData, vbFromUnicode)), " ") & 項目2 こんな感じですかね。

回答No.3

どうしても1つのListBoxに収めたいなら、ANo.2氏のような 考え方が必要になると思います。 1つでなくても構わないなら、多少面倒にはなりますが (&見かけが多少変わりますが)以下のような方法も考えられます。 ・ListBoxを2つ、横に並べて、スクロールバーが隠れるぐらいに重ねる  (もちろん右側が前面に来るように)  以下、左側をList1、右側をList2とします。 ・List1に項目1の内容を、List2に項目2の内容を、Indexがシンクロするように  AddItemするよう処理を記述 ・List2_Scrollイベントで、List1.TopIndexをList2と同じ値にするように処理を記述 ・List1_Click、List2_Clickイベントで、選択されたときに  もう片方のListIndexも同じになるように処理を記述 …これで、2つのListBoxのスクロールがシンクロし、選択もシンクロします。 (多少、不恰好かもしれませんが… これならプロポーショナルフォント使おうが  問題無く並びます) なお、上のやり方は単独選択の場合です。複数選択を可能にするには もう少し工夫が必要かと思います。

  • gu-tarou
  • ベストアンサー率42% (6/14)
回答No.2

私も質問の意味が良く解らないけど、 VBのMID関数は文字数を数えてしまうので、全角と半角が混在した文字列の長さを揃えられない。 と言う質問でしょうか? バイト数を数えるユーザー定義関数 Bmid を定義しておきます。 Function Bmid(ByVal str As String, start, length) Bmid = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode) End Function ここで  Da$ = "A1B2C345 " なる文字列があるとすると  Bmid(Da,1,2)  は "A"  を返します。  Bmid(Da,1,3)  は "A1" を返します。 外れていたら御免。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

質問の内容ですが、実例を挙げて説明したほうがよいと思う。 >リストに項目1、項目2を 複数行表示する。 とはどういうことをしようとしているのですか。 ーー 質問の「項目1」などが下記のItemに当たるならば VBAの場合ですが、(VB6でも同じではないかと思います) Sub test01() With Worksheets("Sheet1").ListBox1 .Clear .AddItem "八王子市" .AddItem "三鷹市" .AddItem "武蔵野市" .AddItem "静岡市" End With End Sub を実行した場合、リストボックス内で 八王子市、三鷹市、・・は先頭がそろいます。 ですから半角文字を含む文字列と全角文字の文字列を結合して 1つのItemにしているとかあるのですか?

関連するQ&A

  • VBAのリストボックスでの文字化け

    初めて投稿させていただきます。 開発環境は WindowsXP SP2 Excel2000 を使用しています。 リストボックスに表示される文字ですけど、 1行目 "あああ" 2行目 "い°い" 3行目 "ううう" と表示しようとしています。 2行目の"°"は、角度を表す記号を全角で使用しております。 これをリストボックスに表示しようとすると、 2行目だけ半角分短く表示されてしまいます。 3行とも同じ文字数なので、体裁よくそろって表示されないかと困っております。 現状は、リストボックスの表示では"°"が半角で表示され、デバッグモードでみたらちゃんと全角で入っています。 リストボックスに"°"を表示しようとするとどうも文字化けしているのではないかと推測しています。 挿入しようとしている文字の中に"°"が出てきたら、半角"゜"と半角スペースを入れれば 体裁よく表示できるのですが、もし、プロパティなどで文字のエンコード等の手段で解決できるならと思い質問いたします。

  • VBとリストボックス

    こんにちわ。 いまVB6.0sp5でリストボックスに チェックボックス付きのリストを表示し, クリックで複数選択するロジックを組んでいます。 リストに表示するデータ件数がリストボックスの高さを超えるため, 横スクロールさせる必要があります。 そこで,2列目のキャプションをクリックすると, スクロールし,選択した行以外のチェックボックスが見た目, 消えてしまいます。 なお消えたチェックボックスの箇所をクリックすると, その行のチェックボックスが選択された状態で表示されます。 2列目のキャプションをクリックしたときに,ほかの行のチェックボックスを 消さないようにしたいのですが, どうすれば良いでしょうか? 教えてください。 宜しくお願いします。

  • VB6.0 リストボックス

    VB6.0で3つのリストボックスに関連性を持たせたいと思っています。 Private Sub lstBox_Click() Dim intLstIndex As Integer intLstIndex = lstA.ListIndex If (lstA.Selected(intLstIndex)) Then lstB.Selected(intLstIndex) = True lstC.Selected(intLstIndex) = True Else lstB.Selected(intLstIndex) = False lstC.Selected(intLstIndex) = False End If End Sub 以上のように、どれか一つのリストボックスがクリックされたら他のリストボックスの同じ行がtrueになるようにしています。 しかしこれでは件数が増えた場合、選択された行が揃わなくなる場合があり非常に見栄えが悪くなります。 リストボックスでなくともかまわないのですが、このように三つの項目に関連性をもたせることはできませんでしょうか。

  • リストボックスの使い方

    VB2008エクスプレスを使っています ボタンを押すと画像や文字を表示することは出来るのですが リストボックスにいくつか項目を作り その項目ごとに表示される文字や画像を変えたいんですが どうすればいいのでしょうか? ちなみにボタンコントロールをダブルクリックして PictureBox1.Image = Image.FromFile("C:\Windows\大草原の風.bmp") と文を書くとピクチャーボックスに画像でます ここまでわかるのですが、リストボックスの項目ごとに 画像の種類を変えたりしたいです

  • リストボックスの文字列の検索で困っています!

    C#のプログラミングについて ボタン1を押したとき テキストボックス1にある文字(または数字)がリストボックス1に含まれているかを検索し もし含まれているならばテキストボックス2にその行を表示するプログラムはどうやって書けばいいですか?

  • ピクチャボックス内に文字列を表示させたい

    VB2005でプログラムを作っています。 ピクチャボックス内に文字列を表示させたいのですが、 やり方がわかりません。 Draw.Stringでしょうか? フォーマットというか、引数の入れ方もわかりません。 フォントの部分に"MS 明朝"と入れてもダメですし…。

  • フォームのテキストボックス内での処理

    ●VB6.0を使用しているのですが、テキストボックスで全角スペースのみ又は半角スペースのみの入力をした時msgboxでエラー処理するにはどうしたらいいのでしょうか? ●またテキストボックスで半角英数しか入力できないようにする処理があれば教えていただけますか?

  • VB6.0 リストボックスやコンボボックスについて

    環境VB6.0、WinXPです。 現在VB6.0について、独学で学んでいます。 インターネットにて下記のサイトを見つけました。 http://www4.plala.or.jp/tamo/vb/vb99.html このサイトの課題5と6でつまづいています。 5に関しては、文字を分割して表示するプログラムなのですが、毎回違う値が入ってくることを想定すると、どのようにして一文字ずつリストボックスに表示すれば良いのか分かりません。 6に関しては、コンボボックスの全値を取得できるような方法があるのでしょうか? 初心者なので、コードなど参考になるものを教えていただければ幸いです。 どなたかご教授下さい。お願いいたします。

  • テキストボックス行の桁数を制限したいです VB.NET

    VB.NETのテキストボックスなのですが、 マルチラインのテキストボックスで 行の桁数を10桁などに制限したいです。 全角半角混在などの処理もしないとならないと思うのですが、 良い方法などありましたらアドバイス頂ければ幸いです。 よろしくお願い致します。

  • VBで文字検索

    VBで文字列検索するとき たとえば 借り物商品001,1 仕入商品005,3 上記のようなテキストがあったとき sWk(1) = 借り物商品001 sNo(1) = 5 sWk(2) = 仕入商品005 sNo(2) = 3 上記のように.(カンマ)の前後で項目を分けたいのですが MidやLen関数を使ってもうまくいきません 全角半角が混在のせいで文字数は取れるのですがMid関数がうまくできないのです VB初心者のためこんなことで悩んでます どうかよいアドバイスお願いします

専門家に質問してみよう