• ベストアンサー

Excel vbaでなんとかできますか?

現在働き方改革の一貫で個人でも出勤退勤、実働時間、残業時間を管理しなくてはいけなくなりExcelであれこれ試してるのですが上司がとにかくExcel苦手の為、vbaから入力フォームを作ろうとしてるのですが上手くいきません。 やりたいことは入力フォームにて名前、出勤退勤時間の入力、日付。そしたらExcelに自動で入力。こんなことできるでしょうか?お力をお貸しください。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.4

ユーザーフォームを作成し テキストボックスを 名前 日付 出勤 退勤 としてコマンドボタンのクリックイベントで以下のようにすれば1行目にデータが入力されます。これが最低限の事になると思います。苦手な人が入力するのでしたら、年、月、日や時、分を別に入力させるとかもっと考えないと駄目だと思いますが、かなり面倒ですよ。 Private Sub CommandButton1_Click() If Me.名前 <> "" Then Range("A1").Value = Me.名前 Else MsgBox "名前のデータが不正です", vbInformation Me.名前.SetFocus Exit Sub End If If IsDate(Me.日付) Then Range("B1").Value = Format(Me.日付, "yyyy/mm/dd") Else MsgBox "日付のデータが不正です", vbInformation Me.日付.SetFocus Exit Sub End If If IsDate(Me.出勤) Then Range("C1").Value = Format(Me.出勤, "hh:mm") Else MsgBox "出勤のデータが不正です", vbInformation Me.出勤.SetFocus Exit Sub End If If IsDate(Me.退勤) Then Range("D1").Value = Format(Me.退勤, "hh:mm") Else MsgBox "退勤のデータが不正です", vbInformation Me.退勤.SetFocus Exit Sub End If End Sub

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

こんなことを聞いているレベルで、VBAで仕事のデータ処理などの着手は「やめときなはれ」。  元データは、電話聞き取り、や本人書類作成でしょうから、書類作成は紙ベースでよいではないか。 結局、従業員のベルを予想すると、原データは、とりあえず紙ベース提出にならざるを得ないのだろうから。在宅勤務などで、パソコンで勤怠データなど送ってくる(来させる)のか?  むしろ質問者のデータ処理より、データ通信などを便利にする方がまず求められているのではないか。  これはエクセル(VBAや関数など)の知識より、広範囲な経験と知識が求められる。そして現場でないと、適当なやりかたがアドバイスできない。  最少のデータ整理だけ、エクセルシート+関数でやることになろう。 VBAなどプログラムは、人によって、向き不向き(好き嫌いの)がスキル獲得に、影響するので、甘く見ないこと。数年ベースの自己修練を考えているなら、 数十万円の勉強代も含めて考える話だろうが。  システムは専門家に任せるでき。選択肢の次は、既存のソフト(優良、フリー)を探すべきでしょう。 得意な人・以前から関心のある人は、すでに、VBAの本を読んだり、WEBで調べて、コードを真似しているだろう。 できる・できないをこんなところに聞いても、質問者の自己満足だけで、足しにならない。行き詰まって、出来ない点を、ここで質問を数回繰り返しても完成するようなものではない。システムは、ものを作る以外は、金をかければ(専門家に頼めば)何でもできると言えるものだ。出来るできないは問題でなない。 社長がコンピュター利用に熱心じゃなくて、金を出さないのが最大の問題で、質問者が、一人頑張っても、もし問題など起こったら、勝手にやったとなる。 また、たとえ、おもちゃみたいなシステムでも、質問者の後継者がいないとかの問題も発生する。 == 地域のグループで、簡単なシステムなど、当面は無料で、相談(対面)できるところが、探せばあるのではないか。引退世代も含め、エクセルのスキルなど、世の中に眠っているように思うが。 最近、まさか出ると思っていなかったが、数時間だが、VBAを無料でやってみさせる催しが、市内のパソコンショップから出て、世の中は広いな、と思った個人的経験をした。

  • skp026
  • ベストアンサー率45% (1011/2238)
回答No.5

まずはGoogleなどで以下のキーワード検索をおすすめします。 Excel 勤怠管理 これにより、様々な具体例がでてきます。それを参考にExcelによる勤怠管理をお試しになると良さそうです。 ※ もしも「社員毎にExcelで勤怠管理が指示され、入力したシートの提出が要求されている」ということなら、専用のExcelシートも指定されているはずです。勝手にフォームを組み込んだりは禁止されていることが多いです。 別のシートのVBAから、指定されたシートを制御したりは不可能ではないですが、込み入ったプログラミングになりやすいですし、指定されたシートが変更されたら、VBAのプログラムも変更が必要です。VBAでフォームを追加し入力しやすくすることは可能ですが、禁止されていたり将来破綻することが予想されます。上司には自分で頑張るよう伝えることが良さそうです。 ※ もしも「社員毎に勤怠管理する手順作成を質問主さんが指示され、質問主さんはその手順にExcelを選んだ」ということなら、Excelはおすすめしません。入力する社員毎も、そのシートをまとめる作業も、便利にはなりません。クラウド型の勤怠管理システムなどの利用を会社に提案ください。 以上、参考にならなかったらごめんなさい。

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.3

