最大35,000円進呈!IPoEはOCN光

教えてください。

現在業務管理のためエクセルを使用しています。
タイムレコーダ(打刻ボタン・・・出社/退社)も同シートにはめ込みたいのですが
プログラムを作成するしか方法はないでしょうか?

希望は、「出社」「退社」の打刻ボタンがあり
ボタンを押すと、その日の出社/退社欄に時刻が入力されるような感じです。

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

No.1です。



> また、一度押したら確定(押し直しができない)とすることはできますでしょうか?

はできるのですが、どこまで徹底的にやるかでやり方は変わってきます。

(1)ボタンを押したらそのボタンは押せなくなり、一度ブックを閉じて再度開いても、その日の日付が入力されていたら、該当するボタンを押せないように設定する。

とするのは簡単です。しかし、これには抜け道があり、いったん入力した時刻を手動で削除し、ブックを開き直すと、またボタンが押せるようになってしまいます。

そこで、
(2)シート保護をかけて、ユーザは直接管理表のセルに入力したり削除したりできなくする。(ユーザが入力するセルだけは、セルの書式設定の「保護」からロックを解除する)
シート保護にはパスワードを設定し、ユーザが保護を解除できないようにする。

という手が考えられます。しかし、画面からシート保護をかけると、マクロの中でもセルに時刻を入力することができなくなるのです。したがって、

(3)マクロの中でパスワードでいったんシート保護を解除し、時刻を表示したら再びパスワードをつけてシート保護をかける。

という手があります。あるいは、画面からはセルの変更はできないが、マクロの中からはできる、というモードにマクロで設定することもできますが、どちらにしろマクロの中にパスワードを埋め込む必要があります。

これも、ちょっと詳しいユーザがいてVBAの画面を開いてマクロの中を覗いてしまうと、パスワードが丸見えになり、結局保護は破られます。

それで、最終手段として、

(4)マクロにパスワードをかける
ということができます。この設定をすると、マクロの中身を見ようと思っても、パスワードがないと見られなくなるので、さすがにユーザは変更できなくなると思います。

それで、どこまで徹底してやるか、というのが問題です。とりあえず(1)の段階までだけやる方法をご紹介します。

縦横が逆だったということなので、今度はA列がタイトル行で、1行目のB列より右に日付が入っており、出社時刻が2行目、退社時刻が3行目に入るものとします。

マクロをそれぞれ以下のように変更してください。

Private Sub CommandButton1_Click()
 Cells(2, Day(Date) + 1).Value = Time
 CommandButton1.Enabled = False
End Sub

Private Sub CommandButton2_Click()
 Cells(3, Day(Date) + 1).Value = Time
 CommandButton2.Enabled = False
End Sub

それから、左側のThisWorkbookという文字をダブルクリックしてください。新たに白いシートが右に出ます。
そこに、以下のマクロをコピーして貼り付けてください。

Private Sub Workbook_Open()
 With Worksheets("Sheet1")
  If .Cells(2, Day(Date) + 1).Value = "" Then
   .CommandButton1.Enabled = True
  Else
   .CommandButton1.Enabled = False
  End If
  If .Cells(3, Day(Date) + 1).Value = "" Then
   .CommandButton2.Enabled = True
  Else
   .CommandButton2.Enabled = False
  End If
 End With
End Sub

これは、ブックが開かれたときにボタンの押せる/押せないを設定するマクロです。

上に書いた(2)~(4)のうち、ここまでやりたい、というご希望があればアドバイスをしますので、補足をお願いします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
これで十分です★
感謝いたします。ちょっと(自分で作ったわけではないですが)こんなものができてしまって
興奮しております♪
本当にありがとうございました。

また、別件で(他に同じような質問がなければ)残業計算などについて
質問させていただく予定ですので
もし、また見かけましたら、ご教授戴ければ幸いです。

お礼日時:2007/03/20 19:01

直接の回答ではありませんが、


PCの時刻管理を正しく行っていないと、根底から揺らいでしまいます。
PCの時刻は徐々に狂ってくることもありますし、
PCのCMOSバッテリーがへたってきたりすると、正しい時刻が得られません。
WindowsXPでインターネットに接続できる環境なら、
1.タスクバーの右端の時間が表示されている部分で右クリック。
2.サブメニューの「日付と時刻の調整」をクリック。
3.「日付と時刻のプロパティ」ダイアログの「インターネット時刻」タブをクリック。
4.「自動的にインターネット時刻サーバーと同期する」にチェックをいれ
 サーバーに「time.windows.com」と入力し「適用」をクリックして「OK」ボタンをクリック。
これで自動的に時刻を同期してくれます。(一週間毎)
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速設定しました。他のPCも同期設定しようと思います。

お礼日時:2007/03/20 14:54

