アプリ版:「スタンプのみでお礼する」機能のリリースについて

来訪された方(ゲスト)のデータを入力するのに困っています。

エクセルには、
A列:ゲストの名前
B列:ID(任意)
C列:対応者の名前
D列以降:日付、ゲストの情報、対応内容情報など
が転記されるようにVBAのユーザーフォームで入力フォームを作りました。

しばらくはこのまま使用していましたが、同じゲストに対して数回対応することが多くなりました。
今は、
エクセルの検索機能で名前かIDを検索→
入力フォームを立ち上げて情報を入力しエクセルに転記→
一度フォームを閉じてから再びエクセルで検索をする→
入力フォームを立ち上げて情報を入力→
と続けており、かなり面倒です。


そこで、入力フォーム上で名前もしくはIDの検索をできるようにするVBAプログラムを教えていただけないでしょうか?

・たとえば「鈴木」と検索したら「鈴木Aさん」「鈴木Bさん」「鈴木Cさん」が候補として表示される。
・その候補名と一緒、それぞれのIDも同時に表示される。
・いずれかの「鈴木さん」を選んだら、ユーザーフォーム上のテキストボックス「name」と「id」に選んだ「鈴木さん」が入力される。
<できれば>
・候補名とIDのセットが重複していた場合は、1組だけ候補に表示されるプログラム
→同じゲストの数回分のデータが入力されているため

よろしくお願いいたします。

質問者からの補足コメント

  • ご回答ありがとうございます。

    別シートに名簿は作っていません。
    PCの操作に疎い人もいるので、データ入力フォームを作りました。
    元のシートから別のシートに名前とIDが反映されるようにして、http://vlookup.skr.jp/excel_jyuuhuku_sakujyo.htmlを参考にして重複した名前とIDを削除するように関数を組むと、入力したデータを転記する度に関数の計算をするようで、転記に時間がかかるようになりました(1秒→10秒弱)。

    そこで、時間がかかるのは必要な時(検索する必要がある時)だけにしたいと思って質問をしました。
    また、データシート上で検索するセルを配置するのは、ユーザーフォーム開きながらセルの操作ができないので、ユーザーフォームを開いたり閉じたりする作業が入ってしまいます。
    ユーザーフォーム上で、データを入力しつつ検索できれば良いなと思っています。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/04/13 13:29

A 回答 (2件)

質問を拝見してみて


別途、IDと名前のシートは準備されていないということでしょうか。
まずは、こちらを準備した方が良いでしょう。
現在あるデータの名前とIDの列を別のシートへコピー
エクセルのデータのリボンの中央近くに、重複の削除がありますので
クリックすれば重複が削除されます。
そのあとに名前順、或いはID順に並び替えておいて
ユーザーフォームで名前を選択する際には、Comboboxにしておき
ドロップダウンのリストから名前を選択するようにすれば如何でしょうか。
但し、同性同名の方も考慮すると
会員カードを配布するなどして、最初に IDが分かるようにした方が
良いと思います。

一例ですが、
別シート上に、Vlookup関数でIDに対して名前など表示されるセルを準備しておく。
Combobox1にIDを入力
Combobox1_Change()
Vlookup関数の検索値を入れているセル=Combobox1.Value
Textbox1"名前を表示させるテキストボックス Or Label=Vlookup関数を入れてあるセル


とかすれば、自動で選択したIDに対しての名前など情報が次にテキストボックスなどに
引っ張って来れます。
この回答への補足あり
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

別シートに名簿は作っていません。
PCの操作に疎い人もいるので、データ入力フォームを作りました。
元のシートから別のシートに名前とIDが反映されるようにして、http://vlookup.skr.jp/excel_jyuuhuku_sakujyo.htmlを参考にして重複した名前とIDを削除するように関数を組むと、入力したデータを転記する度に関数の計算をするようで、転記に時間がかかるようになりました(1秒→10秒弱)。

そこで、時間がかかるのは必要な時(検索する必要がある時)だけにしたいと思って質問をしました。
また、データシート上で検索するセルを配置するのは、ユーザーフォーム開きながらセルの操作ができないので、ユーザーフォームを開いたり閉じたりする作業が入ってしまいます。
ユーザーフォーム上で、データを入力しつつ検索できれば良いなと思っています。

言葉足らずですいませんでした。

お礼日時:2015/04/13 14:47

とりあえず、逃げ案ですが


>ユーザーフォーム開きながらセルの操作ができないので
ユーザーフォームを開くときに
Userform1.Show vbmodeless
と最後に vbmodeless を付けてみてください。
ユーザーフォームが開いた状態で、シートの操作が出来ます。
しかし、この方法は、パソコンに疎い方にとって便利かどうかが?です。

ちなみに、初めての方なのか、既に登録がある方なのかの判断は?
基本的な業務の流れですが。
新規の顧客の場合
名簿に登録(関数ではなく、きちんと顧客管理の名簿を作る)
*来場者のデータから顧客リストを作るのでなく
来客時に、IDで確認して、日々の来場者登録を行う。
エクセルで入力する際には、名簿のデータを活用する。
この作業の流れになるようにしましょう。
    • good
    • 1
この回答へのお礼

hallo-2007 さん

ご回答ありがとうございました。
vbmodelessをつけるだけで、格段に使いやすくなりました。

検索は、
http://for-guests.com/category/pc/excel-vba
のサイトを元に暫定版を作ることができました。

別シートに名簿一覧を作った方が良いのはよくわかりました。
まだ、同一対象者が全て出てきてしまうので。
そうすると、動作が遅くなるのが困ったところですが。

いずれチャレンジしてみます。

ありがとうございました。

お礼日時:2015/04/23 09:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています