『毎日のデータ入力』(初心者です) ウインドウズxp エクセル2003 よろしくお願いします。 仕事で毎日の集計データをシートにそのまま入力しているのですが、ユーザーフォームから入力できるようにしたいと思っております。           A     B     C 1   日付   データa データb データc  2  7月1日   3  7月2日      :    : 32  7月31日  たとえば上記のような集計表があったとして、今日が7月1日であれば今まではA2、B2、C2と日ごとに手入力していました。2日であればその下に・・・という感じで。 そこを、ブックを開いた時に自動でユーザーフォームを立ち上げ、テキストボックスでデータa,b,cを入力し、該当する今日の日付の行に転記する。 欲を言えば、立ち上げたユーザーフォームに今日(入力する当日)の日付を出したいです。  今日の日付  2012年7月28日    データa(ラベル) 22.3(テキストボックス)  データb(ラベル) 21.1(テキストボックス)    データc(ラベル) 24.4(テキストボックス)  確認(コマンドボタン) 修正(コマンドボタン) 終了(コマンドボタン) といたように・・・。           A     B     C 1   日付   データa データb データc  2  7月1日   10.2 22.2 33.3 3  7月2日   11.1 11.2 11.3    :    : 32  7月28日  22.3 21.1 24.4 確認でデータ反映。修正でテキストボックス内クリアで入力をはじめから。終了でブックを閉じる。 ややこしく、説明下手ですがよろしくお願いします。 ---- 回答が無いようですので、質問に対する意見を。 内容について・・・ ユーザーフォーム使う必要を感じられません。 A列に計算させたデータを入力するために(計算機をたたく手間を省くために)フォームを使う、 ならば分かるのですが、ただのデータを入力するためにわざわざ使う必要を感じられないので 回答が付きにくいのではないでしょうか? (initializeでフォームの体裁整えるの面倒ですし・・・) こちらにユーザーフォームの簡単な使い方が http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_userform.html 初期値の入力方法については http://excelvba.pc-users.net/fol10/10_1.html ブックを開いた時のイベントは http://www.relief.jp/itnote/archives/001736.php 本当に簡単なので、挑戦されてはいかがでしょう? (稲葉)2012/7/28 11:45 ---- (稲葉)様ありがとうございます。 ユーザーフォームを使うのは私だけ入力するとは限らないからです。 エクセルをほとんど使ったことがない人達が入力するので、簡潔かつ簡単に入力してもらうためです。 例えの表はあくまでも質問をわかりやすくするための例でして。 私の説明不足だったのかも知れません。すみませんでした。 一番知りたいところは日付のところでして、入力したデータが入力した日付の行に収まるにはどうしたらいいか?です。 わかりにくくて申し訳ないですが、よろしくお願いします。 (初心者です) ---- >エクセルをほとんど使ったことがない人達が入力するので、簡潔かつ簡単に入力してもらうためです。 とのことですので、ユーザーフォームを使う迄もない、という意見に関しては変わりません。 入力用シートと蓄積用のシートを分けるだけで十分だと考えます。 下記のようなイメージでいかがでしょうか? (稲葉)20127/28 13:17 A B C D 1 本日 =today() 2 修正日 ←手入力 3 データa ←手入力 4 データb ←手入力 5 データc ←手入力 6 [入力] ←ボタン 7 8 日付 データa データb データc 9 7月1日 10.2 22.2 33.3 10 7月2日 11.1 11.2 11.3 11 Sub データ入力() Dim tnkRng As Range Set tnkRng = Range("B2:B5") If Range("C2") = "" Then Range("C2") = Range("C1") tnkRng.Copy Range("A" & Range("A10000").End(xlUp).Row + 1).PasteSpecial _ Paste:=xlPasteAll, _ Transpose:=True Application.CutCopyMode = False tnkRng.ClearContents MsgBox ("入力が完了しました") End Sub ---- ユーザーフォーム作成までやらなくても、2003でしたら データ>フォーム の簡易フォームが利用できそうです。 一度試してみては? 複雑なことは出来ませんし、操作に習熟は必要になってきますが、 >入力したデータが入力した日付の行に収まるにはどうしたらいいか? ということは悩まなくて済みます。 この場で「作ってもらう」のが目的なら、 >例えの表 ではなくて、実際の運用をコト細かに説明すべきです。 いったんサンプルを作ってもらったあとで、「実はこの部分は〜でうまく動きません」 というやり取りは頻繁に目にします。 二度手間、三度手間は質問者も回答者も時間の無駄ですよね。 (みやほりん) ---- 2007 以降でも一応使えるようですね。 http://www.genzou.sakura.ne.jp/Excel/Excel2010/ExcelFo-mu.html (Mook) ---- 最近、似たような件 [[20120722214852]] 『貸出管理と在庫検索』(zuro) ここで、私もデータフォームを提案したけど、それっきり、スレ主さんに嫌われたみたい。 本件でも、まず『運用のスターターキット』としてデータフォームを使ってみて そのなかで、運用の手順や、必要な機能というものを、より具体的なイメージとして つくりあげて、仮にユーザーフォーム対応をするとしても、その後でもいいんじゃないだろうかと 個人的には、そう思うね。 (ぶらっと) ---- 先生方の前で恐縮ですが、個人的にはエクセルにはせっかく「セル」というオブジェクトがあるので すから、わざわざ作る必要って余りないと思うのです。 アクセスのフォームを作成するときも、エクセルのシートでイメージを固めてからのほうが作りやす いですし、「データ入力の為のフォーム」はエクセルでは必要ないと考えています。 逆に、セルを使ったフォームに値の入力を支援する(入力規則ではできないような)フォームがエク セルに求められているものなのではないでしょうかね? (稲葉) ---- >「データ入力の為のフォーム」はエクセルでは必要ないと考えています。 このレスのデータ処理については、同感。直接、シート上で入力していけばなんら問題はないね。 この種のテーマでいずれ壁になる『削除』や『挿入』や『修正』といったことも気にしなくてもいいし。 ただ、全く、そういうことが不要かと言えば、レイアウトにもよるけど、『なんらかのフォーム』での 処理というのも、いちがいに『必要ない』ともいえないかな。 また、職場によってはアクセスをいれていないところも多いだろうし、アクセスができる人がいない 職場もあるだろうね。そういうときに、『エクセルシート』を『ちょっとしたデータベース』として 利用して事務処理を行っていくと言うことはおおいにありうると思う。 さらに、上で書いたように、今回の例に限定するならシート上の注力処理で十分だけど、もしかして 将来、『本当にユーザーフォーム』での入力が望ましいような要件(たとえば客先から受領したデータと マスタ的なデータや、社内の別の資料をあわせて、データ処理をしなければいけないような場合)がでたときに はじめてユーザーフォームでの処理を作るより、まず、今回のようなシンプルな例で練習をしておくということは 無駄ではないと思う。 ただ、それにしても、まず、スターターキットとしてデータフォームを利用したりすることで、そういった イメージが具体的に吸収できると思うし、そういった後に考えてみたら? というのが私のリコメンド。 もちろん、こういった考え方は人それぞれ。だけど、『必要ない』といいきられると、『VBA屋』としては ちょっと寂しい気もするね。 よく、『エクセルVBAの世界ではクラス処理は、ごくごく特殊なものをのぞいて必要ない!共通プロシジャで充分!』 こんな意見を述べられる人も少なくないけど、ちょっと、それとにてるかな? (ぶらっと) ---- 横からすみません。 私見ですが、私もフォーム機能が不要だとは思いません。 横に長くて、入力セルがとびとびだったりする場合は効率的に入力できて便利だと思います。 数式の入っている列はちゃんと飛んでくれますし。 で、ふと思ったのですがその日の欄に入力してほしいだけでしたら、条件付き書式で当日に 色がつくようにしておいたら如何でしょうか? 初心者の方が入力されるのでしたら尚の事、色での目印は有効だと思います。 もしくは、当日以外が灰色になって当日だけ色がないとか。   専門的な話になっているところへ、原始的な提案で申し訳ない… (コナミ)