
勤務時間を入力して労働時間を計算するユーザーフォームです。
出勤時間として、
テキストボックス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
ユーザーフォーム上に現在日時と時刻を表示させていますがフォームを実行すると時間が更新されません。それ
Visual Basic(VBA)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
ユーザーフォーム時間表示
Excel(エクセル)
-
7
フォームテキストボックスの表示設定
Excel(エクセル)
-
8
vba セルに入力した時間をマクロで受け取るには?
Excel(エクセル)
-
9
時間をvbaでセルに1:00と入力する場合
Excel(エクセル)
-
10
UserForm1.Showでエラーになります。
工学
-
11
VBA入力フォームで労働時間の計算をしたい
Visual Basic(VBA)
-
12
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
13
ExcelのComboboxでマウスのスクロールを有効にしたい
Excel(エクセル)
-
14
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
15
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
16
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
17
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
18
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
19
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
20
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトが実行中か...
-
コマンドプロンプトで表示が多...
-
ttlで戻り値を取得する方法
-
VBA でshell関数を使ってコマン...
-
ウィンドウズのDOSコマンドウィ...
-
別のユーザーフォームのコマン...
-
texでエディタを選ばない一括コ...
-
dosバッチ起動後、画面を閉じな...
-
c言語を勉強し始めたばかりの...
-
(コマンドプロンプト)コマンド...
-
VBユーザーフォームで時間入力
-
VBからExcelコマンドの「ソルバ...
-
bashのシェルスクリプトの書き方
-
バッチファイルでキー操作を行う。
-
EEPROMのデータの初期化について
-
コマンドキーがないんですけど...
-
[ASP]BASICで使えたような「G...
-
Tera Term Proに関する質問です。
-
TEXの表の位置が・・・
-
エクセル コマンドボタンでリセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトが実行中か...
-
コマンドプロンプトで表示が多...
-
ttlで戻り値を取得する方法
-
Tera Term Proに関する質問です。
-
バッチファイルでキー操作を行う。
-
別のユーザーフォームのコマン...
-
VBA でshell関数を使ってコマン...
-
VBユーザーフォームで時間入力
-
【Teratermマクロ】文字列の一...
-
文字の点滅はどうやるのですか?
-
system関数でのシェル起動について
-
EEPROMのデータの初期化について
-
PowerShell実行結果をデスクト...
-
VBでDosコマンドを動かすには
-
ディスクの空き容量を取得する...
-
コンボボックス(最終行取得)
-
"伴われる"は正しい日本語ですか?
-
コマンドキーがないんですけど...
-
CreateProcessでの実行ファイル...
-
DOSコマンドでポートから受信
おすすめ情報