アクセス小僧:コンボボックスで選択されている項目を変更 [コンピューター]
アクセスのフォームに設置したコンボボックス(項目数=2)で選択されている
項目を反転するマクロを紹介します。各項目のListIndexは0, 1なので、1, 0にすることを考えます。
2つのListIndex値の和から、現在選択されている項目のListIndex値を引くことで、ListIndex値を反転できます。
MicrosoftのListIndexの説明を読むと、「値の取得および設定が可能」とあります。
ComboBox.ListIndex プロパティ (Access)
https://msdn.microsoft.com/ja-jp/vba/access-vba/articles/combobox-listindex-property-access
そこで、コンボボックスの選択されている項目を反転するには、次のVBAコードで実現できると思っていました。
[コンボボックス名].ListIndex = 1 - [コンボボックス名].ListIndex
ですが、上記コードを実行すると、エラーになります。
ネットで検索してみると、コンボボックスの場合、ListIndexを設定するのではなく、Valueを設定するようです。
[コンボボックス名].Value = [コンボボックス名].ItemData(1 - [コンボボックス名].ListIndex)
上記コードを実行すると、うまくいきました。
以上。
項目を反転するマクロを紹介します。各項目のListIndexは0, 1なので、1, 0にすることを考えます。
2つのListIndex値の和から、現在選択されている項目のListIndex値を引くことで、ListIndex値を反転できます。
現在選択されている項目 | 現在のListIndex値 | ListIndex値の反転 |
1番目の項目 | 0 | (0 + 1) - 0 = 1 |
2番目の項目 | 1 | (0 + 1) - 1 = 0 |
MicrosoftのListIndexの説明を読むと、「値の取得および設定が可能」とあります。
ComboBox.ListIndex プロパティ (Access)
https://msdn.microsoft.com/ja-jp/vba/access-vba/articles/combobox-listindex-property-access
そこで、コンボボックスの選択されている項目を反転するには、次のVBAコードで実現できると思っていました。
[コンボボックス名].ListIndex = 1 - [コンボボックス名].ListIndex
ですが、上記コードを実行すると、エラーになります。
ネットで検索してみると、コンボボックスの場合、ListIndexを設定するのではなく、Valueを設定するようです。
[コンボボックス名].Value = [コンボボックス名].ItemData(1 - [コンボボックス名].ListIndex)
上記コードを実行すると、うまくいきました。
以上。
誤:
MicrosoftのListIndexの説明を読むと、「値の取得および設定が可能」とります。
正:
MicrosoftのListIndexの説明を読むと、「値の取得および設定が可能」とあります。
by cheese999 (2017-12-17 08:02)
ヤバイぜ! ありがとうございます[__猫]
by cheese999 (2017-12-17 08:03)