• ベストアンサー

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

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

noname#139383
noname#139383

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

  • ベストアンサー
  • 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/17068)
回答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

  • コントロールボックスの表示について

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

  • コンボボックス

    VB6.0で開発しています。 ACCESSのm_名前というテーブルから取ってきています。 rst.Source = "m_名前" コンボボックスでなのですが2列表示したいのです。 今は Combo1.AddItem rs.Fields("番号") で 1列だけ表示しているのですが これを 番号  名前 1    あいう 2    かきく 3    さしす としたいのですが どうすればいいでしょうか。

  • エクセルVBA(マクロ-コンボボックスについて)

    マクロ初心者です。 教えてください。 コンボボックスで、[▼]をクリックすると、 [りんご]、[いちご]、[みかん]のリストが表示されます。 しかし、もう一度、[▼]をクリックするとリストの数が増えています。 [りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん] 全くの初心者なので、どうすればいいかわかりません。 コンボボックスで、[▼]をクリックすると、 [りんご]、[いちご]、[みかん]のリストのみが常に表示されるようにしたいです。 下記がコードです。 ---------------------------------------- Private Sub 種類_Combo_DropButtonClick() '** データセット 種類_Combo.AddItem "りんご" 種類_Combo.AddItem "いちご" 種類_Combo.AddItem "みかん" End Sub ---------------------------------------- よろしくお願いします。

  • コンボボックスに追加入力したデータを次回プログラムを動かすときに使えるようにしたい

    VB6を独学でやっていますので、どなたか教えてください。 コンボボックスに追加入力したデータを、次回プログラムを動かすときに使えるようにしたいのですが、どうしたらいいのでしょうか? combo1.addItem combo1.text だけでは、次回立ち上げると消えてしまっています。

  • コンボボックスのClickイベント

    Combo1.AddItem "AAA" Combo1.AddItem "BBB" Combo1.AddItem "CCC" のようなコンボボックスがあり、プログラムの途中で Combo1.Text = "AAA" または Combo1.ListIndex = 0 としたときに、どちらの方法でもClickイベントが発生します。 このClickイベントを発生させないようにしたいのですが 何かよい方法はありますか? あれば教えてください。よろしくお願いします。

  • 複数のコンボボックスの項目の表示/非表示について(VB6.0)

    コンボボックスにて Combo1(0)のリスト "A" "B" "C" Combo1(1)のリスト "A" "B" "C" Combo1(2)のリスト "A" "B" "C" Combo1(3)のリスト  ・  ・  ・ と複数のコンボボックスを用意し、それらのコンボボックスにおいて表示するの内容を全て同じ内容にします。この時、例えばCombo1(0)で"A"が選択されると、他のコンボボックスでは"A"がリストに表示されなくなる、またCombo1(0)にて"A"を選択解除すると他のコンボボックスにおいて再度"A"がリストに表示されるという様に、同じリストを持つ複数のコンボボックスにおいて、重複選択できないように表示/非表示を切り替えたいのですが上手い方法が思いつきません。分かる方がおられましたら御教授宜しくお願いします。

  • VB6.0で データベースの値をコンボボックスに取り込む方法

    VB6.0で データベースの値をコンボボックスに取り込む方法ですが、 普通にCombobox.additem = rs.fields(列名).value だったかな? これで、セットした場合 レコードが5件あったら最初の1件しか取得できませんよね?whileでまわして取得すればいいのでしょうか?←どう記述すればいいのか・・。 また、他にいい方法ないでしょうか?一気にセットできる方法など。 よろしくお願いします。

  • VB6 テキストボックスの数値をコンボボックスに反映させるには?

    TextBoxのChangeイベントを使って、 テキストボックスの数値をコンボボックスに反映させる (具体的には数値をコンボボックスのindex数にし、それぞれのindexに アニメ+str(i)としたいです。 しかし、後で書くソースは何故か、コンボボックスが アニメ1 アニメ0 アニメ1 アニメ2 アニメ3 … となってしまいます。 これを アニメ0 アニメ1 アニメ2 アニメ3 … としたいです。どうすればいいんでしょうか? Private Sub Text8_Change() Static p As Integer If Text8.Text = "" Then Exit Sub For i = 0 To p If p = 0 Then GoTo b If Form6.Combo1.NewIndex = -1 Then GoTo b Form6.Combo1.RemoveItem (i) Next i b: For i = 0 To Val(Text8.Text) Form6.Combo1.AddItem "アニメ" + str(i) Next i p = Val(Text8.Text) End Sub

  • OpenOfficeのコンボボックスの追加

    職場でOpenOffice 1.1.4 のマクロを使って プログラミングをしているのですが、コンボボックスに データを追加する作業で困っています StarSuite 8 Basic プログラミングに コンボボックスにデータを追加する場合は addItem(Item, Pos) と書いてあるのですが、 DrawPage = Sheet.DrawPage Form = DrawPage.Forms.GetByIndex(0) Form.cboDate.Text = Date() '今日の日付表示 Form.cboDate.addItem ("aaa",0) と記述すると、addItemのところで怒られます 本当は、バージョンアップをしたいのですが、 それもできません OpenOfficeに詳しい方がおられましたら、 教えてください

  • Excel ユーザーフォームのコンボボックスについて

    始めまして、マクロに関してはまだまだ勉強中なのですが、ユーザーフォームのコンボボックスについてつまづいてしまい、皆さんにご教授頂ければと思います。 一つユーザーフォームを作成後、そのフォーム内にコンボボックスを配置し、リストから項目を選択できるようにしたいと考え下記のように記述したのですが、ユーザーフォームを実行してもフォームは表示されてきますが、ボックスを選択してもリストに項目が表示されてきません。 Private Sub cmd入力_Click() End Sub Private Sub 選択グループCombo_Change() With 選択グループCombo .AddItem "初級" .AddItem "中級" .AddItem "上級" Private Sub cmd閉じる_Click() Unload Me End Sub この記述自体が間違っているのでしょうか。 宜しくお願いします。