• ベストアンサー

VB6 コントロールボックス内のインデントについて

VB6でプログラミングをしています。 コンボボックスにDBから取得したデータをセットしているのですが、プルダウンでデータを表示したところ、インデックスがずれてしまいます。 '△=半角スペース ---ソース--- combo.AddItem Left$(Trim(mRs.Fields"CODE").Value) "△△△",12) & "△" & Trim(mRs.Fields("ITEM").Value ---プルダウン表示(実行結果)--- AAA△△△△あいうえお B123△△△かきくけこ ※ITEMのインデックスがずれてしまう。 ちなみにコンボボックスのフォントはMSゴシックを指定しています。 どなたかプルダウン内の表示を統一する方法について教えて頂けないでしょうか?

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

  • ベストアンサー
  • Bickyon
  • ベストアンサー率41% (42/101)
回答No.1

left$のところですが、mRs.Fields"CODE").Valueに半角空白3個を引っ付けたものを12文字取り出しているように見受けられます。 この場合、取り出し元の文字列が12文字未満だとズレますね。 CODEの最大文字列長が12文字なら、半角空白12個を引っ付けた文字列から取り出すようにして下さい。 例題を見ると、最大長は4文字のようですから、"△△△"を"△△△△"にすればOKなのかも。

noname#139383
質問者

お礼

回答ありがとうございます。 ソースですが、スペースは12個入れています。 質問文では省略しています。わかりにくくてすみません。 切り出した文字数をdebug.printでlen$()で表示すると、バイト数は全て統一されているのですが、コンボボックスでみるとずれてしまいます。

その他の回答 (1)

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

Mid関数を使う方法もあります。 Pフォントは使わない前提で。 エクセルVBAで結果表示はCellに出してます。 Sub test02() Dim B(1) Dim c(1) a = String(12, " ") a = StrConv(a, vbWide) Cells(2, 1) = a & "*" & Chr(10) & a & "*" B(0) = "東京" B(1) = "神奈川" c(0) = "丸の内" c(1) = "関内" s = "" For i = 0 To 1 X = a Mid(X, 1, Len(B(i))) = B(i) s = s & X & c(i) & Chr(10) Next i Cells(1, 1) = s End Sub Mid(X, 1, Len(B(i))) = B(i)の1を省略するとおかしくなる。 Msgbox ではなぜか少しずれる。

関連するQ&A