VBA を検討する前に Excel のフォーム機能を検討されましたか? https://forest.watch.impress.co.jp/docs/serial/exceltips/1208637.html

  • owan-wan
  • ベストアンサー率42% (3/7)
回答No.2

可能です。 フォームの作成や入力された値からの自動入力は vba で出来ます。 参考書も多くありますし、インターネットで「Excel vba 〈やりたいこと〉」で検索すると参考になるサイトもあります。

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

出来ますよ。 書店に行って、VBAの参考書で、出退勤のサンプルが載っている本を探してみるのも手ですよ。

関連するQ&A

  • エクセルで勤務表を作っています。

    エクセルで勤務表を作っています。 決まった曜日の決まった時間に出勤&退勤するバイトなので、関数を使って簡単に入力したいと思っています。(月木土日曜日の、17時から22時までの勤務) 項目が「日付、曜日、出勤時刻、退勤時刻、休憩時間、実働時間」とあり、曜日を参照して自動的に 出勤日に17:00、退勤時刻に22:00。休憩時間に0:15と入力するには、どうしたらいいのでしょうか? 一日(たとえば月曜日のみ)などの時は、if関数を使って入力できるのですが、1週間に4日分の入力をする関数の使い方がよくわかりません。andやor関数を使ってみましたが、うまくできませんでした。 わかる方は、是非教えてください。よろしくお願いします。

  • 時刻のマイナス表示の出し方

    1ヶ月の勤怠記録をエクセルで作成しています。 ・出勤時間 ・退勤時間 ・休憩時間 (縦に日付で横に出勤退勤休憩実働といった作り) 上記3項目があり 退勤時間-出勤時間-休憩時間=実働時間を出しています。 その際に実働時間が8時間を超過した場合の関数を =MAX(0,退勤時間-出勤時間-休憩時間-8/24) で出しています。 質問は8時間に満たない実働時間だった場合にマイナス時間で 結果を出したいのですが可能でしょうか。 1ヶ月トータルで残業発生と8時間に満たない時間を+-したいのが 今回の質問となります。 どなたかご存知の方がいらっしゃったら教えてください。 宜しくお願い致します。

  • 深夜残業時間の算出とIFEROORについて

    勤怠管理表から以下の2つを求める関数を教えてください。 <勤怠管理表フォーマット> 出勤時間/退勤時間/休憩時間/実働時間/深夜残業時間 1.深夜残業時間について 出勤時間/退勤時間/休憩時間/実働時間/深夜残業時間 10:00    23:25    1:00     12:25    1:25 単純に22:00時以降の時間だけを求めたいと思っています。 2.実働時間のIFEROORについて 休暇や欠勤で出勤/退勤の項目が未入力の場合は、 実働時間に「-」を入れたいと思っています。 ただ、通常は、=退勤時間-出勤時間-TIME(1,0,0)の関数が入っていますが 組合せ方が分かりません。 以上、2つのご回答をお願いします。

  • 残業代の計算をエクセルで・・・。

    エクセルで残業代の計算をしたいのですが、どのようにすればいいのかが全く分かりません。 A列は日付、B列は出勤時間、C列は退勤時間、D列は勤務時間(単純に退勤時間から出勤時間を引いた値)、E列に休憩時間が入力されています。 希望としてはF列に実働時間が、G列に残業時間が入るようにしたいのです。 ①休憩時間は原則1時間ですが、例えば30分しか取れなかった場合は本来取るべきだった残りの30分を残業代に含めることにしています。 ※労基法?ではあまり良しとしていないようですが、ここではあえて無視をしています。 ②勤務時間は午前8時30分から午後5時15分までで、それ以降に勤務していた場合は残業代として15分刻みで支給します。 以上の条件を考慮した残業時間がG列に出る関数がわかりません・・・。 また、土日祝日に勤務した場合は、H列に休日出勤時間が出るようにしたいのです。 給与計算を担当することになったのですが、前任者は一つ一つ手計算をしていたようなのですが、手間がかかり、また間違いの元にもなるかと思いエクセルの数式で何とかできないかと思い質問させていただきました。 何卒ご協力お願いいたします。

  • Excel計算式

    Excelで退勤管理表を作っているのですが、 「出勤時間」「退勤時間」を入力して、自動で「実働時間」を出す所 までは出来るのですが、例えば実働時間が7時間45分だったら、 今は「7:45」という表示になるのですが、それを「7.75」と、 小数点で表示したいのですが、わかる方教えて下さい。 15分単位での時間管理なので、 7時間15分→7.25 7時間30分→7.5 7時間45分→7.75 という表示の方が給料計算しやすいので・・・ どなたかお願いいたします。

  • Excelで24時間対応の給与計算方法を教えてください

    Excelを使って給与計算をしたいと思っているのですが、うまくいきません。 人数も多く勤務パターンも多いので計算式を作れないでいます。 日付をまたぐ勤務パターンもあるので 24時間で対応できる計算式ができればありがたいです。 ぜひ皆さんのお力をお貸し頂きたくお願いいたします。 セルには A:日付 B:曜日 C:出勤時間(夜勤例18.0で表示) D:退勤時間(夜勤例30.5で表示) E:実働時間(D-Cで求めてます) F:所定労働時間(22時~5時以外で9時間までの実働時間) G:時間外労働時間(22時~5時以外で実働9時間を超えた時間) H:深夜労働時間(22時~5時の実働時間) I:深夜残業時間(22時~5時で実働9時間を超えた時間) ※出勤時間・退勤時間は数値に変換し、退勤時間で24時を越えた時間に関しては+24して基本の勤怠データを作っています。 関数計算式を利用して算出したいのは F:所定労働時間 G:時間外労働時間 H:深夜労働時間 I:深夜時間外労働時間 です。 例えば 日勤:出勤9.0 退勤24.0 実働15時間の場合は F:所定:9h G:残業:4h H:深夜:0h I:深残:2h 夜勤:出勤18.0 退勤31.5(朝の7時半)実働13.5時間の場合は F:所定:4h G:残業:2.5h H:深夜:5h I:深残:2h と計算結果を出したいのです。 給与の支払いに直接関わるのでとても困っています。 よろしくお願いいたします。

  • エクセルVBA テキストボックス 日付表示

    エクセルVBAにて入力用フォームを開いたときに フォーム内にあるテキストボックスに今日の日付が 自動で表示されるようにしたいのですが どの様に書き込めば宜しいでしょうか? また、2008.09.05 平成20年9月5日などの 日付形式の変更はどの様に書き込むのでしょうか?

  • エクセルの数式

    教えてください エクセルで残業時間の計算をしたいのですが 退勤時間から 出勤時間を引いて8時間を引いた時間を15分単位で切り捨てたいのですが どーすればいいのでしょうか? よろしくお願いします

  • Excel VBA(Win2000、Office2000)

    現在、VBAでExcelのシートに書き込むフォームを作っており、日付に関することで困っています。 フォーム上には複数のComboBox、TextBoxが並んでおり、OKボタンをクリックすることで、フォーム上に並んだ、ComboBox、TextBoxの値をセルに書き込むようにしています。 問題の日付に関する質問についてですが・・・ ユーザーフォーム上に 年を入力するComboBox1 → 2004 月を入力するComboBox2 → 5 日を入力するComboBox3 → 7 *いづれも、プルダウンから数字を選択して入力するようにしています。 この3つの入力値を合わせて、2004/05/07と認識させて、TextBox1に"金"と表示させたいのですが、どのようにしたら良いでしょうか? TextBox1表示されるタイミングは、日を入力するComboBox3が入力された時としたいです。 宜しくお願い致します。

  • EXCELで出退勤務シフト表を作っているのですが、、、

    (^^;)行き詰ってしまい、困り果ててます。 EXCELで出退勤務シフト表を作っているのですが、、、 日付と個人名を選択し、出勤時間・退勤時間・休憩時間を入力すると右側の表に反映するように設定してますが、上手くいきません。 その右側の表のAさんの出勤時間のセルの式ですが、 =IF($M$70=$D36,VLOOKUP$A4,$M$71:$V$113,2,FALSE)," ") =if(日付が一致したら、個人名と出退勤時間と休憩時間を入力した一覧から、2行目の出勤時間の行を入力、それ以外は、スペースを入力) というつもりで組みました。 表示はされますが、 ・日付を変えると消えてしまう!という問題 退勤時間の方も ・式を退勤時間の3行目が表示されないという問題 勤務時間は更に、 ・退勤時間-出勤時間=勤務時間が#####となってしまうという問題 となっていて、どうしたらいいのか行き詰っています。 良い方法がありましたら、是非、教えてください。 本当に本当にお願いします。 また、こういう問題を実際に教えて頂ける教室や 場所などご存知でしたら、是非、教えてください。 どうぞよろしくお願いします。

専門家に質問してみよう