VBAを使いますが、プログラムというほどのものでもないですよ。



以下の仮定でマクロを作る方法です。

・1ヶ月(1日~31日)が1シート
・1行目はタイトルで、データは2行目から始まっており、2行目が1日、3行目が2日…と続いている
・A列に日付、B列に出社時刻、C列に退社時刻を表示

●手順
・「表示」>「ツールバー」>「コントロールツールボックス」を選択して、コントロールツールボックスを出します。

・その中の「コマンドボタン」を選択し、セル上のボタンを配置したい位置でクリックするとボタンが作成されます。

・ボタンを右クリックして「プロパティ」を選択するとプロパティウィンドウが出ます。Captionと書いてあるところの右を「出社」と書き換えて、Fontの右をクリックしてフォントを好みに指定します。

・ボタンをドラッグ&ドロップしたら移動、隅をドラッグしたらサイズ変更ができるのでお好みの位置とサイズにします。

・作った「出社ボタン」を右クリックして「コピー」を選択し、他のセルの上で「貼り付け」を行うと、もう一つ同じボタンができます。

・そのボタンの位置を調節し、プロパティウィンドウのリストボックスからCommandButton2を選択して、Captionを「退社」に変更します。

・「出社」ボタンをダブルクリックすると、VBAの画面が開き、

Private Sub CommandButton1_Click()

End Sub

と自動的に表示されるので、その間に以下のマクロをコピーして貼り付けます。

 Cells(Day(Date) + 1, "B").Value = Time

"B"は出社時刻を表示する列名に置きかえてください。データが2行目からでなく、もっと下の行から始まるのであれば、 + 1の部分を、データが始まる行より上にある行数に変えてください。

・エクセルの画面に戻り、同様に「退社」ボタンをダブルクリックすると、

Private Sub CommandButton2_Click()

End Sub

と出るので、その間に、

 Cells(Day(Date) + 1, "C").Value = Time

と入力します。"C"と + 1 は出社時刻と同様に実際の表に即して書き換えてください。

・エクセルの画面に戻り、コントロールツールボックスの青い三角定規のボタンを押し、そのボタンがへこんでいない状態にします。

これで、「出社」ボタンを押すと自動的に出社時刻が、「退社」ボタンを押すと退社時刻が、その日の行に入力されるようになります。

不明な点があれば補足をお願いします。

この回答への補足

ありがとうございます。

とても分かり易いご説明で、私でも作成できました。
感動してしまいました。

現在使用の表に適応させようと思っていますが、
時間軸が横になっています。
同じようにマクロ部分を変更してみましたが、エラーになってしまいます。
縦軸でないと無理でしょうか?

また、一度押したら確定(押し直しができない)とすることはできますでしょうか?

補足日時:2007/03/20 15:24
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q[EXCEL]ボタン押す→時刻が表に入る方法

会社で勤務時間をEXCELで管理することになりました。(タイムカードのように)
毎日、出勤時、退勤時にその時刻を入力していく必要があり、少しでも操作の手間を省きたいので、
ボタンのようなものを設置して、今の時刻が表の中の必要なところに入るようにしたいのですが、
EXCELでそういうことはできますか?

Aベストアンサー

可能なのだが、エクセルVBAを知ってないと、うまく行かないし、他人にデータ入力を任せる場面があるなら、それなりの防御機能を考えないとだめです。
しかし今でも、誤ったら他人の行にデータを入れ放題ですか。
こういうのはお金(給与)や名誉(遅刻)に関連することで、個人が所有CDの整理表を自分で作るなどとは違うのです。
エクセルなどというソフトはそういうことに適してないのです。
既に回答で言及の在るフォームなどを使って、他人(他行)のデータは隠したり(見えないように)し足りは出来ますが、VBAも中級程度のならないと。ある程度システム思考に慣れないと無理です。
CTRL+:、CTRL+;などの操作を覚えてもらうほうが良いでしょう。ボタンクリックとそう手間は変わらない。

Qエクセルでタイムカードを作成していますが。

エクセルでタイムカード(労働時間の管理)をしています。
労働時間の計算方法で困っております。

1.退勤時間から出勤時間を引くと、ある1日の労働時間が出ますが、会社では休憩時間が1時間あるため、その1時間を引く計算をしたいのです。
 単純に 退勤時間-出勤時間-1時間 を引けば計算はできますが、ある1日が休日だった場合、「-1:00」と表記されてしまいますので、休みの日を空白にしたいのです。この場合はどうしたら良いでしょうか。

2.仮に上記の列をif関数を使うことも考えたのですが、会社では
休憩時間を1時間を目一杯使わなかった場合、割増しをしています。
このとき上記の列でif関数を使っていると、最終の労働時間で”value!"と表示されてしまいます。この場合の計算式を教えて下さい。宜しくお願いします。

