来訪された方(ゲスト)のデータを入力するのに困っています。
エクセルには、
A列:ゲストの名前
B列:ID(任意)
C列:対応者の名前
D列以降:日付、ゲストの情報、対応内容情報など
が転記されるようにVBAのユーザーフォームで入力フォームを作りました。
しばらくはこのまま使用していましたが、同じゲストに対して数回対応することが多くなりました。
今は、
エクセルの検索機能で名前かIDを検索→
入力フォームを立ち上げて情報を入力しエクセルに転記→
一度フォームを閉じてから再びエクセルで検索をする→
入力フォームを立ち上げて情報を入力→
と続けており、かなり面倒です。
そこで、入力フォーム上で名前もしくはIDの検索をできるようにするVBAプログラムを教えていただけないでしょうか?
・たとえば「鈴木」と検索したら「鈴木Aさん」「鈴木Bさん」「鈴木Cさん」が候補として表示される。
・その候補名と一緒、それぞれのIDも同時に表示される。
・いずれかの「鈴木さん」を選んだら、ユーザーフォーム上のテキストボックス「name」と「id」に選んだ「鈴木さん」が入力される。
<できれば>
・候補名とIDのセットが重複していた場合は、1組だけ候補に表示されるプログラム
→同じゲストの数回分のデータが入力されているため
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
質問を拝見してみて
別途、IDと名前のシートは準備されていないということでしょうか。
まずは、こちらを準備した方が良いでしょう。
現在あるデータの名前とIDの列を別のシートへコピー
エクセルのデータのリボンの中央近くに、重複の削除がありますので
クリックすれば重複が削除されます。
そのあとに名前順、或いはID順に並び替えておいて
ユーザーフォームで名前を選択する際には、Comboboxにしておき
ドロップダウンのリストから名前を選択するようにすれば如何でしょうか。
但し、同性同名の方も考慮すると
会員カードを配布するなどして、最初に IDが分かるようにした方が
良いと思います。
一例ですが、
別シート上に、Vlookup関数でIDに対して名前など表示されるセルを準備しておく。
Combobox1にIDを入力
Combobox1_Change()
Vlookup関数の検索値を入れているセル=Combobox1.Value
Textbox1"名前を表示させるテキストボックス Or Label=Vlookup関数を入れてあるセル
とかすれば、自動で選択したIDに対しての名前など情報が次にテキストボックスなどに
引っ張って来れます。
ご回答ありがとうございます。
別シートに名簿は作っていません。
PCの操作に疎い人もいるので、データ入力フォームを作りました。
元のシートから別のシートに名前とIDが反映されるようにして、http://vlookup.skr.jp/excel_jyuuhuku_sakujyo.htmlを参考にして重複した名前とIDを削除するように関数を組むと、入力したデータを転記する度に関数の計算をするようで、転記に時間がかかるようになりました(1秒→10秒弱)。
そこで、時間がかかるのは必要な時(検索する必要がある時)だけにしたいと思って質問をしました。
また、データシート上で検索するセルを配置するのは、ユーザーフォーム開きながらセルの操作ができないので、ユーザーフォームを開いたり閉じたりする作業が入ってしまいます。
ユーザーフォーム上で、データを入力しつつ検索できれば良いなと思っています。
言葉足らずですいませんでした。
No.2
- 回答日時:
とりあえず、逃げ案ですが
>ユーザーフォーム開きながらセルの操作ができないので
ユーザーフォームを開くときに
Userform1.Show vbmodeless
と最後に vbmodeless を付けてみてください。
ユーザーフォームが開いた状態で、シートの操作が出来ます。
しかし、この方法は、パソコンに疎い方にとって便利かどうかが?です。
ちなみに、初めての方なのか、既に登録がある方なのかの判断は?
基本的な業務の流れですが。
新規の顧客の場合
名簿に登録(関数ではなく、きちんと顧客管理の名簿を作る)
*来場者のデータから顧客リストを作るのでなく
来客時に、IDで確認して、日々の来場者登録を行う。
エクセルで入力する際には、名簿のデータを活用する。
この作業の流れになるようにしましょう。
hallo-2007 さん
ご回答ありがとうございました。
vbmodelessをつけるだけで、格段に使いやすくなりました。
検索は、
http://for-guests.com/category/pc/excel-vba
のサイトを元に暫定版を作ることができました。
別シートに名簿一覧を作った方が良いのはよくわかりました。
まだ、同一対象者が全て出てきてしまうので。
そうすると、動作が遅くなるのが困ったところですが。
いずれチャレンジしてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- その他(Microsoft Office) outlookで宛先が異なるメールを一括送信する方法 outlookで200人それぞれをtoに指定し 2 2023/08/03 21:24
- その他(ブラウザ) Mycrosoft Edge フォームの履歴を完全に削除したい 3 2022/08/11 09:59
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
Excel VBA 検索した値を入力フォームに表示
Visual Basic(VBA)
-
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
6
エクセルのマクロで検索・抽出したデータを修正及び更新して元データに反映
Excel(エクセル)
-
7
エクセル 入力フォームのデータを別シートに書き込む
その他(データベース)
-
8
ExcelVBAのユーザーフォームで一度保存したデータを同じフォームに呼び出して編集する方法
Visual Basic(VBA)
-
9
エクセルVBAリストボックスに表示された検索結果をクリックして、該当するセルをアクティブセルにしたい
Excel(エクセル)
-
10
抽出したデータを修正して元のセルに上書きしたい
Access(アクセス)
-
11
Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
数字以外の入力をエラーにする...
-
初歩的な事だと思います。 Sub...
-
テキストボックスの番号を使っ...
-
教えて!全角文字「μ」の半角
-
EXCEL VBA で指定した範囲に入...
-
Excel-VBAでInputBox+Pulldown...
-
入力フォームへ、データを自動...
-
アルファベットGの小文字の入力
-
入力フォームの値をQRコードで...
-
excel vba でユーザーフォーム...
-
c#でTextBoxの入力制限
-
POST時に履歴を残さない方法
-
エディットボックスの入力制限...
-
VBA R1C1形式で変数の入力について
-
VBAで質問があります
-
<input>のstep属性に違反する入...
-
VBAの質問になります メッセー...
-
スマートフォン向けフォームで...
-
DataGridView 列ごとの入力制限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
VBAで質問があります
-
Windowsのアプリ開発ってなんの...
-
Excel-VBAでInputBox+Pulldown...
-
EXCEL VBA で指定した範囲に入...
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
VBAでInputBoxの再入力をさせる...
-
入力フォームの値をQRコードで...
-
excel vba でユーザーフォーム...
-
TextBoxから数字が文字...
-
VBAの質問になります メッセー...
-
DataGridViewの桁数制限に関して
-
accessで該当するレコードがな...
-
c#でTextBoxの入力制限
-
VBA R1C1形式で変数の入力について
-
エディットボックスの入力制限...
-
「イ分」・・・フンという文字...
-
アルファベットGの小文字の入力
おすすめ情報
ご回答ありがとうございます。
別シートに名簿は作っていません。
PCの操作に疎い人もいるので、データ入力フォームを作りました。
元のシートから別のシートに名前とIDが反映されるようにして、http://vlookup.skr.jp/excel_jyuuhuku_sakujyo.htmlを参考にして重複した名前とIDを削除するように関数を組むと、入力したデータを転記する度に関数の計算をするようで、転記に時間がかかるようになりました(1秒→10秒弱)。
そこで、時間がかかるのは必要な時(検索する必要がある時)だけにしたいと思って質問をしました。
また、データシート上で検索するセルを配置するのは、ユーザーフォーム開きながらセルの操作ができないので、ユーザーフォームを開いたり閉じたりする作業が入ってしまいます。
ユーザーフォーム上で、データを入力しつつ検索できれば良いなと思っています。