アプリ版:「スタンプのみでお礼する」機能のリリースについて

勤務時間を入力して労働時間を計算するユーザーフォームです。

出勤時間として、
テキストボックス1に(時間)、例えば13と
入力。
テキストボックス2に(分)、例えば40と入力。

退社時間として、
テキストボックス3に(時間)、例えば18と入力。
テキストボックス4に(分)、例えば30と入力。

コマンドボタン1を押して、sheet1のA1セルに出勤時間、B1のセルに退社時間を転記させたい。
A1に13:40
B1に18:30
この様に転記させたいです。

休みの人の場合は、入力しないでコマンドボタン1を押してA1とB1のセルは空欄に
したいです。

だれか詳しい方、上記を実行できるコードを教えて下さい。
よろしくお願いします。

A 回答 (2件)

こんにちは。



UserFormで気をつけることは、時間で保有してしまうと、24時間以内ですから、それを越えたりする時は、文字で保管しなければなりません。今回はそうでないかもしれませんが、最初から文字列にしています。一応、汎用性のために、保有する変数は、Variant ですから間違えないようにしてください。

一応、UserFormモジュール全部を書いておきます。

'//
Dim TimeA 'モジュール変数(Variant型)
Dim TimeB
Private Sub TextBox1_AfterUpdate()
 If IsNumeric(TextBox1.Value) Then
  TimeA = TextBox1.Value
 Else
  MsgBox "時間を入れてください。", 48
  TextBox1.Value = ""
 End If
End Sub
Private Sub TextBox2_AfterUpdate()
 If IsNumeric(TextBox2.Value) And Val(TextBox2.Value) < 60 Then
  TimeA = TimeA & ":" & TextBox2.Value
 Else
  MsgBox "分を入れてください。(59分まで)", 48
  TextBox2.Value = ""
 End If
End Sub
Private Sub TextBox3_AfterUpdate()
 If IsNumeric(TextBox3.Value) Then
  TimeB = TextBox3.Value
 Else
  MsgBox "時間を入れてください。", 48
  TextBox3.Value = ""
 End If
End Sub
Private Sub TextBox4_AfterUpdate()
 If IsNumeric(TextBox4.Value) And Val(TextBox4.Value) < 60 Then
  TimeB = TimeB & ":" & TextBox4.Value
 Else
  MsgBox "分を入れてください。(59分まで)", 48
  TextBox4.Value = ""
 End If
End Sub

Private Sub CommandButton1_Click()
Dim i As Long
 If TimeA <> "" And TimeB <> "" Then
  ActiveSheet.Range("A1").Value = TimeA
  ActiveSheet.Range("B1").Value = TimeB
  tima = "": TimeB = ""
  For i = 1 To 4
   Me.Controls("TextBox" & i).Value = ""
  Next
 Else '二つの変数が空の場合。
  ActiveSheet.Range("A1").ClearContents
  ActiveSheet.Range("B1").ClearContents
 End If
End Sub
'//
    • good
    • 5

ユーザーフォームを挿入。


コマンドボタンを1つ貼り付け。時分の入力終了の知らせ用。
3つテキストボックスをユーザーフォームに貼り付け。
氏名、時刻時、時刻分の入力用とする。
シートのD1に==TIMEVALUE(B1&":"&C1&":"&0)
セルの表示形式時刻の中で好みのもの設定
ーー
コード
Private Sub CommandButton1_Click()
Range("A1") = TextBox1.Value
Range("B1") = TextBox2.Value
Range("C1") = TextBox3.Value
End Sub
ーー
ユーザーフォームの実行。
フォームへ入力
コマンドボタン1に山田 一郎(氏名)
コマンドボタン2に13
コマンドボタン3に40
コマンドボタンをクリック
--
シートのD1に 13:40:00 と現れる。
これでは物足りないと思います。どこでしょう?
そちらの点こそ質問に書かないと解決にならないと思う。
全般に、質問者には、まだ早やすぎる課題ではと感じた。
上記程度では実用にならないと思う。
休みの場合とかは省略。
入力者(たとえば従業員)が複数いるとすると、その人の行を見つけて
その行のÐ列にデータをセットしなければならないのでhさ。
こちらの方がVBAとしてはずっとむつかしい課題と思うが、質問には何も
触れてない。
    • good
    • 2

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

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


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