
今回初めてマクロを使って入力フォームを作った初心者です。
教えてください。
TextBox1 お客様番号
TextBox2 お客様氏名
TextBox3 住所
TextBox1にお客様番号を入れると別シートのデータから ”TextBox2 お客様氏名”と
”TextBox3 住所”が反映されるような設定にしたいです。
また、お客様番号を入れて修正ボタンを押すと入力された内容が表示され修正が出来る設定にしたいです。
登録ボタンへのコードは下記の内容になります。
Private Sub CommandButton1_Click()
'登録ボタンをクリックしたときの処理
Dim LastRow As Long
Dim MyOpt As String
Dim i As Long
'ユーザーフォームの内容をExcelに転記
With Worksheets("接点記録")
'最終行にプラス1
LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(LastRow, 2).Value = Me.TextBox1.Text
.Cells(LastRow, 3).Value = Me.TextBox2.Text
.Cells(LastRow, 4).Value = Me.TextBox3.Text
.Cells(LastRow, 5).Value = Me.TextBox4.Text
.Cells(LastRow, 6).Value = Me.ComboBox1.Text
.Cells(LastRow, 7).Value = Me.TextBox6.Text
.Cells(LastRow, 8).Value = Me.TextBox7.Text
.Cells(LastRow, 9).Value = Me.TextBox8.Text
.Cells(LastRow, 10).Value = Me.TextBox9.Text
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
ComboBox1.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
End With
End Sub
ご教示よろしくお願いいたします。
No.10ベストアンサー
- 回答日時:
下記URLにアップしました。
https://ideone.com/9qF2Ze
使用上の注意
1.見積の項目ですが、こちらで暫定的に登録しておきました。
Me.ComboBox1.AddItem ("comb1")等
UserForm_Initializeのコンボボックスの登録内容をあなたの環境に合わせて、適切に設定してください。
2.お客様番号が0始まりがあるので、
フォーム上で01234567を登録すると、シート上には1234567と登録され、前0がなくなってしまします。
これを防止するために、シートのB列全体を選択し、セルの書式設定で文字列を選択してください。
そうすると、前0が保持されます。
今後の課題
1.入力項目のチェックは、お客様番号のみ行っています。
他の項目は、行っていません。もし、必要であれば、あなたが追加してください。
もし、追加の方法が判らない場合は、その旨補足してください。
2.検索について
現在は、お客様番号に一致するデータのみの検索だけですが、
①お客様番号にワイルドカードを指定しての検索
例 123456** (先頭の6文字が123456の番号)
例 ****1234 (最後の4字が1234の番号)
②お客様氏名を指定の検索(ワイルドカードも含む)
などが必要になるかもしれません。
もし、そのような要望があれば、その旨補足してください。
本当にご丁寧に教えていただきありがとうございました。
心から感謝いたします!!
今からお伝えいただいた事に沿ってやってみます!!
貴重なお時間を本当にありがとうございました!!
またお世話になるかもしれません…その際はよろしくお願いいたします。
No.9
- 回答日時:
補足ありがとうございました。
あなたのほうで処理の流れが、まだ決まってないということなので、こちらで考えてみました。
添付図のようにしては、いかがでしょうか。、
ボタンは、
上部に
登録、変更、削除、検索 ボタンを配置します。
下部に
保存、削除実行、中止、閉じる ボタンを配置します。
処理の流れです。
1.使用場所番号の入力
2.下記のいずれかのボタンのクリック
2.1.登録ボタンのクリック時
①該当番号が接点記録シートに存在すれば、エラー表示し、1へ戻る。
②該当番号が接点記録シートに存在しなければ、フォームのデータをクリアして、3へ遷移する。
2.2.変更ボタンのクリック時
①該当番号が接点記録シートに存在しなければ、エラー表示し、1へ戻る。
②該当番号が接点記録シートに存在すれば、接点記録シートのデータをフォームのデータへ転記し、3へ遷移する。
2.3.削除ボタンのクリック時
①該当番号が接点記録シートに存在しなければ、エラー表示し、1へ戻る。
②該当番号が接点記録シートに存在すれば、接点記録シートのデータをフォームのデータへ転記し、3へ遷移する。
2.4.検索ボタンのクリック時
①該当番号が接点記録シートに存在しなければ、エラー表示し、1へ戻る。
②該当番号が接点記録シートに存在すれば、接点記録シートのデータをフォームのデータへ転記し、1へ戻る。
3.データの入力
フォーム上の使用者氏名~備考を入力、又は、変更する。
4.下記のいずれかのボタンのクリック
4.1.保存ボタンのクリック時(登録、変更の場合)
①入力されたデータを接点記録シートへ保存する。
②1へ戻る。
4.2.削除実行ボタンのクリック時(削除の場合)
①接点記録シートから該当の番号の行を削除する。
②1へ戻る。
4.3.中止ボタンのクリック時
①1へ戻る。
各ボタンのオブジェクト名は、以下のようにしてください。
登録ボタン:CommandButton登録
変更ボタン:CommandButton変更
削除ボタン:CommandButton削除
保存ボタン:CommandButton保存
削除実行ボタン:CommandButton削除実行
中止ボタン:CommandButton中止
閉じるボタン:CommandButton閉じる
もし、表示を変えたい場合は、Capitionを変えてください。
上記のオブジェクト名でマクロを作成しますので、オブジェクト名は変えないでください。
上記の仕様でいかがでしょうか。

