Why not register and get more from Qiita? 住所録リストを作成した後に、特定の人を探したり修正するのって意外と面倒ですよね。探すのが大変なので一発検索・修正・上書きができる修正フォームをエクセルで作ったので、作業効率化できるのでマネして取り入れてみてはいかがですか? しかし、郵便番号、都道府県、市区町村、町域、丁目番地、建物名、号室…などと、入力量のボリュームが比較的大きいために、ユーザーの負担は大きくなりがちです。, 本日は、そんな住所入力に関するフォームの改善ポイントについて紹介していきます。(※日本の住所に限って説明します), もはや説明不要かもしれませんが、ユーザーが入力した郵便番号のデータから、対応する都道府県や市区町村の値を自動的に割り出し、入力欄へ挿入する機能です。, この機能はいまでは多くのフォームが採用しており、もはやユーザーにとってはついていて当たり前の機能です。必ず導入するようにしたいですね。, 便利な住所自動入力。よりユーザーの手間を減らすためには、郵便番号入力直後に自動的に入力させることががおすすめです。, この形であれば、「住所検索」などのボタンを押下する手間や、リロード時のストレスを感じることなく住所の自動入力を実現させることができます。, 入力フォーマットの条件は入力の前に把握できるように表記しておくことや、入力例をあらかじめ表示しておくなど、ユーザーがミスしないように工夫することが肝心です。, または、IMEモードを英数字に固定しておく、全角で入力があっても半角に自動変換するなどの機能も有効でしょう。, 引っ越したばかりの場合など、自分の住所の郵便番号がわからないケースもあります。こういったユーザーに対する配慮があるとさらに親切です。, 代表的な施策としては、日本郵政の郵便番号検索ページ(http://www.post.japanpost.jp/zipcode/)へリンクを貼る方法があります。 Copyright © 2006-2016 f-code, Inc. All Rights Reserved. 具体的にどちらにどこまで入力すれば良いのかユーザーは迷ってしまいますよね。, ラベルは「市区町村」「丁目」「番地」「建物名」「号室」などと具体的な内容にしたいところ。 ?プレースホルダーの落とし穴と、正しく使う為の4つのポイント, 勝手にEFO比較分析【snowpeak x coleman】(アウトドアブランドEC会員登録フォーム編). UI改善の基本施策を簡単に実施できる「エフトラEFO」「エフトラCTA」を開発しています。, ブログの更新情報やセミナーのお知らせなど、UI改善に関する情報を1~2週間に1回お届けします。, フォームの住所入力欄で気をつけたいEFOポイント7つ | EFO・フォーム改善ブログ https://t.co/3yqEsw0MHz, “フォームの住所入力欄で気をつけたいEFOポイント7つ | EFO・フォーム改善ブログ” http://t.co/ozfqsjTBIz #ディレクション, EFO(エントリーフォーム最適化)は特にスマホで重要になってきます。基本的なところは身につけておきたいですね。, https://t.co/FX1wfLsqN9 http://t.co/XALU6FSjq2, //php _e( 'Comments are closed.' スポンサーリンク 住所入力・電話番号入力フォームを作ったときのあれこれ。 郵便番号から住所を補完する Ajaxzip3 をありがたく使わせていただきましょう。 都道府県の並びとグルーピング 世の中には「 県は××県より上だ … 株式会社エフ・コードのマーケティングテクノロジーブランド「f-tra(エフトラ)」。現在は入力フォーム最適化(EFO)を簡単に実施できる「f-traEFO」と、ユーザーの行動喚起を促すためのUI検証する「f-traCTA」の2種類のUI改善ツールを提供しています。, EFOに関する講演、雑誌への寄稿、出版、取材などのご依頼は、弊社のお問合せフォームより承っております。お気軽にお問合せくださいませ。, あのサイトも陥っていた! (adsbygoogle = window.adsbygoogle || []).push({}); エクセルで住所録などを入力や修正するのに探すのって面倒ですよね?ユーザーフォームを使えば一瞬で検索・修正ができるのに、使わないなんて損していると思いませんか?, ユーザーフォームって自分で使うとエラーにならないのに、他人が使うとエラーが出る。それは意図しない操作をされるからなので、メッセージを出してエラーにならないようにする簡単な方法, エクセルで操作をしたらメッセージを表示させる時に「はい」「いいえ」を選択させて、それぞれ処理を振り分けたくなりませんか?さらにメッセージ画面のアイコンも×印やビックリマークなど変更しませんか?さらにMicrosoft Excelの部分を好きなタイトル変更、メッセージ改行も!, ユーザーフォームに配置したコマンドボタンを押すと様々な作業を自動で行ってくれるVBA。とっても便利で仕事の作業効率化ができるのですが、押すたびに画面が切り替わっては、目障りですよね。たった1行加えるだけでちらつき防止できるのでぜひマネして取り入れてみてはいかがですか?, ワークシートの特定のセルの値をユーザーフォームに配置したテキストボックスに転記するならば簡単なのですが、複数の数になると同じようなVBAコードを書くのは面倒ではないですか?それならば、まとめて威喝して転記する処理をすれば簡単になりますよね。, 住所録や成績表など表の中から"男"だけリストアップして一覧表を作りたいと思いませんか?エクセルのフィルター機能をコマンドボタン1回でできたら便利だと思いませんか?, エクセルファイルを開いた時に自動的に指定したユーザーフォームが表示されると便利ですね。ちょっとしたことなのですが、手間が省けるので仕事の作業効率化になりますので、ぜひマネして取り入れてみてはいかがですか?, 日本人って思う瞬間は2020年じゃなくて令和2年。だけどエクセルで住所録や顧客管理の時って和暦ちょっと大変だから西暦で管理したいですよね。和暦を西暦に一瞬で変換出来たら作業時間が1秒になりました。, ちょっとの工夫でエクセル作業が飛躍的に早く終わったらいいなあ~と思いませんか? 面倒くさい作業よ!さようなら!. このページは「エクセルVBAで住所録入力フォームを作る」ページの続きとなり、入力データの修正に関するページとなります。, いちいち画面スクロールして目的の顧客を探して、見つけたら修正してまた戻るって作業は時間の無駄なので、ユーザーフォームを使って一瞬で終わらせてしまいましょう。, 前ページでも見ていただいた住所録フォーム、以前は新規登録フォームと修正フォームを別々にしていたのですが、多少経験値が上がったのかな?まとめることが出来たので、新しくこのページも修正していきます。, 基本的に新規登録と修正登録の操作方法を同じにして、未登録番号ならば新規登録ができるようになり、登録済み番号ならば既存データを探して見つけたらフォーム上に自動表示されて確認・修正をして修正登録ボタンを押せば、データが元の場所に上書きされるようになっています。, ボタンを1回押すだけでこれだけの作業を一瞬で行ってくれるので、探す手間もなくなりますので仕事作業の効率が大幅にアップしますよ!, 新規登録ボタン同様に、顧客番号を入力するテキストボックス(TextBox1)に顧客番号を入力して顧客番号確定ボタン(CommandButton1)を押すのが当たり前なのですが、うっかりテキストボックスに何も入力しないで押してしまった時に、メッセージを表示してあげると親切ですし、誤った操作という事をお知らせできるので設定することをおススメします。, If UserForm1.TextBox1 = “” ThenMsgBox (“会員番号が未入力です”), 顧客番号がTextBox1に入力されて顧客番号確定ボタンを押したら、登録済み番号の時は自動的に番号に該当する名前などの住所録データが自動的に各テキストボックスに表示されます。, 修正を加えたら修正登録ボタンを押すとメッセージで「修正しますか?」と表示されるので「はい」「いいえ」を選択できるようにして、確認できるようにします。, msg = MsgBox(“修正登録しますか?”, Buttons:=vbYesNo + vbExclamation), エクセル住所録で一番面倒で時間と手間のかかる引っ越しなどで住所が変わった時に、修正しますが住所録リストの中から該当者を探して書き換える作業です。, 実は、顧客番号確定ボタンを押した時にカーソルが見えないところで入力した顧客番号の位置に移動しています。, そして現在のカーソルの位置を”ActiveCell“とVBAコードでは表し、ActiveCellを基準にセルの位置と入力データのやり取りを行い、ActiveCell.Offset(,1)で1列右のセルを意味しています。, If msg = vbYes ThenActiveCell.Offset(, 1).Value = UserForm1.TextBox2.ValueActiveCell.Offset(, 2).Value = UserForm1.TextBox3.ValueActiveCell.Offset(, 3).Value = UserForm1.TextBox4.ValueActiveCell.Offset(, 4).Value = UserForm1.TextBox5.ValueActiveCell.Offset(, 5).Value = UserForm1.TextBox6.ValueActiveCell.Offset(, 6).Value = UserForm1.TextBox7.ValueActiveCell.Offset(, 7).Value = UserForm1.TextBox8.ValueIf OptionButton4.Value = True ThenActiveCell.Offset(, 9).Value = “男”ElseIf OptionButton5.Value = True ThenActiveCell.Offset(, 9).Value = “女”End IfEnd If, データの確認だけで修正箇所が無い場合などは「いいえ」を選んだら住所録フォームを閉じて、メインメニューに必要なデータを読み込んでメインメニューを開きます。, Unload UserForm1UserForm4.Label1.Caption = Range(“P2”).ValueUserForm4.TextBox1.Value = Range(“S2”).ValueUserForm4.TextBox2.Value = Range(“T2”).ValueUserForm4.Show, 顧客番号確定ボタンを押すと、ここまで記載した処理を順番に一瞬で行ってくれるのですが、その処理の度にカーソルが処理をしているセルの位置に実際は移動しています。, そこでちらつき防止処理するVBAコード” Application.ScreenUpdating ”の前後に入れましょう。, これで顧客番号確定ボタンのVBAコードの設定が終わりました。 下記が実際のVBAコードで、コピペして使っていただいても構いませんよ, Private Sub CommandButton3_Click()Application.ScreenUpdating = FalseIf UserForm1.TextBox1 = “” ThenMsgBox (“会員番号が未入力です”)Elsemsg = MsgBox(“修正登録しますか?”, Buttons:=vbYesNo + vbExclamation)If msg = vbYes ThenActiveCell.Offset(, 1).Value = UserForm1.TextBox2.ValueActiveCell.Offset(, 2).Value = UserForm1.TextBox3.ValueActiveCell.Offset(, 3).Value = UserForm1.TextBox4.ValueActiveCell.Offset(, 4).Value = UserForm1.TextBox5.ValueActiveCell.Offset(, 5).Value = UserForm1.TextBox6.ValueActiveCell.Offset(, 6).Value = UserForm1.TextBox7.ValueActiveCell.Offset(, 7).Value = UserForm1.TextBox8.ValueIf OptionButton4.Value = True ThenActiveCell.Offset(, 9).Value = “男”ElseIf OptionButton5.Value = True ThenActiveCell.Offset(, 9).Value = “女”End IfEnd IfEnd IfUnload UserForm1UserForm4.Label1.Caption = Range(“P2”).ValueUserForm4.TextBox1.Value = Range(“S2”).ValueUserForm4.TextBox2.Value = Range(“T2”).ValueUserForm4.ShowApplication.ScreenUpdating = TrueEnd Sub, エクセルの検索機能と言えば、ワークシート上でctrl+Fでこのような画面が表示されます。, この機能を使えば、わざわざExcel-VBAを使って検索をしなくてもいいのですが、住所録のデータが入っているセルを直接触るようになるので、計算式が入っているセルを誤って消してしまったりするリスクがあります。, そのリスクを避けるためにExcel-VBAを使った検索機能と登録修正を組み合わせた方が安全です, 顧客番号検索フレーム内のテキストボックス(TextBox12)に電話番号を入力して電話番号検索ボタンを押したら、住所録リストを検索して見つけたら検索結果表示をするようにしましょう。, 修正登録ボタン同様に、電話番号を入力するテキストボックス(TextBox12)に電話番号を入力して電話番号検索ボタン(CommandButton6)を押すのが当たり前なのですが、うっかりテキストボックスに何も入力しないで押してしまった時に、メッセージを表示してあげると親切ですし、誤った操作という事をお知らせできるので設定することをおススメします。, If UserForm1.TextBox12 = “” ThenMsgBox (“電話番号が入力されていません”), TextBox12に入力された電話番号をセルR12へ転記することで、R12に記載された電話番号をFindメソッドを使って、探し出せるようにします。, Range(“R12”).Value = UserForm1.TextBox12.Value, 住所録で電話番号が入力されているのはAH列なので、ここでは2行目から1000行目までを検索範囲とし、同じ条件でデータ続けて検索するにはFindNextメソッドを使います。, 本来、電話番号なので同一番号がないと思ってFindメソッドを使っていましたが、ご家族などで固定電話番号で複数人登録されて、検索できなかったので繰り返し処理を行うFindNextメソッドを使う方が間違えないです。, 検索して該当した電話番号から、顧客番号と名前をセルBG列・BH列にリストアップする。, Dim myRange As Range, meRange As Range, myAddress As String, i As IntegerSet meRange = Range(“AH2:AH1000”)Set myRange = meRange.Find(What:=Range(“R12”).Value, LookIn:=xlValues)If Not myRange Is Nothing ThenmyAddress = myRange.Addressi = 2DoCells(i, “BG”).Value = myRange.Offset(, -6).ValueCells(i, “BH”).Value = myRange.Offset(, -5).ValueSet myRange = meRange.FindNext(After:=myRange)i = i + 1Loop Until myRange.Address = myAddress, 見つけた電話番号のセルの位置にカーソルが移動し(myRange)-6なので左へ6列目のセルの値(顧客番号)をBG列の2行目から順に、-5なので左へ5列目のセルの値(名前)をBH列の2行目から順にリストアップします。, 表示方法はユーザーフォームに配置したLabelの名前(Caption)を書き換える方法です。, For j = 1 To 20With UserForm2.Controls(“Label” & j).Caption = Cells(j + 1, 59).ValueEnd WithWith UserForm2.Controls(“Label” & j + 20).Caption = Cells(j + 1, 60).ValueEnd WithNext j, ここでは最大20名分をリストアップ可能にしたので変数jは1~20となり、ラベルの数は顧客番号が1~20で名前が21~40を使用するのでj+20となります。, また取得するセル番地はj+1で2行目の59列目(BG列)、60列目(BH列)となります。, 検索によりリストアップされた顧客番号と名前が読み込まれてからこのフォームは表示され、住所録入力フォームは閉じられてフォームの切り替えが行われます。, このフォームに表示された顧客番号をクリックすると顧客番号が入力された状態で住所録入力フォームに切り替わります。, リストアップが終わり、UserForm2にデータは引き継がれたのでセルを空欄に戻しておくことも忘れずに行います。, 電話番号検索ボタンを押すと、ここまで記載した処理を順番に一瞬で行ってくれるのですが、その処理の度にカーソルが処理をしているセルの位置に実際は移動しています。, Private Sub CommandButton6_Click()Application.ScreenUpdating = FalseIf UserForm1.TextBox12 = “” ThenMsgBox (“電話番号が入力されていません”)ElseRange(“R12”).Value = UserForm1.TextBox12.ValueDim myRange As Range, meRange As Range, myAddress As String, i As IntegerSet meRange = Range(“AH2:AH1000”)Set myRange = meRange.Find(What:=Range(“R12”).Value, LookIn:=xlValues)If Not myRange Is Nothing ThenmyAddress = myRange.Addressi = 2DoCells(i, “BG”).Value = myRange.Offset(, -6).ValueCells(i, “BH”).Value = myRange.Offset(, -5).ValueSet myRange = meRange.FindNext(After:=myRange)i = i + 1Loop Until myRange.Address = myAddressFor j = 1 To 20With UserForm2.Controls(“Label” & j).Caption = Cells(j + 1, 59).ValueEnd WithWith UserForm2.Controls(“Label” & j + 20).Caption = Cells(j + 1, 60).ValueEnd WithNext jUnload UserForm1UserForm2.ShowRange(“BG2:BH1000”).Value = “”ElseMsgBox “該当者がいません”End IfEnd IfApplication.ScreenUpdating = TrueEnd Sub, 使用するVBAコードもほぼ電話番号検索ボタンと一緒で、違いはテキストボックスに入力されたフリガナの転記先が画像のようにQ12に変わり、FindNextメソッドのmyRange.Offsetの位置がフリガナを基準になります。, Cells(i, “BG”).Value = myRange.Offset(, -2).ValueCells(i, “BH”).Value = myRange.Offset(, -1).Value, 生年月日を記入する欄に「西暦記入」と書いてあってもなぜか、わざわざ平成○○年って書く人っていますよね。, その度に西暦に置き換えるのが意外と面倒という声があり、住所録フォームに追加したところ好評です。, 作るのも簡単でエクセル関数VLOOKUPを使いワークシートに表を用意して、ユーザーフォーム上ではテキストボックスとオプションボタンで完成です。, Y2が検査値、W5:X229が和暦と西暦の表の範囲、2が列番号(表の2列目「西暦」)、0が完全一致となります。, 年を入力するテキストボックス(TextBox14)に年を入力して変換ボタン(CommandButton8)を押すのが当たり前なのですが、うっかりテキストボックスに何も入力しないで押してしまった時に、メッセージを表示してあげると親切ですし、誤った操作という事をお知らせできるので設定することをおススメします。, If UserForm1.TextBox14.Value = “” ThenMsgBox (“年が入力されていません”), If OptionButton1.Value = True ThenRange(“W2”).Value = “昭和”ElseIf OptionButton2.Value = True ThenRange(“W2”).Value = “平成”ElseIf OptionButton3.Value = True ThenRange(“W2”).Value = “令和”ElseIf OptionButton6.Value = True ThenRange(“W2”).Value = “予備”End If, UserForm1.Label35.Caption = Range(“Y4”).Value, Private Sub CommandButton8_Click()If UserForm1.TextBox14.Value = “” ThenMsgBox (“年が入力されていません”)ElseIf OptionButton1.Value = True ThenRange(“W2”).Value = “昭和”ElseIf OptionButton2.Value = True ThenRange(“W2”).Value = “平成”ElseIf OptionButton3.Value = True ThenRange(“W2”).Value = “令和”ElseIf OptionButton6.Value = True ThenRange(“W2”).Value = “予備”End IfRange(“X2”).Value = TextBox14.TextUserForm1.Label35.Caption = Range(“Y4”).ValueEnd IfEnd Sub, ここまで書いた和暦を西暦にする方法、2018年当時の私自身のエクセルの知識ではこんな感じでしたが、現在ではかなりシンプルに作れるようになりました。. Help us understand the problem. 住所の入力は、郵送が必要な資料請求や購入フォームでは必須のフォーム項目です。 しかし、郵便番号、都道府県、市区町村、町域、丁目番地、建物名、号室…などと、入力量のボリュームが比較的大きいために、ユーザーの負担は大きくなりがちです。 住所の入力は、郵送が必要な資料請求や購入フォームでは必須のフォーム項目です。 郵便番号の示す住所に続くもの (番地・マンション名など) が入力されているかをチェック, 先頭「010」「020」「030」「040」「0120」「0570」「0990」「0800」は不可, 宛名がペンネーム (ポストに書いてある名前と封筒の名前が一致しないので配達先ポストに入れてくれないというトラブルが多発)……人力でチェックしてユーザに修正してもらう。, 郵便局留め (保管期間を過ぎて返送されてくるなど、トラブルが多い)……人力でチェックしてユーザに修正してもらう。, 私書箱宛て (保管期間を過ぎて捨てられてしまう、私書箱が閉鎖されていて届かない、などトラブルが多い)……人力でチェックしてユーザに修正してもらう, 公営団地の「○号棟」の書き忘れ、「○号室」の数字ミス、マンション名漏れ……人力でチェックしてユーザに修正してもらう。, 本人が捨ててた(意外によくある。DMといっしょに捨てちゃうんだよね。茶封筒や白封筒だとよく起きる)……記念切手を使って目立たせたり、カラー封筒を使うことである程度回避できる。簡易書留(通常送料プラス350円)を使えば完全排除できる。, 家族がこっそり捨ててた(簡易書留を使ってもこれは避けられない)……本人限定郵便(簡易書留プラス100円)を使えば防げる。, you can read useful information later efficiently. 世の中には「○○県は××県より上だろう」とか「○○県は××地方じゃない」とか言う人が居るんですよ。気持ちはわからんでもないですが、わかるわけでもないです。新潟県は北陸地方に含みますか? 【最大450円オフクーポン配布中】Gゼロインソール 22〜28cm 耐圧分散で足の負担を軽減. さらに、上記のラベルだけでは心許ないため、実際の住所の入力例まで必ず表示しておくようにしましょう。, 住所によっては、丁目、建物名などの情報が存在しない場合もあります。 What is going on with this article? 検索後スムーズに入力開始できるよう、ポップアップウィンドウや別タブなどでリンクを表示すると良いでしょう。, さらにユーザーの手間を減らす郵便番号関連の入力支援機能として、住所の候補表示機能についても紹介しておきましょう。, 郵便番号の一部を入力した段階で、該当しうる住所と郵便番号の候補を表示する機能で、エフトラEFOの住所自動入力機能のオプション機能もなっています。, この機能があれば、郵便番号を最後まで入力しなくても良いため手間が省けるほか、郵便番号の記憶が曖昧なときにも確信をもって入力を進めることが可能です。, 全角と半角いずれかでなくてはならないという入力フォーマットへの縛りはユーザーにストレスを与える要因のひとつです。, とくに住所においては、番地の数字やハイフン、建物名などをなぜか全角に統一する必要があったりします。数字はともかく、建物名が英語やアルファベットを用いている場合はなかなかに面倒です。, ユーザーに負担を与えないようなるべく全角半角どちらでも受け付けるようにし、難しい場合はフォーム側で自動変換するなどの対応をしたいものです。, 住所入力欄で陥りがちなミスは、ラベルを「住所1」「住所2」のように抽象的な文言にしてしまうこと。 (知りません……) 北陸3県を中部地方に入れるのは乱暴じゃないですか? エクセル住所録で実際に使っているvbaコードは、制作者である自分以外のスタッフが使うので想定外の操作をされることがあるので、 入力漏れ項目があるまま 新規登録 ボタンを押された時の処理なども必要です。 住所録入力フォーム By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away.