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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
[EXCEL]ボタン押す→時刻が表に入る方法
Excel(エクセル)
-
【マクロ】ボタンを押すごとに、A1セル、A2セル、A3セルに日付を入力
Excel(エクセル)
-
Excelマクロでタイムカードの入力を簡単にしたい。 Excel初心者です。 会社のタイムカードがカ
Excel(エクセル)
-
-
4
EXCELのセルへ、デジタル時計を表示できますか?
Excel(エクセル)
-
5
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
6
エクセルのコントロールツールボックスの出し方。
Visual Basic(VBA)
-
7
ダブルクリックすると現在の時刻が表示されるVBA
Excel(エクセル)
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンに詳しい方教えて下さ...
-
CSVファイルで誤って上書き保存...
-
回復ディスクを別のPCで復元で...
-
お名前(姓)」には「カタカナ(...
-
バッチファイルでファイル移動...
-
中高生限定の恋愛相談webサービ...
-
グリコが「システム障害」で大...
-
スタンドアロンPCのWindows update
-
ホームページの仕組みについて
-
ミリ波を使用して映像をモニタ...
-
Windows のパソコンについて。 ...
-
パソコンをネットに繋いでいな...
-
Windows11の「スタンバイ」がな...
-
システム開発の会社で、額面24...
-
QRコードについて
-
KADOKAWAって今、システム障害...
-
copilotとはなんですか?
-
富士通パソコンのFujitsuという...
-
ディープラーニングの知識は需...
-
汚水処理槽(コンクリート)の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで打刻(タイムレコーダ)
-
VBA カレンダー参照エラー
-
例えば192.168.1.10はプライベ...
-
しばらくするとネットワークの...
-
タイムゾーン
-
エクセルで時間計算。ほんとう...
-
MSエクセルのif関数にて
-
社内資産管理のツール
-
ヤフオクでの在庫管理
-
表作成(EXCEL)
-
【Excel関数】特定の文字を別表...
-
エンジン発電機をインバーター...
-
1から100までの自然数で、2.3.5...
-
111111を素因数分解すると 1111...
-
帰還率β
-
文字変換において、m3(立方)の...
-
エクセルで住所の数字を漢数字...
-
DocuWorks 文字認識 検索でき...
-
マージナル不良とは?
-
PowerPointで比例記号を入力す...
おすすめ情報