ここから本文です

エクセルVBAで勤怠表を作ろうとしていますが、VBEの書き方が分かりません。 超初...

rea********さん

2010/8/1614:54:18

エクセルVBAで勤怠表を作ろうとしていますが、VBEの書き方が分かりません。
超初心者の私に、分かりやすく教えていただけませんか?

VBAをやりはじめて1か月足らずの超初心者です。
やろうとしていることは、
①初期画面上でInputBoxに「山田一郎」と名前を入力すると、「山田一郎」と名前をつけたシートにジャンプする。
②「出勤打刻ですか?」と表示されたMsgBoxの「はい」ボタンをクリックすると、タイムカードの本日分の出勤時刻欄にクリックした時刻が入力される。
という、2つの操作です。
分かりやすくお教えいただけたら幸いです。

閲覧数:
3,105
回答数:
4
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

kky********さん

2010/8/1616:22:05

>タイムカードの本日分の出勤時刻欄にクリックした時刻が入力される。
この部分は意味がよく解りません。タイムカードの時刻が自動でエクセルに入力されるのは無理です。
以下のマクロは下図の例のような出勤表の場合、氏名シートが表示され、本日日付の出勤時刻のセルにカーソルが行くだけのものですが、応用してみて下さい。

Sub Macro()
Dim Message, Title, MyValue
Message = "氏名を入力してください。"
Title = "入力"
MyValue = InputBox(Message, Title)
Sheets(MyValue).Select
MsgBox "出勤打刻ですか?"
Cells(Day(Date) + 1, 2).Select
End Sub

>タイムカードの本日分の出勤時刻欄にクリックした時刻が入力される。...

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

ads********さん

2010/8/1705:16:52

”タイムカードを押す”代わりを
Excelでやらせるにしては、
ちょっと手間のかかる方法に思えますが。
⇒勉強の上での事ならば、
この手順でも良いのかな?

xls********さん

2010/8/1700:19:27

試してください。
kkyy5223さん提示のレイアウトを想定

Dim ws As String
Dim ret As Variant
Dim msg As String

msg = "名前を入力してね。"
ws = Application.InputBox(msg)
If ws <> "False" Then
Sheets(ws).Select
Range("A1").Select
msg = "出勤打刻ですか?"
ret = MsgBox(msg, vbOKCancel, "打刻")
If ret = vbOK Then
Range("A2:A33").Find(Day(Date)).Select
ActiveCell.Offset(, 1).Value = Format(Time, "h:m")
End If
End If

yuu********さん

編集あり2010/8/1618:30:51

kkyy5223さん の回答にマクロの記録でつくった現在時刻を貼り付けをやってみてみました。
自分も勉強中のため、これが正解なのかわかりませんが、一応できました。

Sub Macro()
Dim Message, Title, MyValue
Message = "氏名を入力してください。"
Title = "入力"
MyValue = InputBox(Message, Title)
Sheets(MyValue).Select
MsgBox "出勤打刻ですか?"
Cells(Day(Date) + 1, 2).Select
ActiveCell.FormulaR1C1 = "=NOW()"

End Sub

補足
これだと時間が変わってしまうみたいなので、修正が必要でした。勉強してみます。



Sub Macro()
Dim Message, Title, MyValue
Message = "氏名を入力してください。"
Title = "入力"
MyValue = InputBox(Message, Title)
Sheets(MyValue).Select
MsgBox "出勤打刻ですか?"
Cells(Day(Date) + 1, 2).Select
ActiveCell.FormulaR1C1 = "=NOW()"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormatLocal = "h:mm"
End Sub

一応できたかな?

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる