Sub 全てのイベント_Click()
Dim yLINE As Integer 'Y行目
Dim yCombo As Integer 'コンボボックスのY 0から
Dim strWORK As String 'ワーク変数
'コンボ ボックスをクリアー
Sheets("宛先マスター").イベントComboBox.Clear '初期化
Sheets("宛先マスター").イベントComboBox.ColumnCount = 2 '列幅を2
yCombo = 0 'コンボボックスの行を0にする
For yLINE = 2 To 999 '2行目からまわす
strWORK = Sheets("管理表").Cells(yLINE, "A")
If strWORK = "" Then Exit For 'A列イベントの文字無しで抜ける
'イベントの文字をセットする
Sheets("宛先マスター").イベントComboBox.AddItem strWORK
'期日をセット .Listでセットする。0から始まるので注意
Sheets("宛先マスター").イベントComboBox.List(yCombo, 1) = Sheets("管理表").Cells(yLINE, "B")
yCombo = yCombo + 1 '次の行へ
Next
End Sub
次は、期日が3日後のデータをコンボボックスに代入します。
と言っても、日付の範囲で判断・比較して代入しただけです。
dtmADD3Day = DateAdd("d", 4, Date) '<範囲にしたいので3+1の4日後を代入
で、4日後を計算して、下記のIf文で<(未満)で比較して、3日後の判断にしました。
If Date <= dtmWORK And dtmWORK < dtmADD3Day Then
( 今日 より大きく 4日後未満 の 期日をチェックする )
Sub 期日3日前_Click()
Dim yLINE As Integer 'Y行目
Dim yCombo As Integer 'コンボボックスのY 0から
Dim strWORK As String 'ワーク変数
Dim dtmWORK As Date 'ワーク変数
Dim dtmADD3Day As Date '日付型、3日後を計算する。
dtmADD3Day = DateAdd("d", 4, Date) '<範囲にしたいので3+1の4日後を代入
'コンボ ボックスをクリアー
Sheets("宛先マスター").イベントComboBox.Clear '初期化
Sheets("宛先マスター").イベントComboBox.ColumnCount = 2 '列幅を2
yCombo = 0 'コンボボックスの行を0にする
For yLINE = 2 To 999 '2行目からまわす
strWORK = Sheets("管理表").Cells(yLINE, "A")
If strWORK = "" Then Exit For 'A列イベントの文字無しで抜ける
'まず、B列が日付かIsDateでチェックする
If IsDate(Sheets("管理表").Cells(yLINE, "B")) = True Then
dtmWORK = CDate(Sheets("管理表").Cells(yLINE, "B")) 'CDateで変換(念のため)
'日付の範囲をチェックする 当日以上(含む)<= And < 4日後未満(3日後)
If Date <= dtmWORK And dtmWORK < dtmADD3Day Then
'イベントの文字をセットする
Sheets("宛先マスター").イベントComboBox.AddItem strWORK
'期日をセット .Listでセットする。0から始まるので注意
Sheets("宛先マスター").イベントComboBox.List(yCombo, 1) = dtmWORK
yCombo = yCombo + 1 '次の行へ
End If
End If
Next
End Sub
Private Sub イベントComboBox_Change() '値が変更されたら。
'C10から、データをまず消す
Range("C10:C999").Clear 'C10〜C999を無条件クリアー(おぃぉぃ)
'F7に選択されたイベント名をセットする。
Dim strEventName As String 'イベント名
strEventName = Trim(イベントComboBox.Value)
Range("F7") = strEventName 'F7のセルにセットする。
If strEventName = "" Then Exit Sub '空白、初期状態なら そのまま抜ける
'管理表から該当するイベントを探し、参加・不参加をC列にセットする。
Dim yLINE As Integer '行カウンター
Dim strNAME As String 'イベント名ワーク
Sheets("管理表").Select
For yLINE = 2 To 999 '2行目からループさせてイベント名を探す
strNAME = Trim(Sheets("管理表").Cells(yLINE, "A")) 'シートのイベント名を取り出す
If strEventName = strNAME Then Exit For '名称が一致したら抜ける。
Next
If yLINE >= 999 Then 'もし、みつからなかったら?
MsgBox "イベントが見つかりませんでした。コンボボックスを更新して再度実行してください"
Exit Sub '関数を抜ける
End If
'参加・不参加を書き込む。
Dim xLINE As Integer 'X列のカウンター
Dim yMASTER As Integer '宛先マスターのY行目
Dim str社員名 As String '社員名
For xLINE = 3 To 255 'C列 3番目から横方向にループする。
str社員名 = Trim(Sheets("管理表").Cells(1, xLINE)) '1行目のx列 名前を取り出す
If str社員名 = "" Then Exit For '名前が空白なら、終わりにする。
'宛先マスターを探し、一致する名前の横に参加・不参加、空白をそのまま書き込む
For yMASTER = 10 To 999 '宛先マスターの10行目からループする
If Trim(Sheets("宛先マスター").Cells(yMASTER, "A")) = str社員名 Then
Exit For '一致したら抜ける
End If
Next
'一致と不一致のチェック
If yMASTER < 999 Then 'ループを途中で抜けた(見つかったら)
'データのセット 宛先マスターC列に みつけた管理表のy,x のデータをセットする。
Sheets("宛先マスター").Cells(yMASTER, "C") = Sheets("管理表").Cells(yLINE, xLINE)
Else 'ループにかからなかったら(一致しなかったら)
MsgBox str社員名 & " が 宛先マスターにありません、確認後、追加してください"
End If
Next xLINE
'メールの件名と定型文をセットする。
'件名 下記、自由に変えてください。
Sheets("送信文章").Range("A7") = strEventName & " の 参加・不参加を記入してください"
'本文 雛形 下記、自由に変えてください。
Sheets("送信文章").Range("A10") = strEventName & " の 参加・不参加が記入されてません"
Sheets("送信文章").Range("A11") = "期日が迫っているので、記入してください。"
Sheets("送信文章").Range("A12") = ""
Sheets("送信文章").Range("A13") = "よろしくお願いします。"
Sheets("送信文章").Range("A14") = ""
Sheets("送信文章").Range("A15") = "総務部 より"
Sheets("送信文章").Range("A16") = ""
Sheets("送信文章").Range("A17") = ""
Sheets("送信文章").Range("A18") = ""
Sheets("送信文章").Range("A19") = ""
'終了処理
Sheets("宛先マスター").Select
MsgBox "参加・不参加を転記しました。確認後、メールを作成してください。"
End Sub