前回の続きで、登録と削除です。
どちらもボタンのクリックイベントです。
Private Sub 登録_Click()
Dim IX As Long
Dim 数 As Long
Dim 行 As Long
Dim 名 As String
Dim 記 As String
'複数行になっていたらエラー
If Selection.Rows.Count > 1 Then
MsgBox "複数行は選択できません", vbCritical, "エラー"
Exit Sub
End If
'行位置を取得する
行 = Selection.Row
'行位置の有効性を調べる
If Me.Cells(行, 1) = "" Then
MsgBox "指定行は無効です", vbCritical, "エラー"
Exit Sub
End If
'列数を求める
数 = Selection.Columns.Count
'左端が有効範囲か調べる
IX = Selection.Columns(1).Column
If IX >= 2 And IX <= 27 Then
'右端が有効範囲か調べる
IX = Selection.Columns(数).Column
End If
If IX < 2 Or IX > 27 Then
MsgBox "選択列が有効範囲外です", vbCritical, "エラー"
Exit Sub
End If
'先約がないか調べる
For IX = 1 To 数
If Selection(IX).Interior.ColorIndex <> xlNone Then Exit For
Next
If IX <= 数 Then
MsgBox "予約済みの時間帯を含みます", vbCritical, "エラー"
Exit Sub
End If
'人名が空欄か調べる
名 = 入力者.Text
If 名 = "" Then
MsgBox "入力者が空欄です", vbCritical, "エラー"
Exit Sub
End If
'備考が空欄か調べる
記 = 備考.Text
If 記 = "" Then
MsgBox "備考が空欄です", vbCritical, "エラー"
Exit Sub
End If
'背景色を塗る
Selection.Interior.ColorIndex = 44 '★色は適宜直す
'コメントを設定する
For IX = 1 To 数
On Error Resume Next
Selection(IX).Comment.Delete
On Error GoTo 0
Selection(IX).AddComment 名 & vbNewLine & 記
Next
End Sub
'★======================================
Private Sub 削除_Click()
Dim IX As Long
Dim 数 As Long
Dim 行 As Long
'複数行になっていたらエラー
If Selection.Rows.Count > 1 Then
MsgBox "複数行は選択できません", vbCritical, "エラー"
Exit Sub
End If
'行位置を取得する
行 = Selection.Row
'行位置の有効性を調べる
If Me.Cells(行, 1) = "" Then
MsgBox "指定行は無効です", vbCritical, "エラー"
Exit Sub
End If
'列数を求める
数 = Selection.Columns.Count
'左端が有効範囲か調べる
IX = Selection.Columns(1).Column
If IX >= 2 And IX <= 27 Then
'右端が有効範囲か調べる
IX = Selection.Columns(数).Column
End If
If IX < 2 Or IX > 27 Then
MsgBox "選択列が有効範囲外です", vbCritical, "エラー"
Exit Sub
End If
'背景色を初期値にする
Selection.Interior.ColorIndex = xlNone
'コメントを削除する
For IX = 1 To 数
On Error Resume Next
Selection(IX).Comment.Delete
On Error GoTo 0
Next
End Sub
尚、シート追加時に1列目に日にちを入れるのを
忘れてました。1日から記入できるよう改造してください。
では検討を祈ります。
お礼
ありがとうございました。 お陰様でなんとか形になりました。 本当にご丁寧に、助かりました。
補足
ご丁寧にありがとうございます! 難しいですが、まずはやってみます。 表示はコメントで大丈夫です。