Aベストアンサー

grzero6emoさん 今日は!
■Excel(エクセル)実用編:時給計算書の作成例(Excel2003/2002)↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/jikyu.htm
内容:完成例 基本数値の入力・勤務時間の計算・支払時間の計算・支給額の計算・日付・「時刻/時間の基本的な計算方法」などは別ページで説明しています。完成例はサンプルファイル(jikyu-01.zip 約20KB)のダウンロードすると詳細な手順が図解されてます)
■Excel(エクセル)講座 Q&A(Tips):時刻・時間関連↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel/ex-q-a/q_jikoku.html
内容:時刻の計算→勤務時間の計算を例として説明します。
■エクセルでお仕事!(目次)↓
http://www.asahi-net.or.jp/~ef2o-inue/top01.html
内容:全体メニュー→VBA基本・VBA応用・ダウンロードで関係するVBA・
マクロを参考にして探して下さい。

時刻のシリアル値・勤務時間の計算・勤務時間の計算→パートの人の勤務時間計算で、定時が 9:00~17:00 となっている場合の計算方法を考えてみましょう。(【30分単位で丸める】)等が図解されています。
■Excel実用編:勤務時間の計算例(関数)↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel/nyumon/kinmu/index.html
内容:1.勤務時間計算の条件設定
2.通常勤務の時間帯 :  8:00~17:00(休憩時間 12:00~13:00)
3.残業時間帯    : 17:00~22:00
4.深夜残業時間帯  : 22:00~30:00 (翌朝 6:00)
5.出勤時間は30分単位で切り上げ、ただし、8:00以前の出勤はすべて  8:00出勤とします。
6.退勤時間は30分単位で切り捨てとします。
7.勤務時間の計算は30分単位で切り捨てとします。
等の関数の使用法が図解されています。
■Excel(エクセル)関数の技:目次↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel/waza/index.html
内容:日付に関する技・日付に関する技・祝日一覧表・時刻・時間の計算に関する技を参考にして下さい。
■Excel(エクセル) VBA入門:マクロの自動記録と実行↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_01.html
内容:マクロの自動記録・マクロの実行・フォームのボタンに登録する・ ツールバーに登録するなどはマクロの作成時に参考になります。
プログラムは全体の構成を決めてから作成する物で1種のノウハウですから計算式だけに拘らず他の人が作成したプログラムを多く見て自身でノウハウを持つことが大切だと思います。

grzero6emoさん 今日は!
■Excel(エクセル)実用編:時給計算書の作成例(Excel2003/2002)↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/jikyu.htm
内容:完成例 基本数値の入力・勤務時間の計算・支払時間の計算・支給額の計算・日付・「時刻/時間の基本的な計算方法」などは別ページで説明しています。完成例はサンプルファイル(jikyu-01.zip 約20KB)のダウンロードすると詳細な手順が図解されてます)
■Excel(エクセル)講座 Q&A(Tips):時刻・時間関連↓
http://www.eurus.dti.ne.jp/~yoneyama/Exce...続きを読む

Qエクセルをタイムカード代わりにする方法

Macユーザーです。(OS10.5)
PCを使う仕事なのですが、ふだんOffice系ソフトは使用しない職種のため、質問します。

エクセルをタイムカード代わりにできる、ということを聞きました。
ですが、エクセルを使い慣れないため、どうすればいいのか、まったく分りません。
セルに時間を入力するのでは、自己申告みたいになってしまいますよね?
PCの時間とリンクさせて、エクセルのファイルに時間を記載できたりするのですか?
「マクロ」というものが関係しているようなのですが、ヘルプを見てもどういうことなのか分りませんでした。
ネットでも調べてみたのですが、やり方の詳細が分るページを見つけることができませんでした。

エクセルをタイムカードのように使用する方法、
詳細がのっているページをご存知の方、よろしくお願いします。

Aベストアンサー

>PCの時間とリンクさせて、エクセルのファイルに時間を記載できたりするのですか?

手動でも、Ctrlキーを押しながら":"を押せばPCの時間を入力できます。

マクロにする場合は、コマンドボタンをセル上に配置して
ボタンを押すと選択したセルに時刻をSETするという方法になります。

Sub ボタン1_Click()
ActiveCell = Time()
End Sub

QA1セルに入力したら、入力時間をA2セルに自動挿入

こんにちはtmgmです。

Excelでちょっと困っています。
「A1セルに文字を入力したときの時間をA2セルに表示する」ということがやりたいのですが、
実際やってみるとなかなか出来ませんでした。

