No.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)のうち、ここまでやりたい、というご希望があればアドバイスをしますので、補足をお願いします。
ありがとうございます。
これで十分です★
感謝いたします。ちょっと(自分で作ったわけではないですが)こんなものができてしまって
興奮しております♪
本当にありがとうございました。
また、別件で(他に同じような質問がなければ)残業計算などについて
質問させていただく予定ですので
もし、また見かけましたら、ご教授戴ければ幸いです。
No.2
- 回答日時:
直接の回答ではありませんが、
PCの時刻管理を正しく行っていないと、根底から揺らいでしまいます。
PCの時刻は徐々に狂ってくることもありますし、
PCのCMOSバッテリーがへたってきたりすると、正しい時刻が得られません。
WindowsXPでインターネットに接続できる環境なら、
1.タスクバーの右端の時間が表示されている部分で右クリック。
2.サブメニューの「日付と時刻の調整」をクリック。
3.「日付と時刻のプロパティ」ダイアログの「インターネット時刻」タブをクリック。
4.「自動的にインターネット時刻サーバーと同期する」にチェックをいれ
サーバーに「time.windows.com」と入力し「適用」をクリックして「OK」ボタンをクリック。
これで自動的に時刻を同期してくれます。(一週間毎)
No.1
- 回答日時:
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 は出社時刻と同様に実際の表に即して書き換えてください。
・エクセルの画面に戻り、コントロールツールボックスの青い三角定規のボタンを押し、そのボタンがへこんでいない状態にします。
これで、「出社」ボタンを押すと自動的に出社時刻が、「退社」ボタンを押すと退社時刻が、その日の行に入力されるようになります。
不明な点があれば補足をお願いします。
この回答への補足
ありがとうございます。
とても分かり易いご説明で、私でも作成できました。
感動してしまいました。
現在使用の表に適応させようと思っていますが、
時間軸が横になっています。
同じようにマクロ部分を変更してみましたが、エラーになってしまいます。
縦軸でないと無理でしょうか?
また、一度押したら確定(押し直しができない)とすることはできますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
- 仕事術・業務効率化 IF関数で時間指定をして、数値を切り上げたいです 1 2022/05/01 23:37
- その他(Microsoft Office) 勤務表のエクセル作成で数式を教えてください。 1 2023/01/17 03:27
- 医療・介護・福祉 タイムカードの不正打刻に当たるのかどうか教えてほしいです。 1 2022/05/25 17:11
- 労働相談 労働時間が五、六時間 その弐 2 2023/04/04 12:36
- 就職・退職 入社1年目の会社がサービス残業ひどいので退職と同時に請求しようと思うのですが、そのためには証拠が必要 3 2023/06/01 12:56
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- 退職・失業・リストラ パワハラと長時間労働が当たり前、希望休も全く取れない会社で働いています。それでも一度も遅刻欠勤なしで 5 2023/06/27 19:21
- 会社・職場 遅延証明書出しても遅刻?! うちの会社は月1回の欠勤=遅刻or早退2回 という規則があり、カウントが 3 2022/08/03 23:18
- 就職 ホワイト企業ですか? 3 2023/03/10 15:16
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
[EXCEL]ボタン押す→時刻が表に入る方法
Excel(エクセル)
-
Excelマクロでタイムカードの入力を簡単にしたい。 Excel初心者です。 会社のタイムカードがカ
Excel(エクセル)
-
【マクロ】ボタンを押すごとに、A1セル、A2セル、A3セルに日付を入力
Excel(エクセル)
-
-
4
ダブルクリックすると現在の時刻が表示されるVBA
Excel(エクセル)
-
5
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
6
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
7
vba セルに入力した時間をマクロで受け取るには?
Excel(エクセル)
-
8
EXCELのセルへ、デジタル時計を表示できますか?
Excel(エクセル)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで打刻(タイムレコーダ)
-
表作成(EXCEL)
-
(1)のやり方やるときと(3)...
-
【Excel関数】特定の文字を別表...
-
1から100までの自然数で、2.3.5...
-
文字変換において、m3(立方)の...
-
geogebra みたいに
-
NMOSのインバーター VH VL ...
-
CMOSインバータの増幅器として...
-
エンジン発電機をインバーター...
-
ハガキ宛名の住所の数字を漢数...
-
9文3分、10文という足袋のサイ...
-
DocuWorks 文字認識 検索でき...
-
Excel 内の英小文字を大文字にu...
-
トランジスタのところで、電圧...
-
ファンクションジェネレータの...
-
帰還率β
-
トランジスタで高周波での動作...
-
プリンターでスキャンしてPDFに...
-
ブール代数の簡略化の問題につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで打刻(タイムレコーダ)
-
しばらくするとネットワークの...
-
VBA カレンダー参照エラー
-
例えば192.168.1.10はプライベ...
-
ヤフオクでの在庫管理
-
磁気カードリーダ・学生証・エ...
-
エクセルで時間計算。ほんとう...
-
タイムゾーン
-
MSエクセルのif関数にて
-
表作成(EXCEL)
-
帰還率β
-
1から100までの自然数で、2.3.5...
-
文字変換において、m3(立方)の...
-
本音や多数派って、殆どは正し...
-
DocuWorks 文字認識 検索でき...
-
【Excel関数】特定の文字を別表...
-
geogebra みたいに
-
エンジン発電機をインバーター...
-
ハガキ宛名の住所の数字を漢数...
-
マージナル不良とは?
おすすめ情報