[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/11/19(Fri) 14:21
投稿者名:simo
Eメール:
URL :
タイトル:
コンボボックスに項目を追加するには?
お世話になっています。
コンボボックスに値を追加することは出来るでしょうか?
今コンボボックスに4つの値を設定していますが、そこで例えばファイルメーカーのポップアップリストのように項目の一番下に編集と言う項目をつけてユーザーがそれを選択すると、自由にリストの項目を追加削除出来るようにしたいのです。別のアプローチでも構いません。
宜しくお願いします。

投稿時間:2004/11/19(Fri) 14:27
投稿者名:
Eメール:
URL :
タイトル:
Re: コンボボックスに項目を追加するには?
> 今コンボボックスに4つの値を設定していますが、
↑ の4つはどうやって設定したんすか

投稿時間:2004/11/19(Fri) 15:56
投稿者名:kazuやん
Eメール:
URL :
タイトル:
Re: コンボボックスに項目を追加するには?
4つの値は、コンボボックスのプロパティにある「List」に直接入力したという事ですよね?

コンボボックスにリストを追加する場合は「ComboBox AddItem "追加するリスト名",Index番号」

なので、5個目を追加するなら「ComboBox AddItem "リスト5個目",4」で追加出来ます。
ちなみにIndex番号は0から振られるので注意して下さい。


> お世話になっています。
> コンボボックスに値を追加することは出来るでしょうか?
> 今コンボボックスに4つの値を設定していますが、そこで例えばファイルメーカーのポップアップリストのように項目の一番下に編集と言う項目をつけてユーザーがそれを選択すると、自由にリストの項目を追加削除出来るようにしたいのです。別のアプローチでも構いません。
> 宜しくお願いします。

投稿時間:2004/11/19(Fri) 21:13
投稿者名:simo
Eメール:
URL :
タイトル:
Re^2: コンボボックスに項目を追加するには?
ご回答ありがとうございます。
今フォームのロードイベントにて値を設定しています。
With Combo4
.AddItem "1/1"
.AddItem "1/20"
.AddItem "1/100"
End With
こんな感じです。
それでやりたいことは、VBソース側ではなくて、ソフトを使用するユーザーが
この値を編集できるようにしたいのです。可能でしょうか?

投稿時間:2004/11/19(Fri) 22:46
投稿者名:junchan
Eメール:bkalw803@rinku.zaq.ne.jp
URL :
タイトル:
Re^3: コンボボックスに項目を追加するには?
> ご回答ありがとうございます。
> 今フォームのロードイベントにて値を設定しています。
> With Combo4
> .AddItem "1/1"
> .AddItem "1/20"
> .AddItem "1/100"
> End With
> こんな感じです。
> それでやりたいことは、VBソース側ではなくて、ソフトを使用するユーザーが
> この値を編集できるようにしたいのです。可能でしょうか?

Combo4が貼り付けられたFormXにButtonXを貼り付ける。
新規に標準フォームYを作成する
Private Sub CommandButtonX_Click()
    FormY.show
End sub
新規FormYのプロシージャー
OptionButtonを編集したい種類の数だけ貼り付ける。
CommandButtonを1個貼り付ける
Private Sub Command1_Click()
    'すべての項目を削除する
    If Option1.Value=True then
        FormX.Combo4.Clear
  End if
    '選択した項目を削除する
  If option2.Value=True Then
        FormX.Combo4.RemoveItem FormX.Combo4.ListIndex
    End If
    '項目を追加する
  If Option3.Value=True Then
       FormX.Combo4.AddItem Form4.Combo4.Text
    End If
    If ----------
       ------------
    End If-------
    UnLoad Me
End Sub
なにぶん、こちらも初心者です。もっとスマートな方法があると
思います。OptionButtonをIndex化しSELECT文を使用するとか。

投稿時間:2004/11/22(Mon) 02:32
投稿者名:jikoryuu
Eメール:
URL :
タイトル:
Re^3: コンボボックスに項目を追加するには?
リスト項目数が増減しない場合のサンプルです。

リストインデックスは編集時には基本的に-1に戻ってしまうので、
クリック時に選択されたリストインデックスか、
Validateイベントで同じものがないか検索して、
一致または近い値のリストインデックスを保存します。

ListIndexの値はイベントを挟んで参照する必要があるので、
モジュールレベルまたはパブリック(グローバル)の変数に保存する必要があります。
この例ではコンボボックスコントロールのTagプロパティを利用しています。

Private Sub Combo4_Click()
  With Combo4
    .Tag = .ListIndex
  End With
End Sub

Private Sub Combo4_Validate(Cancel As Boolean)
  With Combo4
    Dim i As Long
    If i < .Tag Then i = .Tag
    If .Text <> .List(i) Then
      .List(i) = .Text
    End If
    .Tag = i
    .ListIndex = i
  End With
End Sub

Private Sub Form_Load()
  Dim i As Long
  With Combo4
    .AddItem "1/1"
    .AddItem "1/20"
    .AddItem "1/100"
    .Tag = 0
  End With
End Sub

使用ユーザーに使いやすくするには、重複項目があった時の処理や
リスト項目の増減の処理を考える必要があるかもしれません。

投稿時間:2004/11/22(Mon) 20:09
投稿者名:simo
Eメール:
URL :
タイトル:
Re^4: コンボボックスに項目を追加するには?
> リスト項目数が増減しない場合のサンプルです。
>
> リストインデックスは編集時には基本的に-1に戻ってしまうので、
> クリック時に選択されたリストインデックスか、
> Validateイベントで同じものがないか検索して、
> 一致または近い値のリストインデックスを保存します。
>
> ListIndexの値はイベントを挟んで参照する必要があるので、
> モジュールレベルまたはパブリック(グローバル)の変数に保存する必要があります。
> この例ではコンボボックスコントロールのTagプロパティを利用しています。
>
> Private Sub Combo4_Click()
>   With Combo4
>     .Tag = .ListIndex
>   End With
> End Sub
>
> Private Sub Combo4_Validate(Cancel As Boolean)
>   With Combo4
>     Dim i As Long
>     If i < .Tag Then i = .Tag
>     If .Text <> .List(i) Then
>       .List(i) = .Text
>     End If
>     .Tag = i
>     .ListIndex = i
>   End With
> End Sub
>
> Private Sub Form_Load()
>   Dim i As Long
>   With Combo4
>     .AddItem "1/1"
>     .AddItem "1/20"
>     .AddItem "1/100"
>     .Tag = 0
>   End With
> End Sub
>
> 使用ユーザーに使いやすくするには、重複項目があった時の処理や
> リスト項目の増減の処理を考える必要があるかもしれません。

有難うございます。ソースを参考にしてがんばってみます。