エクセル2003で社員名簿データを利用してフォームを作成する方法

このQ&Aのポイント
  • エクセル2003でフォームを作成し、社員名簿データを利用してお金の使用状況をチェックする方法について解説します。
  • 社員名簿データを使用してフォームを作成し、詳細画面フォーム上で検索ボタンを押すとリストボックスが表示され、該当者をクリックすると情報が表示されるようになっています。
  • 判定額と総計を比較し、OKか否かを表示する仕組みも導入されています。
回答を見る
  • ベストアンサー

エクセル2003でフォームを作成しています(2)

エクセル2003でフォームを作成しています(2) ネットワーク上にある社員名簿.xlsの情報を使って、フォーム上で ぶっちゃけて言えばお金を使い過ぎていないかのチェックをします。 エクセルのワークシート上でやればいいと思うかも知れませんが 社員名簿.xlsは専用端末からおとしたいくつかのcsvを加工した ものから作成するので、ファイル名だけは常に同じですが、ボタン などは設置出来ないので、フォームを作成してデータだけを ひっぱってくることにしました。 詳細画面フォーム上の検索ボタンを押すと、 社員名簿.xlsのデータを元に作成したリストボックスの貼り付いた 別フォームが開き、該当者をクリックすると別フォームは閉じられ、 詳細画面フォームに社員名簿の情報がそれぞれのテキストボックスに 反映される、ということがまずやりたいのです。 別フォームにリストボックスを貼り付けたのは、それしかやり方を 知らないからです。 ※コンボボックスで作成していましたが、変更しました。 判定額というのは、ここまではOKという金額が総計を元に計算される 仕組みになっています(これからします)。 その下の小さなテキストボックスには判定額と総計を比べてOKか否か の何かを出すようになっています(これもこれからします)。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

>詳細画面フォーム上の検索ボタンを押すと、 社員名簿.xlsのデータを元に作成したリストボックスの貼り付いた 別フォームが開き、該当者をクリックすると別フォームは閉じられ、 詳細画面フォームに社員名簿の情報がそれぞれのテキストボックスに 反映される、ということがまずやりたいのです。 上記の説明文のどの部分がわからないのでしょうか? 他ブック(csvファイル)から特定の値に対するデータをリストから検索し、テキストボックスに表示する部分がわからないということなら、単純に詳細画面フォームのあるブックの隠しシートにVLOOKUP関数で値を引っ張ってきてこの値をテキストボックスに代入するのが、ファイルを開くことなく実行できるので実行速度の観点からもお勧めです。 ちなみに、シート内の文字を検索するマクロなら、以下のページが参考になると思います。 http://home.att.ne.jp/zeta/gen/excel/c04p42.htm

hori_kumanoko
質問者

補足

>>詳細画面フォーム上の検索ボタンを押すと、 >>社員名簿.xlsのデータを元に作成したリストボックスの貼り付いた >>別フォームが開き、該当者をクリックすると別フォームは閉じられ、 >>詳細画面フォームに社員名簿の情報がそれぞれのテキストボックスに >>反映される、ということがまずやりたいのです。 >上記の説明文のどの部分がわからないのでしょうか? リストボックスの貼りついたフォームの該当者をクリックしたときの 該当者の社員番号を詳細画面フォームの番号のところに持ってきたい のですが、やり方がわからないのです。 社員番号の入った変数を別のフォームで使用する書き方が分かりません。 違うかもしれませんが、今社員番号が ---------------------- Sub リスト選択_Click() Dim i As Byte Dim SCode As String For i = 1 To 1 ListBox1.TextColumn = i SCode = S & ListBox1.Text Next i End Sub ---------------- SCodeの中にいるようなのですが…

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>リストボックスの貼りついたフォームの該当者をクリックしたときの 該当者の社員番号を詳細画面フォームの番号のところに持ってきたい 名前と社員番号のリストがあるなら、単純に名前から社員番号を検索するだけで良いと思うのですが・・・ このようなケースでは、VBAコードだけですべての処理をするのではなく、たとえば非表示の作業用シートを作成して、ワークシート関数などエクセルの機能を有効活用するほうが、VBAコードを簡略化でき、マクロ実行時のパフォーマンスもあげられると思います。

hori_kumanoko
質問者

お礼

わかりました。 非表示のシートを作成して関数を使った処理をしてみます。 ありがとうございました。

