エクセルでの名簿作成についての質問

このQ&Aのポイント
  • エクセルで名簿作成時に使用するユーザーフォームについて、便利なデータ挿入方法を探しています。
  • 現在名簿を作成する際には、ユーザーフォームを使用してデータを入力していますが、2つのボタンを押す手間があり、効率化を図りたいと考えています。
  • 具体的には、既存の名簿から特定のデータを検索し、その下に行を挿入・登録する機能があれば便利だと思っています。マクロに関するアドバイスをお願いします。
回答を見る
  • ベストアンサー

ユーザーフォームから行検索後、データ挿入の仕方について

エクセルでの名簿作成時に関する質問です。 現在エクセルで名簿を作成する際に、ユーザーフォームを使って入力しています。 データは、まず一番上の行に「A1~G1」までの(1人につき)7項目挿入され、 その後、全体を「A列」の氏名順に並び替えるという作業をしています。 「登録」ボタンと、「並び替え」ボタンを押さねばならず、 2度手間のような気がしてなりません。 ちなみに、名簿自体はローマ字名順(a.b.c.~z)に並べています。 ユーザーフォームのテキストエリアに記入し、「登録」ボタンを押すだけで、 既存の名簿から該当のローマ字を検索して探し出し、 その下に行の挿入・登録されるような機能はないのでしょうか? 例えば、「佐藤さん(sato)」のデータをユーザーフォームから入れる際に 「登録」ボタンを押すと・・・ ---------------------------------------------------- 【名簿】   ******   ←ここではなく・・・   abe  ・  ・  oda    sasaki  ******   ←【sat*】を検索して直接ここに登録したいのです。  seki ---------------------------------------------------- マクロを始めたばかりでよく理解していない事が多いのですが、 何か良い方法がありましたら、アドバイスをお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#123709
noname#123709
回答No.3

#1です。 列の範囲はA~Gですね? コマンドボタン1をクリックしたときの処理ですが、そちらで異なるのであれば 変更して下さい。 テキストボックスも7項目ということなので1~7としていますが状況に 合せて変更して下さい。 質問者様の画面が見えているわけではないのでこれで限界です。 具体的に書いて頂けるとこちらも具体的に返事ができますけどね。 分からない部分はHELPをみるなりして勉強して下さいね。 Private Sub CommandButton1_Click() With Range("A65536").End(xlUp).Offset(1) .Value = TextBox1.Value .Offset(, 1).Value = TextBox2.Value .Offset(, 2).Value = TextBox3.Value .Offset(, 3).Value = TextBox4.Value .Offset(, 4).Value = TextBox5.Value .Offset(, 5).Value = TextBox6.Value .Offset(, 6).Value = TextBox7.Value End With Range("A2:G" & Range("A65536").End(xlUp).Row).Sort Key1:=Range("A2"), _ Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin Cells.Find(What:=TextBox1.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate End Sub

r_kazuki
質問者

お礼

できました、できました!!どうもありがとうございます!! ご丁寧にご説明下さりどうもありがとうございました。大変助かりました。 またお聞きする機会があるかもしれませんが;、 その際はどうぞよろしくお願い致します。

r_kazuki
質問者

補足

「ありがとうポイント」の付け方がわからないので;、 後ほど付けさせて頂きますね。(すみません、仕事中なので;)

その他の回答 (2)

noname#123709
noname#123709
回答No.2

#1です。 これでどうですか?但しデータ範囲・ボタン名称等は目的にあったものに 修正する必要があります。 (1)シートの最終行にフォームの内容を入力 (2)A2セルからA列最終データ行までの範囲で並び替え (3)フォームのローマ字名前の内容で検索 Private Sub CommandButton1_Click() Range("A65536").End(xlUp).Offset(1).Value = TextBox1.Value Range("A2:A" & Range("A65536").End(xlUp).Row).Sort Key1:=Range("A2"), _ Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin Cells.Find(What:=TextBox1.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False).Activate End Sub

r_kazuki
質問者

補足

ありがとうございます!さっそくやってみました。 ↑式のを入れてみると、A列はうまくいきましたが、他の列がA列と一緒に動いてくれません; 列ごとに検索してバラバラに入ってしまっているようです。 知識が薄いため、どこを変更すれば行ごとの移動になるのかわかりません; 何度もすみませんが、よろしくお願いします。(カーソルは動いてますので大丈夫です)

noname#123709
noname#123709
回答No.1

できますけど、登録と並び替えの部分が完成しているのであれば、登録ボタン を押した時に登録の処理を行ってから並び替えの処理を走らせたら良いのでは ないですか?

r_kazuki
質問者

補足

回答ありがとうございます。 登録後に並び替えの処理も考えたのですが、そうすると、 登録した人の所にカーソルがいかないので、いちいち探して確認するが面倒なのです。 勉強不足なので、もしかしたらカーソルも一緒に移動する方法もあるかもしれませんが;・・・。 もしそれができる方法があるならば、登録後に並び替えでも大丈夫です! 説明不足でしたが、登録後に確認をしたいという希望もあるので、 処理が終わった後、登録した人のところにカーソルがあると嬉しいです。 尚かつ、ボタンがひとつで・・・。 色々我侭言ってすみませんが、何か方法がありましたらよろしくお願いします。

