今回初めてマクロを使って入力フォームを作った初心者です。
教えてください。
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も見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
ちょっと先の未来クイズ第6問
2025年1月2日と1月3日に行われる、第101回箱根駅伝(東京箱根間往復大学駅伝競走)で、上位3位に入賞するチームはどこでしょう?
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
ユーザーフォームで別シートを検索できますか
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
-
4
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
5
UserForm1.Showでエラーになります。
工学
-
6
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
7
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
8
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
9
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
10
VBA Userformで一部別シートに転記がしたいのですが
Visual Basic(VBA)
-
11
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
12
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
Excel VBAのユーザーフォームでVLOOKUP
Visual Basic(VBA)
-
15
任意で選択したセルをテキストボックスに表示
Excel(エクセル)
-
16
テキストボックスから、複数のシートに転記する方法・・・
Visual Basic(VBA)
-
17
ExcelVBAのユーザーフォームで一度保存したデータを同じフォームに呼び出して編集する方法
Visual Basic(VBA)
-
18
ユーザーフォームのラベルに日付を表示させる方法があればお願いします。出来ればコード書いていただけると
Visual Basic(VBA)
-
19
別のシートから値を取得するとき
Visual Basic(VBA)
-
20
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ボタンをマウスで押し続けたと...
-
VBA CommandButtonの文字ずれ
-
フォームの再読み込み
-
VBAで多数のプログラムを一つの...
-
セルをマクロのボタンにしたい。
-
excel シート上のボタンが動かない
-
閉じると「+」になり開くと「-...
-
VBA IE ダウンロード ダイアロ...
-
他フォームのクリックイベント取得
-
他のアプリケーションとの連携
-
VBAのボタンの位置が変わって困...
-
ASP.Net ラベルの内容をすぐに...
-
C#プログラムで、ボタンをショ...
-
[VB.net] ボタン(Flat)のEnable...
-
コマンドボタンやイメージにマ...
-
Excel VBA Application.caller...
-
TextBoxでEnterキーを押すと、...
-
ユーザーフォームに別シートか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
フォームの再読み込み
-
VBA CommandButtonの文字ずれ
-
閉じると「+」になり開くと「-...
-
コマンドボタンやイメージにマ...
-
セルをマクロのボタンにしたい。
-
Excel VBA Application.caller...
-
VB.net でトグルボタンを実現し...
-
C#プログラムで、ボタンをショ...
-
VBAのボタンの位置が変わって困...
-
プロシージャからイベントをコ...
-
ボタンをマウスで押し続けたと...
-
Excel マクロ 閉じるボタン
-
VBAで多数のプログラムを一つの...
-
VBA IE ダウンロード ダイアロ...
-
Access VBA でデータペーストを...
-
バックスペース機能の作り方
-
[Excel VBA]コマンドボタンの入...
おすすめ情報
コメントいただきありがとうございます。
ユーザーフォームを開いて
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列
に変更いたいしました。
よろしくお願いいたします。
本当に何度も何度もお付き合いいただきありがとうございます!!!
返信がおそくなり大変失礼いたしました。
ありがとうございます!上記の内容が理想形です!!
まずユーザーフォーム作り直します!!
本当にありがとうございます!!