• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで各セルをダブルクリックで各入力フォームが出る)

エクセルでダブルクリックで入力フォームが出る顧客管理ソフトの作成方法

このQ&Aのポイント
  • エクセルで顧客管理ソフトを作成する際、各セルをダブルクリックすると、そのデータに対応する入力フォームが表示されるようにする方法が知りたいです。
  • また、フォームの追加や検索フォームの実装も検討しています。
  • エクセル初心者向けに分かりやすい方法を教えてください。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

ユーザーフォームに Private Sub UserForm_Initialize() GYOU = ActiveCell.Row TextBox1.Value = Range("A" & GYOU).Value TextBox2.Value = Range("B" & GYOU).Value End Sub Private Sub cndEntry_Click() GYOU = ActiveCell.Row Range("A" & GYOU).Value = TextBox1.Value Range("B" & GYOU).Value = TextBox2.Value End Sub を貼り付けてみてください。 出来るだけわかりやすく記載していますので、何が起きているのか利害できると思います。

noname#126489
質問者

お礼

再度のご回答ありがとうございます。 早速試してみました!何が起きてるのか理解できました!! Private Sub UserForm_Initialize() と Private Sub cndEntry_Click() で、フォームに入力された文字をセルに反映させたり、逆にセルの文字をフォームに反映させてるということで良いでしょうか。 自分がまずすべき勉強が何なのかも分かった気がします。 そもそも、このようなことをしたいという目的はあっても、そのためにどういった処理が必要なのかということが全く分からない状態でしたので…。 本当にありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (3)

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

こういうのはエクセルVBA入門書籍に書いてあるのと、違った経験による知識が必要。 VBAの文法やメソッドなどを読むだけではダメ。 ーー 全体構想 ロジック プログラム などは、経験もあわせてつむ必要がある。 ーー 質問者が今VBAで質問の本番の処理をするのは早すぎると思う。 ただ有名な型の課題なので解説書でも読むと出くわすかも。 ーー 色んな構想やロジックがあるが、 質問に関して、下記が結論 何千人おろうが (1)フォーム設計は1つ (2)入力が終わったときにクリックするボタンをフォームに設ける。 (3)そのボタンのクリックイベントに(イベントを勉強) (4)直前までのデータの最下行を捉える(良く使うコード) (5)その次の行の対応項目列にフォームのテキストボックス等からデータを持ってくる(代入) (6)フォームのテキストボックス等の内容をクリア(次の人に備える) 次の人の入力場面に入る。 ーー >入力フォームで入力した内容がシートにリストとなって表示されていますが、いくつかの条件をもとにそれに合う人を抽出する場合、VLOOKUPが使われることが多いと思いますが、これも「検索フォーム」のようなもので、条件を入力(もしくはプルダウンリストから選ぶ等)して表示させることは可能ですか 可能です。検索のマクロの記録を採って考えたら。

noname#126489
質問者

お礼

ご回答ありがとうございます。お礼が遅くなり申し訳ありません。 VBAは本を読むだけでは得られないものがたくさんあるのですね。奥が深いです。仕事ではなく(仕事は全くの異業種)プライベートな部分で製作しているので、時間をかけつつ理解を深めていきたいと思います。 ご回答いただいた方法を一つずつ勉強し、理解しながらやってみます。

すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

>A3のセルはID:002のフォームが出るように、手作業で入力していかないといけないのでしょうか。(入力フォームを人数分用意しないといけないでしょうか) いやいや、そんな必要はありません。 >IDのセルをダブルクリックすると、そのIDの人の入力フォーム(姓名、所属、性別等)が出るようにしています。 現在の入力フォームはどうなっているのでしょうか。多分、ダブルクリックしたセルの行番号で姓名や所属を表示させているのでは? 一例ですが、 ユーザーフォームに Private Sub UserForm_Initialize() GYOU = ActiveCell.Row TextBox1.Value = Cells(GYOU, 1).Value TextBox2.Value = Cells(GYOU, 2).Value TextBox3.Value = Cells(GYOU, 3).Value TextBox4.Value = Cells(GYOU, 4).Value TextBox5.Value = Cells(GYOU, 5).Value End Sub UserForm_Initialize() はフォームを開いたときに実行される(イベント) GYOU = ActiveCell.Row はアクティヴなセルの行番号ですので、ダブルクリックしたセルの行番号 TextBox1.Value = Cells(GYOU, 1).Value で必要な内容がそれぞれのテキストボックスに入ると思います。 現状、どのようなVBAで実行されているのか、質問者が作成されたのか 質問者のVBAのレベルは?なので・・・

