勤務時間を入力して労働時間を計算するユーザーフォームです。
出勤時間として、
テキストボックス1に(時間)、例えば13と
入力。
テキストボックス2に(分)、例えば40と入力。
退社時間として、
テキストボックス3に(時間)、例えば18と入力。
テキストボックス4に(分)、例えば30と入力。
コマンドボタン1を押して、sheet1のA1セルに出勤時間、B1のセルに退社時間を転記させたい。
A1に13:40
B1に18:30
この様に転記させたいです。
休みの人の場合は、入力しないでコマンドボタン1を押してA1とB1のセルは空欄に
したいです。
だれか詳しい方、上記を実行できるコードを教えて下さい。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.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
'//
No.1
- 回答日時:
ユーザーフォームを挿入。
コマンドボタンを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としてはずっとむつかしい課題と思うが、質問には何も
触れてない。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】ボタンを押すごとに、A1セル、A2セル、A3セルに日付を入力 3 2023/01/25 00:12
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- その他(ビジネス・キャリア) 日報の実務労働時間の集計について困っています。 2 2023/06/09 19:00
- Excel(エクセル) エクセルの早退時間を計算したいです。計算はうまくいっているようですが… 1 2022/12/26 16:22
- Excel(エクセル) 入所時間(A1)と退所時間(B1)をセル(C1)に片方だけ表示したい 4 2022/10/13 20:59
- Excel(エクセル) エクセルの時間の計算、何時以下の場合の足し引きに苦戦しています。 2 2022/11/16 16:39
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
- Excel(エクセル) Excel関数で日またぎの勤務時間にしるしを立てる 2 2022/04/20 17:22
- Excel(エクセル) Excel 数式を教えてください 2 2022/06/02 12:24
- Excel(エクセル) Excel 関数 数式 について 2 2022/09/02 21:45
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
エクセルVBAのフォームで日時を入力しやすくしたい
Excel(エクセル)
-
ユーザーフォーム上に現在日時と時刻を表示させていますがフォームを実行すると時間が更新されません。それ
Visual Basic(VBA)
-
excelVBA コンボボックスに時刻で表示したい
Excel(エクセル)
-
-
4
ユーザーフォームに今の時間を表示
Access(アクセス)
-
5
ユーザーフォーム時間表示
Excel(エクセル)
-
6
ユーザーフォームのテキストボックスで時間計算
Visual Basic(VBA)
-
7
UserForm1.Showでエラーになります。
工学
-
8
時間をvbaでセルに1:00と入力する場合
Excel(エクセル)
-
9
Excelにて、ユーザーフォームで作成したテンキーの、表示している数字を セルに転記したい
Yahoo!ショッピング
-
10
フォームテキストボックスの表示設定
Excel(エクセル)
-
11
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
12
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
15
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
18
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
19
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
20
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBユーザーフォームで時間入力
-
コマンドプロンプトが実行中か...
-
Excel VBA コマンドライン(MS-...
-
VB2008の初心者です。VB6のツ...
-
ttlで戻り値を取得する方法
-
AcceccDataSourceに対する任意...
-
バッチファイルでキー操作を行う。
-
【C#】 DOSコマンドを使いたい
-
ディスクの空き容量を取得する...
-
IBMメインフレームの勉強法
-
パソコン、コマンドプロンプト...
-
コマンドプロンプトですべてのU...
-
ExcelVBAでDOSコマンドの標準出...
-
VBでネットワーク上のコンピュ...
-
N88 BASIC リスト表示方法
-
[ASP]BASICで使えたような「G...
-
コマンドとコマンドラインとコ...
-
C#でローカルユーザーやグルー...
-
コマンドラインからのIPアドレ...
-
TEXの表の位置が・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルでキー操作を行う。
-
コマンドプロンプトが実行中か...
-
コマンドプロンプトで表示が多...
-
ttlで戻り値を取得する方法
-
別のユーザーフォームのコマン...
-
VBユーザーフォームで時間入力
-
Tera Term Proに関する質問です。
-
コマンドプロンプトですべてのU...
-
コマンドキーがないんですけど...
-
TEXの表の位置が・・・
-
ルーターにつながっている全て...
-
デフォルトのショートカットキ...
-
dosバッチ起動後、画面を閉じな...
-
文字の点滅はどうやるのですか?
-
EEPROMのデータの初期化について
-
RTX1100の削除コマンド
-
JP1起動バッチについて
-
コンボボックス(最終行取得)
-
makeコマンドのエラー
-
ディスクの空き容量を取得する...
おすすめ情報