関連するQ&A

  • ユーザーフォーム

    ユーザーフォームを作成しました。 ExcelにA:番号B:氏名C:住所D:電話で順に入力出来ますが、1行削除・追加した場合、その空欄行に自動で入力出来るようにしたいのですが可能でしょうか。現在は自動的に+1で下行に入力します。 たとえばAに1~20行まで入力されており、10行を削除または挿入した場合にその空欄行に入力出来るようにしたい。 宜しくお願いします。

  • ユーザーフォームについて

    エクセル2002です。 ユーザーフォーム内のテキストボックスを使用して、 (1)A1のセルに1と入力されている状態でマクロを起動した場合、 (2)ユーザーフォーム内のテキストボックスには2と表示される (3)ユーザーフォーム内のボタンを押すと、A2のセルに2と入力される。 このような流れで、A列のデータ最終行に番号をふっていきたいです。 (A列のデータ最終行がA30なら、A31に31と番号をふる) ユーザーフォームのテキストボックスとボタンは作ってあるのですが、 それぞれに入れるコードを教えていただけないでしょうか。 よろしくお願いします。

  • エクセルでユーザーフォームを利用したいのですが・・・

    エクセルでユーザーフォームを利用したいのですが・・・ ユーザフォームは作れるのですが、なにせ、コマンドボタンを押したときのマクロを教えていただきたいです。 たとえば、A欄に日付B欄に会社名C欄に数字を入力するとしまして、 とうぜん、ユーザーフォームには日付、会社名、数字の入力ボックスとコマンドボタン(入力ボタン)があるわけです。 入力ボタンを押せば順に入力していただきたいのですが、条件があるのです。 その1、1行目2行目は使いますので3行目から入力してもらいたい。 その2、入力順、日付順に並べてほしい。 その2をもう少し詳しく書かせていただきますと、今日に10行分のデータを入力したとしまして あしたの分も2行ほど早めに入力したとします。 明日の分は当然、明日の日付でするわけです。 さて、今日の分を追加したいとき、明日の日付の前にこないと駄目という条件でございます。 よろしゅうおねがいします。

  • 名簿の行の挿入

    名簿をアイウエオ順に並び変えるマクロで並び替えましたが、ア行カ行とかアカサタナの間に行を挿入したいのですが名簿名が増えると行がランダムになるので行を挿入できるマクロを教えてください。

  • VBA ユーザーフォームを使って

    簡素化して書きますがエクセルシートのA1からZ100までデータがあります。(行は増え続けます) A1からZ1までの1行のデータをまとめて1画面に表示したくてユーザーフォームで作ってみました。(ラベル使用) ユーザーフォーム上で「次へ」ボタンを作成し、それをクリックすると次は A2からZ2までを表示させたいのですがやりかたがわかりません。 (また、「戻る」ボタンを作成し、それをクリックすると1行上へ戻るようにしたいです) VBAは初心者もいいところでネットで調べまくってやっています。 が、なかなか思うような結果にならずみなさんのお力をお貸しいただきたいと思います。 実際のデータは色々複雑なのでソースをあえて載せていませんのでご了承ください。 こういうやり方があるよって事を教えて頂けたらと思います。 よろしくお願いします。

  • VBAでのユーザーフォームの使い方

    VBAのマクロでユーザフォームにボタンを配して、それによってエクセルシートのデータを更新するようなマクロを作りたいのですが、ユーザフォームの挿入でボタン配置まではできるのですけど、どのようにリンク付けするのかコーディング等、解りません。お教え下さい。簡単なサンプルコーディングがあれば助かります。

  • ユーザーフォーム

    エクセルでユーザーフォーム上にコマンドボタンを配置し、特定のコマンドボタンを押した時に、他のユーザーフォームを呼び出せるようにしたいのですが、どうしたらいいのでしょうか。

  • 新しいデータは常に2行目へ登録したい

    下記、動画を参考にユーザフォームを用いて名簿を作成しています。 http://www.youtube.com/watch?v=UvKjFBQzbz8 とても参考になったんですが、このやり方だと新しくデータを登録すると下の行に新しいデータが追加されます。 私が希望するのは、新規データは常に2行目(データ最上行)に登録され、古いデータは、3行目→4行目→5行目とどんどん下の行に繰り下がるものを作りたいです。 2行目に行を挿入するマクロを追加したり、色々やってみましたが、希望する結果は散々でした・・・。 文章が分かり辛いかもしれませんが、解決できる方がみえたらご教授お願い致します。

  • EXCEL VBAでユーザーフォームを使ってデータを入力したい。

    EXCEL VBAでユーザーフォームを使ってデータを入力したいと思っています。(ユーザーフォームはできています。) 入力項目が4項目あります。 名前 作業コード 開始時間 終了時間 上記4項目と登録ボタンです。 sheet1にユーザーフォームを表示し sheet2の A1に名前 B1に作業コード C1に開始時間 D1に終了時間が 登録ボタンを押すごとに どんどんデータを記録していきたいのです。 VBA初心者ですのでコードがよくわかりません。 ご教授ください。よろしくお願いいたします。

  • ユーザーフォームを挿入でエクセル強制終了

    VBAを初めて、まだ1週間ほどの初心者です。 ユーザーフォームを作成して、シートを他のブックに保存して、 シートを印刷するマクロをボタンに割り当てて使用してました。 先日、ボタンをクリックした所、エクセルが強制終了してしまいました  その後、そのブックを開くと、また終了してしまい、一度ユーザーフォームを削除したら、終了しなくなったのですが、Visual Basicから挿入-ユーザーフォームを作成しようとすると、終了してしまいます。 どのブックでも同じ様になってしまいます。 エクセル2000を使用しています。 どの様に対処したらよいか、色々調べましたがまったくわからない状態です。 まだ初心者の為質問に必要な事が抜けているかも知れませんが、 ご存知の方、教えてください。

専門家に質問してみよう