noname#126489
質問者

お礼

ご回答ありがとうございます。お礼が遅くなり申し訳ありません。エクセルは色々と奥が深いですね。 VBAに関しては本当に初心者中の初心者でして、「作ってみよう!」的なお手本を見ながらフォームを作っている…という感じです。 現在は Private Sub cndEntry_Click() Range("A1").Value = txt1.Value Range("B1").Value = Txt2.Value End Sub このような感じでフォームに入力ボタンをつけ、それをクリックしたら特定のセルに書き込める…という感じでフォームを作ったのですが、これじゃそのセルに入力するだけしか出来ないなと思いまして…。 ダブルクリックでこのフォームを表示させることまでは出来たのですが、違うなぁ…と。 まだ回答いただいた内容も完全に理解できておりませんので、改めて時間をかけて理解していきたいと思います。

すると、全ての回答が全文表示されます。
  • Randomize
  • ベストアンサー率70% (38/54)
回答No.1

はじめまして。 まず結論から言いますと、VBAを使えばほぼ何でも出来ます。今回の質問の件も容易に実現できます。しかし、プログラムへの理解もですが、アルゴリズムや手法を組み上げる技量のほうが強く求められるでしょう。 motaunさんは複数人登録した場合、その人数分のフォームを用意しなければいけないのでしょうかと書いてますが、発想を変えて1個の入力/表示フォームだけ用意してそのフォームを表示するまでにフォームの中身を書き換えてしまうという考え方もあります。そうすると何人に増えてもフォームは1個だけで済みますよね。 本来であればフォームモジュールにPublic Subプロシージャで中身を書き換える部分を作成するのがセオリーでしょうが、初心者とのことなので付け焼刃なマクロに仕上がってしまうでしょうがあえて細かくは言いません。 しかし、手順としましては Load UserForm1 '入力フォームを作ったユーザーフォームをロードする 'フォームの各欄の中身を書き換える With ThisWorkBook.Sheets("一覧表") '一覧の書いてあるシート名 txtID.Text = .Cells([Row],[Column]).Value txtSei.Text = .Cells([Row],[Column]).Value '・・・・・・以下同じように表示する項目の数分繰り返してください End With UserForm1.Show 1 という風になります。[Row][Column]は該当の行番号列番号に書き換えてくださいね Loadだけではフォームはロードされるけれど表示はされません。そしてShowが呼び出された時点でフォームは表示されます。なので、LoadからShowの間に中身を書き換えてその人の情報が書かれたフォームのように見せかけるのです。Showのあとに1がついているため、Showされたらそのフォームを閉じるまでShowのあとのマクロは実行されないので注意してくださいね。 続いて、検索条件で検索ですが、これもVBAで実現可能です。しかし、組み方によってはいろいろ面白いことも出来ます。Like演算子を用いればワイルドカードを用いた合致非合致の判断が出来ます。これも手法の組みようなのですが、1000人程度でしたら、条件を入力するとリアルタイムに絞り込まれた結果が合致一覧に表示されるといった芸当も可能です。Findというキーワードで検索するといいでしょう。(Excelの関数でないほうのFindです) ちなみに、よくある初心者の落とし穴にSelectとSelectionの多用があります。本来Selectionを使わなくても値を入力したり取り出したり色をつけるなどは容易に可能ですが勘違いしてしまう人が非常に多いです。なので、Rangeオブジェクトについてよく理解することをお勧めします。

noname#126489
質問者

お礼

ご回答ありがとうございます。お礼が遅くなり申し訳ありません。 プログラムを理解するだけではないのですね。奥が深いです。 まだ本当に初心者で、1つ1つ理解しながら進めているところですので、回答いただいた内容を全部は理解できないのですが、何度も読み返しながら理解していこうと思います。 質問しなければ、云々悩んだ挙句、膨大なフォームを製作してしまうところでした。 回答いただいたキーワードを完全に理解するところから始めたいと思います。

すると、全ての回答が全文表示されます。

関連するQ&A