• ベストアンサー

エクセル ユーザーホームのデータについて

エクセル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 上はデータが多いため一部のデータですが 回答よろしくお願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

#2です。 リストボックスは何処に出てくるのでしょう?(^^; こちらの提示したサンプルにはまったく触れてないので試して無いようですが、ここまで書けるならヒントになりませんかね? Rngをモジュールレベルで宣言し、InitializeでNotingに初期化しておく。 CommandButtonのClickイベントでRngがNotingか調べる。 確認が必要ならMsgBoxを入れて戻り値がvbOKやvbYESなら処理をする。

MCC78
質問者

お礼

再回答ありがとうございます。 リストボックスとテキストボックスと勘違いしてました。 いろいろ試したあげく何とか解決しました。

その他の回答 (2)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

こんにちは。 > エクセル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 '-------------------------------------------------

MCC78
質問者

補足

#1の補足と同じです。 よろしくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

>ユーザーホーム、リストボックスを作成し FINDでB行の指定名称を検索し 名称を表示するリストボックスのItemの中から選んだ 名称でシートB列を検索するのですね >製造社、型式、購入日を表示させました。 シート上に該当行をアクチブにしたのでしょうか >製造社、型式、購入日のデータを変更し 手入力で変更入力をしたと言うことですね >コマンドボタンを押して これはなんのためですか。 >セルの内容を書き換えるにはどうすれば 前の文章から考えて、手作業で変更入力して、変わっているのでは無いのでしょうか。変っておれば、セルの内容は 書きかえられているはずです。 Findメソッドで見つかったセルをActiveにして、Offsetなどを使えば、見つかった名称のある行と同じ行 の隣や更に隣のセルを参照できますが、プログラムで変更するなら、変更後の内容はどこにあるのでしょうか。

MCC78
質問者

お礼

回答ありがとうございます。 いろいろ試したあげく何とか解決しました。

MCC78
質問者

補足

説明不足のようですので以下コードを提示し補足します。 コマンドボタンクリック時の内容です。 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 変更と同時に変わる方法。 確認必要な方法。 できれば両方の回答がほしいです。 以上よろしくお願いします。