Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2613 / 13645 ツリー ←次へ | 前へ→

【66907】出勤簿作成でご助言お願いします TAC 10/10/16(土) 14:26 質問[未読]
【66908】Re:出勤簿作成でご助言お願いします かみちゃん 10/10/16(土) 14:52 発言[未読]
【66909】Re:出勤簿作成でご助言お願いします TAC 10/10/16(土) 15:13 お礼[未読]

【66907】出勤簿作成でご助言お願いします
質問  TAC  - 10/10/16(土) 14:26 -

引用なし
パスワード
   はじめまして。
初心者ですが、よろしくお願いします。

現在1ヶ月ごとの出勤時間管理表を作成しております。
出勤時間と退社時間を入力することで残業時間を算出させようと
考えてるのですが、
計算条件が7つ以上あるためIF文でのExcelの関数での作成を断念
いたしました。
で、質問なのですが、
1. 関数で作成した時のようにセルに値が入る(変更される)と
  瞬時に自動計算なされ表示したいのですが、
  「SheetChange」イベントを利用してどこのセルの内容が変更
  されてもそのタイミングで「1日」〜「31日」分の残業時間を
  再計算させようと思ってます。
  この考え方で正しい(効率が悪くない?)でしょうか?

あと
2. 年月入力欄を作成し、その値より自動的に「日」列には「1日」〜
  「○○日」、「曜日」列にはそれぞれの曜日が入るような設定は  
  できますでしょうか?

以上、よろしくお願いいたします。

【66908】Re:出勤簿作成でご助言お願いします
発言  かみちゃん E-MAIL  - 10/10/16(土) 14:52 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>1. 関数で作成した時のようにセルに値が入る(変更される)と
>  瞬時に自動計算なされ表示したいのですが、
>  「SheetChange」イベントを利用してどこのセルの内容が変更
>  されてもそのタイミングで「1日」〜「31日」分の残業時間を
>  再計算させようと思ってます。
>  この考え方で正しい(効率が悪くない?)でしょうか?

効率がよい、もしくは、正しいかどうかはわかりませんが、
以下のような感じの処理になるかと思います。

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If IsEmpty(Target.Value) Then Exit Sub
 If Intersect(Target, Range("A1:B2")) Is Nothing Then Exit Sub

 MsgBox "処理します"
End Sub

このコードは、シートモジュールに記述して、
A1:B2のいずれかひとつのセルに、値を入力すると動きます。
複数のセルを一括して入力したり、値を消去したりした場合は、動かないようにしています。

>2. 年月入力欄を作成し、その値より自動的に「日」列には「1日」〜
>  「○○日」、「曜日」列にはそれぞれの曜日が入るような設定は  
>  できますでしょうか?

Sub Sample()
 Dim dt As Date, dtStart As Date, dtEnd As Date
 Dim v(1 To 31, 1 To 2)
 Dim i As Long
 
 dtStart = CDate(Format(Range("A1").Value, "yyyy/m/1"))
 For dt = dtStart To DateAdd("m", 1, dtStart) - 1
  i = i + 1
  v(i, 1) = Day(dt)
  v(i, 2) = Format(dt, "aaa")
 Next

 Range("A2:B32") = v
End Sub

このコードは、標準モジュールに記述してもいいのですが、
アクティブシートのA1セルに 2010/10/1 という形式で入力して、
A2:B32に値を設定するようなコードにしています。

【66909】Re:出勤簿作成でご助言お願いします
お礼  TAC  - 10/10/16(土) 15:13 -

引用なし
パスワード
   かみちゃん様

ご回答いただきましてありがとうございます。
大変助かりますm(_ _)m

自分にとっては初めて見る文字列も多いので^^;
一文ずつ内容の理解を深めさせていただきたいと思います。

また質問投げるかもしれませんが、
何卒よろしくお願いいたします。

2613 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free