関連するQ&A

  • エクセルでフォームを作成しています。(VBA)

    エクセルでフォームを作成しています。(VBA) フォームAで作成してあるリストボックスから選択して 取得した番号を フォームBにもってきて、その番号をもとにVLOOKUPで ほかのテキストボックスに値を持ってこようとしている のですがうまくいきません。 フォームAのリストボックスにはsheet1の名簿が 表示されています。 クリックで選択した名簿番号を取得して、フォームBにある 個人のページでその他の詳細を出そうとしています。 名簿番号はフォームBの名簿番号.Textに持ってこれたのですが その名簿番号をVLOOKUPで研究名を出そうとしてもうまくいきません。 コードのどこがだめなのか分かりません。 VBA入門者です。 よろしくお願いいたします。 --------------------- Private Sub 決定_Click() Dim ADR As Variant On Error GoTo ExitER Set ADR = Worksheets("sheet1").Range("A:F") 研究名.Text = Application.WorksheetFunction.VLookup(名簿番号.Text, ADR, 4, False) On Error GoTo 0 Exit Sub ExitER: MsgBox "一致するコードがありません" On Error GoTo 0 End Sub ---------------------

  • エクセル2003でフォームを作成しています。

    エクセル2003でフォームを作成しています。 ネットワーク上にある”元データ.xls”のデータをもとに”集計.xls”にある フォームにデータを引っ張ってきたいと思っています。 ”集計.xls”には、コンボ1つと”元データ.xls”と同数のテキストボックスを設置してあります。 コンボには”元データ.xls”のA1:A1000までを課題番号としたものをRowSourceにセットしてあります。 コンボから課題番号を選ぶと、テキストボックスに”元データ.xls”の値を出したいのですが どうすればよいのでしょうか。 アクセスのSelect Fromのようなことをしたいと思っているのですが、すみません意味分かりますでしょうか。よろしくお願いいたします。

  • アクセスでこんなフォームを作成したいのですが・・・

    サブフォームにクエリ集計から作成したフォームを表示し、メインのフォームで選択すると、サブフォームに選択したものだけの表が表示されるようなフォームを作りたいのです。 例をあげると・・・ メインフォーム→名簿 サブフォーム→成績表(行:名前  列:科目  値:点数) メインフォームの名簿をリストBOXで選択できるようにして、選択した名前をテキストBOXで表示させるまではできています。 そのテキストBOXに表示された人の成績だけをサブフォームの表に表示したい。 説明が下手で申し訳ないのですが、分かる方ぜひ教えてください。お願いします。 また、複数の人を選択したとき、必要な表だけ表示する方法も教えてください。 宜しくお願いします。

  • エクセルのユーザーフォームのことです

    はじめまして。よろしくお願いします。 エクセルで、リストを作成しようと思っています。内容は、顧客名簿で、A名前、B住所、CからEまでははじめから項目があって、それに該当するものにチェックを入れる。項目とは、C医療、D教育、E学校という項目です。ユーザーフォームでテキストボックスを2つとチェックボックスを3つ、その他に確定ボタン、閉じるボタンを付けました。ユーザーフォームの名前住所に文字を入れ、チェックボックスに該当するもののチェックを入れ、確定ボタンでシートに転記し、続けて次の名簿を入れる・・という風にしたいのです。いろいろ参考にしながら作成したのですが、、、 質問(1)一人目、3つあるチェックボックスのうち2つにチェックを入れる→確定ボタンを押してもチェックボックスのチェックが残ってしまい、二人目を入れるのにチェックを一度消さなくてはならないのです。確定ボタンを押すと転記された後チェックがリセットされるようにするには、どうしたらよいのでしょうか? 質問(2)チェックをシートに転記すると、現在セルにはTRUEと入ります。これを”○”とか”レ”とかの記号にするにはどうしたらよいですか? おそらく、既に回答がある質問だとは思ったのですが、探すのが下手なのか見つけられずに、はじめてこちらに質問させて頂く次第です。よろしくお願いいたします。

  • 【Excel】フォームを使ったマクロ記述について

    教えて下さい! マクロ初心者ですが、ユーザーフォームを使って以下のような対話型マクロに挑戦しています。 ワークシート内にあるフォームボタンをクリックすると下の内容を聞いてくるチェックボックスが出てきます。 「比較方法を選択して下さい。」  ・担当者別  ・箇所別 ”担当者別”にチェックを入れ、OKボタンを押すと”担当者選択”というリストボックスが出てきます。 ”箇所別”にチェックを入れ、OKボタンを押すと”箇所選択”というリストボックスが出てきます。 どちらにもチェックを入れずにOKボタンを押した場合、”エラー”というOKボタンのみのフォームが出て、OKボタンを押すと再度チェックボックスの画面に戻ります。 リストボックスやフォームは完成していて、いくつか「IF」や「Select Case」を使って行ってみたのですがうまくいきません。 困っています。 教えて下さい!!

  • 「フォームを作成できませんでした」

    テーブルのデータをもとにフォームを作成しようとしたら 「フォームを作成できませんでした」となります。 原因がわかりません。 テーブルは主キーはちゃんとあります。 「フォームを作成できませんでした」のに、作りかけのフォームがデザインビューで表示されていて、 コントロールのラベルはフォームヘッダーの一番上にたまっていて テキストボックスは詳細の一番上に溜まっています。 ヴァージョンは2010です。

  • EXCEL ユーザーフォームを使ったマクロ

    データの登録をするのにユーザーフォームを使おうと思うのですが、なかなかうまくいきません。教えてください。 ユーザーフォームにはコンボボックス、テキストボックス、コマンドボタンが貼り付けてあります。(コンボボックスのリストには呼び出したいシートの名前が入っています) コンボボックスのリストの中から呼び出したいシートを選択し、テキストボックスに入力した内容を、コマンドボタンを押すことで選択されたシート上の、あるセルに登録したいのですがどうすればよいでしょうか?

  • Access2003でフォームにあるコマンドボタンで更にフォームを開く

    Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。 Access2003で社員情報管理のデータベースを作成中です。 社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。 この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、以下のようなVBAを記述しました。 Private Sub コマンドボタン_Click() DoCmd.OpenForm "詳細情報フォーム" Forms![詳細情報フォーム![社員番号].DefaultValue = Me![社員番号] End Sub 【社員番号】は7ケタの半角英数で、社員によって、数字だけの場合と、英数混じっている場合とがあります(データ型はテキスト型にしてあります)。 困っているのは、 1.上記を実行した際に、数字だけの社員番号は問題ないのですが、英数混じりの場合だと"社員番号"テキストボックスが「#Name?」という表示になってしまう 2."基本情報フォーム"のコマンドボタンをクリックして新規の"詳細情報フォーム"を開き(社員番号のみが反映され、他の項目は空欄の状態)、詳細情報を入力→保存したあと、別の社員番号で"基本情報フォーム"を開き、コマンドボタンで"詳細情報フォーム"を開くと、前に入力した社員の情報が出てきてしまう。 (つまり、"詳細情報フォーム"のもととなるテーブルに、1行でもレコードがあると、それが出てきてしまう。) 【詳細情報】は、 1.データを入力する社員としない社員とがいる 2.新規でレコードを作成する場合と、既存のレコードを上書きする場合とがある ので、もととなる"詳細情報テーブル"にその【社員番号の】レコードがなければ新規入力画面を、レコードがあればそのレコードを呼び出す形にしたいのですが、英数混じりの表示の件も含め、どうすれば、正しく表示されるか教えていただきたいです。 ぜひぜひよろしくお願いします。

  • フォームを作成しています。

    フォームを作成しています。 チェックボックスとドロップダウンリストを連動したいと思います。チェックボックスが選択されればその内容を送信できるけれど、チェックボックスがチェックされていないとドロップダウンリストは選択できないようにしたいと思います。10位のチェックボックスとドロップダウンリストの組み合わせを作りたいと思います。 どのようなコードを使えばいいでしょうか?CGIを使ってフォームを作成中です。 よろしくお願いします。

  • Accessのフォームで

    教えてください。下のようなテーブルがあり、これを元にフォームを作成したいのですがいい方法が見つかりません。 【テーブル】  品物テーブル(品物ID、品物、製作所)  社員テーブル(品物ID、社員コード、氏名) このテーブルを元にして下のようなフォームを作りたいのです。 【フォーム】  品物ID [テキストボックス]  品物 [テキストボックス]  製作所 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス] ※社員コード、氏名が3つあるのは、同じ品物を3人が作成することがあるため。(この部分で悩んでいます) このようなフォームを作ることは可能でしょうか? また参考になるようなサイトなどあれば教えてください。 よろしくお願いします。

専門家に質問してみよう