エラー70の表示になってしまって3時間ほど悪戦苦闘しております。
どこから補足質問するのが良いのかも分からず…
何が原因なのか教えて頂きたいです。
No.8
- 回答日時:
補足ありがとうございました。
1.お客様番号が正しいということですが、フォーム上では
使用場所番号になっています。
これは、このままでしょうか。それとも、お客様番号に変えるのでしょうか。
使用者氏名も同様です。お客様氏名にするのでしょうか。それとも、このままでしょうか。
2.担当者欄を追加ということですが、
それを追加したフォームを提示していただけませんでしょうか。
(項番1でお客様番号に修正するなら、それも含めて修正したものを提示してください)
3.現在のフォーム上の項目と接点記録シートの項目の対応は以下になっていると把握しています。
もし、間違いがあれば、指摘してください。また、担当者欄が追加になりますので、
それ追加した場合にどうなるかも、提示してください。
項目 オブジェクト名 シートの列
お客様番号 、TextBox1 B列
お客様氏名 、TextBox2 C列
住所 、TextBox3 D列
訪問日 、TextBox4 E列
見積 、ComboBox1 F列
内容 、TextBox7 G列
成約日 、TextBox8 H列
金額 、TextBox9 I列
備考 、TextBox10 J列
担当者 TextBox? ?列
No.7
- 回答日時:
追加の不明点です。
1.お客様番号と使用場所番号は同じ意味かと思いますが、どちらが正しい用語でしょうか。
2.データの件数は、最大で何件程度になる予定でしょうか。
3.お客様番号は8桁の数字ですが、0から始まる番号もありますか。
例 01234567 等
No.6
- 回答日時:
処理の流れの確認です。
以下の流れであってますか。1.使用場所番号の入力
2.検索ボタンのクリック
3.検索結果の表示
3.1.番号が接点記録シートに存在しない場合
①使用者氏名~備考を全てクリア
②使用者氏名~備考を担当者が入力
③登録ボタンをクリックし、接点記録シートへ登録する。
3.2.番号が接点記録シートに存在する場合
①使用者氏名~備考を接点記録シートから読み出し、フォーム上に表示する。
②使用者氏名~備考の変更箇所を担当者が変更
③XXボタンをクリックし、接点記録シートへ登録する。
不明点:このXXボタンは、登録ボタンでしょうか。それとも変更ボタンでしょうか。
登録ボタンだとすると、検索ボタンはどのような用途を想定していますか。
変更ボタンだとすると、ボタンの位置は、登録ボタンの横の方が判りやすいかと。
ボタンの番号の確認です。
登録ボタン:CommandButton1
検索ボタン:
変更ボタン:
閉じるボタン:
上記のボタンのオブジェクト名が不明です。提示をお願いします。
その他の確認
①通常の運用で、接点記録シートを直接更新することは、ありますか。
(フォームを経由しないでデータを更新するケース。非常時を除きます。)
② ①と関係しますが、見積は、コンボボックスになっています。
検索時、使用者番号が接点記録シートに存在し、見積の内容がXXXの時、
コンボボックスにXXXがあれば、XXXを表示できますが、ない場合は、どうしますか。
・ない旨のエラー表示をする。表示される内容は、XXX以外のものになる。
・XXXをコンボボックスに登録し、XXXを登録する。
等が考えられます。
見積もりの内容を直接書き換えられるとこのケースが発生します。
③ 削除ボタンの登録も考えてますか?
No.5
- 回答日時:
No2です。
直接の回答ではありませんけれど・・・
補足で示されたフォームを見てみると、顧客情報の管理と言うよりも契約情報(?)もセットになっているようですが、これらがデータの1セットになっているのでしょうか?
もしそうなら、同一顧客で複数契約とかもありそうですが、どのようにデータを管理するおつもりなのでしょうか?
それとも、「一顧客、一契約」しかありえないので、重複する可能性は絶対にないような内容になっているということなのでしょうか?
全体像をよくわかっていないので、勝手な想像ですけれど・・
・顧客の基本情報は、「顧客情報」として管理し
・契約情報は「契約情報」として管理する
ような内容のような気もしますけれど・・
そうすると、「契約番号」のようなIDが別に必要になりそうな可能性も・・
※ 上記は内容を把握していない者の勝手なつぶやきですので、読み流してくださって構いません。
No.3
- 回答日時:
>ユーザーフォームを開いて
>TextBox1にお客様番号を入れると氏名と住所が反映されて
TextBox1にお客様番号を入れると、自動的に、お客様番号で
接点記録シートを検索して、氏名と住所を取得し、
それらをTextBox2,TextBox3に設定する、ということですか?
(お客様番号の入力後、どのボタンもクリックしない前提ですか)
No.2
- 回答日時:
こんにちは
>TextBox1にお客様番号を入れると別シートのデータから
>”TextBox2 お客様氏名”と”TextBox3 住所”が
>反映されるような設定にしたいです
新規の登録にも使うボックスなのでしょうから、入力されたら常に「検索-表示」というわけでもないように思われます。
(入力すれば常にそのような処理をするのなら、コントロールのUpdate関連のイベントを利用すれば可能です)
例えば「修正」ボタンを押せば、既存データから検索して反映するようにしておいて・・
>また、お客様番号を入れて修正ボタンを押すと入力された内容が
>表示され修正が出来る設定にしたいです。
「登録」ボタンを押せば、新規、修正共に登録されるようにしておけば良いのではないでしょうか?
テキストボックス等にデータを反映するには、既存データのB列(?)から同じ番号の行を検索して、その行の内容をフォームに表示すれば良いだけです。
(ご提示のコードと、ほぼ逆の処理のような感じ)
新規登録の際に、既存データに上書きしてしまう間違えを防止するのなら、「登録」ボタンを兼用せずに、「新規登録」と「修正登録」のように分けておく方が安全かも知れません。
顧客番号はIDなのでしょうから、(自動付加ではないようですので)新規登録の際には番号が重複していないこと等のチェックも必要なのではないかと推測します。
(新規登録なら、番号は自動付加されるという案もありそうな気がしますが・・)
処理がやや複雑になりますけれど、「修正」で既存データを呼び出した際は、「修正登録」が有効で、「新規登録」ボタンは無効になるようにしておき、更には顧客番号の欄も修正(=入力)不可にしておくとか・・
更には、登録内容の「削除」ボタンも必要なのかもなどと邪推してしまいますが、実際の利用方法の想定がよくわからないので、妄想するのはこのへんで・・
No.1
- 回答日時:
>TextBox1にお客様番号を入れると別シートのデータから ”TextBox2 お客様氏名”と”TextBox3 住所”が反映されるような設定にしたいです。
これは、検索ボタンをクリックした時の、動作でしょうか。
表示するのは、
TextBox2
TextBox3
のみで良いのでしょうか。
TextBox4
CommboBox1
TextBox6~TextBox9は表示しなくて良いのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで指定期間の範囲を抽出し、リストボックスに表示したいです。 2 2021/12/20 23:21
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) VBA コンボボックスの値によってシートを選択するには? 2 2022/02/06 21:57
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Visual Basic(VBA) 【VBA】ユーザーフォーム リストボックスのヘッダー設定方法 2 2021/12/02 11:15
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。 6 2023/03/21 16:12
- Excel(エクセル) エクセルマクロでデータ出力の際の条件がうまく機能しません。 2 2023/09/30 13:01
- Visual Basic(VBA) エクセルマクロで出力行の増やし方がわかりません。 4 2023/09/28 23:40
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
【お題】 『寿司』がテーマの本のタイトルを考えてください
-
あなたの「プチ贅沢」はなんですか?
お仕事や勉強などを頑張った自分へのご褒美としてやっている「プチ贅沢」があったら教えてください。
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
ユーザーフォームで別シートを検索できますか
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
-
4
UserForm1.Showでエラーになります。
工学
-
5
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
6
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
7
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
8
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
9
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
10
Excel VBAのユーザーフォームでVLOOKUP
Visual Basic(VBA)
-
11
ExcelVBAのユーザーフォームで一度保存したデータを同じフォームに呼び出して編集する方法
Visual Basic(VBA)
-
12
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
13
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
14
テキストボックスから、複数のシートに転記する方法・・・
Visual Basic(VBA)
-
15
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
16
ユーザーフォームのラベルに日付を表示させる方法があればお願いします。出来ればコード書いていただけると
Visual Basic(VBA)
-
17
VBA Userformで一部別シートに転記がしたいのですが
Visual Basic(VBA)
-
18
別のシートから値を取得するとき
Visual Basic(VBA)
-
19
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
20
エクセルVBAでUserFormを起動した時
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
フォームの再読み込み
-
Excel VBA Application.caller...
-
[VB.net] ボタン(Flat)のEnable...
-
VBA CommandButtonの文字ずれ
-
プロシージャからイベントをコ...
-
ボタンをマウスで押し続けたと...
-
VBA MsgBoxで、”いいえ(No)”ボ...
-
コマンドボタンの長押し
-
ユーザーフォームに別シートか...
-
VBAのボタンの位置が変わって困...
-
[Excel VBA]コマンドボタンの入...
-
Access VBA でデータペーストを...
-
SPREADコマンドボタン発生イベ...
-
+ボタンの名称は?
-
セルをマクロのボタンにしたい。
-
VB.net でトグルボタンを実現し...
-
VBA ユーザーフォームラベルキ...
-
VB.NETでマウスクリックイベン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
フォームの再読み込み
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
セルをマクロのボタンにしたい。
-
ボタンをマウスで押し続けたと...
-
コマンドボタンやイメージにマ...
-
VBAのボタンの位置が変わって困...
-
Access VBA でデータペーストを...
-
[VB.net] ボタン(Flat)のEnable...
-
VB.net でトグルボタンを実現し...
-
閉じると「+」になり開くと「-...
-
Excel マクロ 閉じるボタン
-
VBAで多数のプログラムを一つの...
-
C#プログラムで、ボタンをショ...
-
ASP.Net ラベルの内容をすぐに...
-
TextBoxでEnterキーを押すと、...
-
アイコンとボタンの違い
おすすめ情報
コメントいただきありがとうございます。
ユーザーフォームを開いて
TextBox1にお客様番号を入れると氏名と住所が反映されて
その他のTextBoxにはお客様の訪問日等の接点情報を入力し登録ボタンで
セルに反映という感じをイメージしております。
コメントありがとうございます。
イメージとしてはユーザーフォームを開いてお客様番号を入力したら
別シートの住所と氏名が反映されて、その他の項目は訪問日などの接点情報を入力して登録したいです。
修正登録ボタン‼そうですね…全くの初心者そこまで知恵が回りませんでした。
顧客番号は8桁の数字になります。
登録内容の削除ボタンも要りますね・・・・ますますハードルがあがってしまいます。
私の質問が言葉足らずで…
はい!それが理想ですが何か他によい方法があればアドバイスお願いいたします‼
あれやこれやと出来ないくせに考えてるうちに分からなくなってきてしまって…
ありがとうございます!!
これでわかりますでしょうか?
コメントいただいていたのに返信が遅くなり大変失礼いたしました。
1、お客様番号が正しいです
2、3000件近くになります
3.0から始まる番号もございます
よろしくお願いいたします。
1.使用場所番号の入力
2.検索ボタンのクリック
3.検索結果の表示
これであってます。
担当者欄を追加しなきゃいけない1と!と気が付きました!
接点記録情報に登録時は接点記録シートから情報を反映させたいです。
修正時は接点記録シートから検索し修正を希望しています。
ボタンの番号の確認です。
登録ボタン:CommandButton1
検索ボタン:CommandButton3
変更ボタン:CommandButton4
閉じるボタン:CommandButton2
①通常の運用で、接点記録シートを直接更新することは、ありますか。
できれば直接入力はNGにしたいです。
②・XXXをコンボボックスに登録し、XXXを登録する。
③ 削除ボタンの登録も考えてますか?
これも必要です!!
※コメントの文字制限があって言いたい事だけ伝えてしまってごめんなさい!
コメントいただいていたのに返信が遅くなり申し訳ございません
同一顧客での複数契約の場合…
1顧客につき1契約なので重複はほとんどない想定です
顧客情報と契約者情報をまとめての管理が希望なんですが、顧客情報は私が入力するのではなく他の者が入力するのでデータ管理を消してしまったりが心配なので別シートで考えております。
契約番号も入力したい所ですが、こちらも各担当者での入力になり契約番号は何万もの種類があるので悩んではいます。
ご連絡ありがとうございます。
お客様番号に変更し担当者をTextBox5のG列に追加いたしました。
お客様番号 、TextBox1 B列
使用者氏名 、TextBox2 C列
住所 、TextBox3 D列
訪問日 、TextBox4 E列
見積 、ComboBox1 F列
担当者 、TextBox5 G列
内容 、TextBox6 H列
成約日 、TextBox7 I列
金額 、TextBox8 J列
備考 、TextBox9 K列
に変更いたいしました。
よろしくお願いいたします。
本当に何度も何度もお付き合いいただきありがとうございます!!!
返信がおそくなり大変失礼いたしました。
ありがとうございます!上記の内容が理想形です!!
まずユーザーフォーム作り直します!!
本当にありがとうございます!!