A2セルの書式をhh:mmなどにして、セルに=if(A1<>"",NOW(),"")と書きました。
これで一応A1セル入力でA2セルに時間は挿入されますが、Excelの自動計算機能により、一度閉じてまた開いた場合や他のセルで自動計算を行うような入力をした際などに時間が更新されてしまいます。
時間が更新されてしまってはだめなんです。

かといってツール→オプションから自動計算を手動にすると、その他の計算(例えばSUM関数など)の自動計算に影響がでて、使い勝手が違ってくるし。。。。


どうすればよろしいんでしょうか?
お分かりになる方ご返答宜しく御願い致します。

Aベストアンサー

VBAで。

シート名を右クリックしてコードの表示を選び、出てきたVBE画面(何か書かれていたら消して)に書きます。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r As Range
 For Each r In Target
  If r.Column = 1 Then
    r.Offset(0, 1).Value = Format(Now, "hh:mm:ss")
  End If
 Next r
End Sub

試すのはテスト環境で。

QEXCELのセルへ、デジタル時計を表示できますか?

excelのセルへリアルタイムの時計を表示することは
できるのでしょうか?
=now()では入力時の時刻が落ちるだけですよね・・・

HPではjavascriptなどで比較的簡単のようですが
エクセルでは難しいのでしょうか??

Aベストアンサー

以下の手順でやってみてください。
ワークシートを開き、

1.AltキーとF11キーをいっしょに押してVisualBasicEditorを呼び出します。
2.メニューから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。

Sub test01()
With Sheets("Sheet1").Range("A1")
.Value = Time
.NumberFormatLocal = "h:mm:ss"
End With
Application.OnTime Now + TimeValue("0:00:01"), "test01"
End Sub

3.Alt+F11キーでワークシートへもどります.
4.メニューから、ツール、マクロ、マクロで出てきたマクロ名(test01)を選択して実行します。

これでSheets("Sheet1")のA1に毎秒ごとに時刻が表示されます。

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Qエクセルでのタイムカード集計の方法についてです。

お世話になります。

エクセルで

8:00 17:00 と表示して休憩の1時間を引いて

(1)8時間以上の方は8:00と表示

(2)それ以外の方は分数どおりに表示

(3)合計人数の合計時間の表示

と、表を作りたいのですが、どのような関数を使ったりするのかが、全くわかりません。

ご回答の程、どうぞよろしくお願いいたします☆

※エクセル添付の方法が分からず「お絵かき」ですみません☆

Aベストアンサー

開始時間がA2セル、終了時間がB2セルに入力されており、必ず1時間の休憩がはいるという前提なら以下のような式になります。

=IF(B2-A2-"1:00">"8:00"*1,"8:00"*1,B2-A2-"1:00")

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qエクセルで勤怠管理表で休憩時間を計算させるには

エクセルで、社員の出勤時間の計算をしたいのですが、
休憩時間の控除の計算式がよくわからずに困っています。

パートさんが多いので、労働時間により休憩時間が異なり、下記のようにしています。
4時間30分未満=0分
4時間30分以上=30分
6時間以上=45分
8時間以上=60分

現在使用しているデータの時間表示は、出社「9:00」退社「17:00」延べ時間「8:00」というような、60進法の時分表示です。
これを、10進法表示にはしない方法で計算したいです。

現在の表では、
Aセル=出社時刻、Bセル=退社時刻、Cセル=述べ就労時間、Dセル=休憩時間、Eセル=勤務時間(←述べ就労時間-休憩時間)
にしているのですが、

Dセルの休憩時間が自動計算設定の仕方がわからず、述べ就労時間を見ながら手入力しています。(かなり手間なのと、間違いのもとなので)
これを自動計算できるようにしたいのですが・・

教えて頂けたら大変助かります。
宜しくお願いします。

Aベストアンサー

IF文で
=IF(C2<"4:30"*1,0,IF(C2<"6:00"*1,"0:30"*1,IF(C2<"8:00"*1,"0:45"*1,"1:00"*1)))

Qエクセルのセルにカレンダーを表示させ、日付をセルに入力させたい

エクセルについて教えて下さい。

エクセルのセルをクリックすると、
カレンダーのようなものが表示され、
マウスで選択すると、
セルに日付が入力されるようにするには
どうしたらよいですか?

すみませんが、宜しくお願い致します。

Aベストアンサー

#02です。foo-mさんがVBAをお使いになるなら、以下のサンプルをいじってみてください。

このサンプルはC4セルがクリックされたときにカレンダーコントロールを表示して、日付を選んだらその日付をC4に書き込み、カレンダーコントロールを閉じるマクロです。

Private Sub Calendar1_Click()
Selection.Value = Calendar1.Value
ActiveSheet.Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$4" Then
ActiveSheet.Calendar1.Visible = True
End If
End Sub

マクロはシートのモジュールとしてペーストして下さいね


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング