- 締切済み
エクセル VBA セルの塗りについて
VBAで下記のようなことをしようと考えております。 ワークスケジュール A B C D E-AF No 開始時間 終了時間 作業者 15分刻みの時刻(08:00-) コマンドボタンを作り、開始時間と終了時間の数値を読み込んで、 E-AFまでのセルに自動で色を塗り分ける。 ワークシートのセル変更に動作する記述はよく見かけますが、ボタンクリックによる動作はなかなか見当たりません。 詳しい方いらっしゃいましたら、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mohenjo
- ベストアンサー率37% (125/335)
回答No.1
カテゴリーが違うようですが、 「User Form」でもワークシートのイベントモジュールでも CommandButton1_Click()という操作が出来ますが!
お礼
少し進捗です。 下記の記述でセルの色が変わりました。 しかしながら、、、少し問題があります。 セルの横列は必ず0:00~になってしまいます。ここを最初のセルの開始時刻にあわせられればと思います。 また、アクティブにカーソルが重なっているセルの数値だけ反映してしまい、その他が反映されません。 すべての開始時刻~終了時刻をボタン1発で反映できればと思います。 よろしくお願いします。 ------------------------------------------------------------ Private Sub CommandButton1_Click() Dim Target As Range Set Target = Selection If Target.Row > 5 Then '3行目以降を対象とする End If Dim 開始列 As Integer, 終了列 As Integer '複数セル変更時は終了します 'If Target.Count > 2 Then Exit Sub 'C列以外は終了します If (Target.Column) <> 3 Or (IsEmpty(Target.Value)) Then Exit Sub Range(Cells(Target.Row, 5), Cells(Target.Row, 75)).Interior.ColorIndex = xlNone On Error GoTo ErrorHandler 開始列 = Application.Floor(DateDiff("n", "00:00:00", Cells(Target.Row, 2).Value), 15) / 15 終了列 = Application.Ceiling(DateDiff("n", "00:00:00", Cells(Target.Row, 3).Value), 15) / 15 Range(Cells(Target.Row, 開始列 + 5), Cells(Target.Row, 終了列 + 4)).Interior.ColorIndex = 15 Exit Sub ErrorHandler: MsgBox "Error Number = " & Err.Number & Chr(13) & _ "Error Message = " & Err.Description, , "Debug" End Sub
補足
はい上記認識しております。 その場合のVBAの記述内容がなかなか見当たりません。