- ベストアンサー
エクセル ユーザーホームのデータについて
エクセルVBAでユーザーホーム、リストボックスを作成し FINDでB行の指定名称を検索し製造社、型式、購入日を表示させました。 さらに表示させた製造社、型式、購入日のデータを変更しコマンドボタンを押して セルの内容を書き換えるにはどうすればいいでしょうか。 Aの番号を指定して書き換える方法でも可能です。 A B C D E 1 NO 名称 製造社 型式 購入日 2 1 テレビ SONY ABC 2003.3 3 2 パソコン DELL DEF 2002.3 4 3 冷蔵庫 NEC GHI 2001.3 5 4 上はデータが多いため一部のデータですが 回答よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 リストボックスは何処に出てくるのでしょう?(^^; こちらの提示したサンプルにはまったく触れてないので試して無いようですが、ここまで書けるならヒントになりませんかね? Rngをモジュールレベルで宣言し、InitializeでNotingに初期化しておく。 CommandButtonのClickイベントでRngがNotingか調べる。 確認が必要ならMsgBoxを入れて戻り値がvbOKやvbYESなら処理をする。
その他の回答 (2)
- papayuka
- ベストアンサー率45% (1388/3066)
こんにちは。 > エクセルVBAでユーザーホーム、リストボックスを作成し > FINDでB行の指定名称を検索し製造社、型式、購入日を表示させました。 このあたりのソースを出してもらわないと良く解りません。 取あえずUserFormにListBox1個とTextBox3個、CommandButton1個を置いて下記のようにしてみたけど意味が違うかな? '------------------------------------------------- Dim myR As Range Private Sub UserForm_Initialize() Dim r Me.ListBox1.ColumnCount = 4 With ActiveSheet Set r = .Range("B2:B" & .Range("B65536") _ .End(xlUp).Row).Find(what:="冷蔵庫") End With If Not r Is Nothing Then Me.ListBox1.RowSource = _ r.Resize(1, 4).Address Set myR = r End If End Sub '------------------------------------------------- Private Sub CommandButton1_Click() If myR Is Nothing Then Exit Sub myR.Offset(0, 1).Value = TextBox1.Text myR.Offset(0, 2).Value = TextBox2.Text myR.Offset(0, 3).Value = TextBox3.Text End Sub '-------------------------------------------------
補足
#1の補足と同じです。 よろしくお願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
>ユーザーホーム、リストボックスを作成し FINDでB行の指定名称を検索し 名称を表示するリストボックスのItemの中から選んだ 名称でシートB列を検索するのですね >製造社、型式、購入日を表示させました。 シート上に該当行をアクチブにしたのでしょうか >製造社、型式、購入日のデータを変更し 手入力で変更入力をしたと言うことですね >コマンドボタンを押して これはなんのためですか。 >セルの内容を書き換えるにはどうすれば 前の文章から考えて、手作業で変更入力して、変わっているのでは無いのでしょうか。変っておれば、セルの内容は 書きかえられているはずです。 Findメソッドで見つかったセルをActiveにして、Offsetなどを使えば、見つかった名称のある行と同じ行 の隣や更に隣のセルを参照できますが、プログラムで変更するなら、変更後の内容はどこにあるのでしょうか。
お礼
回答ありがとうございます。 いろいろ試したあげく何とか解決しました。
補足
説明不足のようですので以下コードを提示し補足します。 コマンドボタンクリック時の内容です。 Private Sub TextBox1_AfterUpdate() Dim Rng As Range Set Rng = Range("B:B").Find(Me.TextBox1.Value) If Not Rng Is Nothing Then Me.TextBox2.Value = Rng.Offset(0, 1).Value Me.TextBox3.Value = Rng.Offset(0, 2).Value Me.TextBox4.Value = Rng.Offset(0, 3).Value Else Me.TextBox2.Value = "" Me.TextBox3.Value = "" Me.TextBox4.Value = "" End If Set Rng = Nothing End Sub 変更と同時に変わる方法。 確認必要な方法。 できれば両方の回答がほしいです。 以上よろしくお願いします。
お礼
再回答ありがとうございます。 リストボックスとテキストボックスと勘違いしてました。 いろいろ試したあげく何とか解決しました。