Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルリストボックスの特定の値の変更
記事No42627
投稿日: 2011/08/25(Thu) 17:49
投稿者やまもと
OS:XP
Access Version:2003

ご教示願えますでしょうか?

複数の列を持つリストボックスの行と列で指定された特定の
値をVBAから変更することは可能でしょうか?

Me.lstDimension.Column(1, row) = "1"

などとしても「オブジェクトが必要です」というエラーが表示
されてしまいます。

過去ログ等を探してもこれといった回答が見つかりませんでした。


簡単にできる、もしくはできないかだと思いますが、どうか
よろしくお願い申し上げます。

タイトルRe: リストボックスの特定の値の変更
記事No42628
投稿日: 2011/08/25(Thu) 22:03
投稿者hatena
> 複数の列を持つリストボックスの行と列で指定された特定の
> 値をVBAから変更することは可能でしょうか?

値集合タイプはなんでしょうか。
「テーブル/クエリ」なら、
値集合ソースのテーブルかクエリを更新することになります。

「値リスト」なら、
RemoveItem、AddItem を組み合わせて編集することになります。
あるいは、値集合ソースに設定してある文字列を編集することになります。


どちらにしても、リスとボックスで直接編集するのは面倒です。
頻繁に編集したいのなら、テーブルにして、それからフォームを作成して、
サブフォームとして埋め込むのが簡単だと思います。

タイトルRe^2: リストボックスの特定の値の変更
記事No42630
投稿日: 2011/08/26(Fri) 07:48
投稿者やまもと
hatena様

ご返答ありがとうございました。

> 値集合タイプはなんでしょうか。

情報不足でした。申し訳ありません。
値リストです。

RemoveItem,AddItemですか。
調べてみます。

うーん。しかし、ちょっと面倒ですね。
でも、ご返答、感謝します。

タイトルRe^3: リストボックスの特定の値の変更
記事No42632
投稿日: 2011/08/26(Fri) 14:35
投稿者hatena
> うーん。しかし、ちょっと面倒ですね。

リストボックスはもともと、固定データから特定のデータを選択するためのもので、
編集機能は持っていません。

値リストで、編集することが頻繁にあるというのは、使い方としては
最適な方法ではないと思います。

リストのもとになるデータはどこから持ってきて、編集後のデータはどこに
保存しているのですか。
それとも保存する必要のないその場限りのリストなんですか。

利用目的を説明してもらえると、もっと最適な方法をアドバイスできるかもしれません。

タイトルRe^4: リストボックスの特定の値の変更
記事No42633
投稿日: 2011/08/26(Fri) 16:43
投稿者やまもと
ご返答ありがとうございます。

つたない質問におつきあいいただきありがとうございます。
もともとAccess使いではないもので、どうすれば最適
なのかがよくわかっておりません。

> リストのもとになるデータはどこから持ってきて、編集後のデータはどこに
> 保存しているのですか。
> それとも保存する必要のないその場限りのリストなんですか。


リストのもとになるデータはVBAでSQLを書いて表示しています。

したいことは、テーブルの内容をリストボックスに一覧表示します。
そして、リストボックスで選択された行の特定の列を編集できる
ようにしたいのですが、問題は編集したい行が複数の行にわたる
のです。編集した結果は更新ボタン押下でテーブルに反映します。
また、編集の方法は選択された行の特定の値をテキストボックス
もしくはコンボボックスに表示し、そこで編集をして、更新後の
イベントでリストボックスに反映させられればと思います。

行選択→編集→行選択→編集→行選択→編集→更新ボタン押下
という操作を想定しておりました。
編集した値をその都度リストボックスに反映し、最後に更新を一気に
かけることができればと思っております。

行選択→編集→更新→行選択→編集→更新
といったことは現状できているのですが、編集のたびに更新ボタン押下は
ユーザにとって不便と感じたのです。

教えていただいた方法でできるでしょうが、そこまで手間をかけようか
どうしようか迷っています。

タイトルRe^5: リストボックスの特定の値の変更
記事No42634
投稿日: 2011/08/26(Fri) 17:24
投稿者hatena
> リストのもとになるデータはVBAでSQLを書いて表示しています。
> 
> したいことは、テーブルの内容をリストボックスに一覧表示します。
> そして、リストボックスで選択された行の特定の列を編集できる
> ようにしたいのですが、問題は編集したい行が複数の行にわたる
> のです。編集した結果は更新ボタン押下でテーブルに反映します。

リストボックスでは直接編集できないので、別に入力用のテキストボックスを配置して
なんらかのタイミングでリストボックスに反映させるという仕様にせざるをえません。
面倒だし、ユーザーからみても直感的な操作ではないと思います。

このような場合は通常は入力用のワークテーブルを使います。

元になるテーブル(またはクエリ)と同じフィールド構成のテーブルを作成しておきます。
このワークテーブルをレコードソースとするフォームを作成して、フォームにサブフォームとして
埋め込みます。

下記のような構成になります。

入力用のデータのセットする下記のコードをなんらかタイミングで実行する。
 追加クエリで編集したデータをワークテーブルに書き込む。

ユーザーがこのサブフォームを直接編集する。編集後、更新ボタンをクリックすると
下記の処理コードが実行される。
 更新クエリでワークテーブルの内容を元のテーブルに書き戻す。
 ワークテーブルのデータを削除クエリで削除する。(入力データをクリアしておく。)


追加クエリや更新クエリはVBAでSQL文を生成してもいいですし、クエリではなく
DAOやADOのレコードセットを利用してもいいでしょう。

タイトルRe^6: リストボックスの特定の値の変更
記事No42641
投稿日: 2011/08/29(Mon) 07:45
投稿者やまもと
hatena様

ご返答、ありがとうございます。

> このような場合は通常は入力用のワークテーブルを使います。
>
> 元になるテーブル(またはクエリ)と同じフィールド構成のテーブルを作成しておきます。
> このワークテーブルをレコードソースとするフォームを作成して、フォームにサブフォームとして
> 埋め込みます。

なるほど、ワークテーブルを使うわけですね。
早速、試してみたいと思います。
何度も教えていただき本当にありがとうございます。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る