• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定曜日の特定セルを書式設定したいです。)

特定曜日の特定セルの書式設定方法について

このQ&Aのポイント
  • 特定の曜日に特定のセルを書式設定する方法について教えてください。月間予定表の作成中で、毎週金曜日と日曜日に特定のセルを図のように書式設定する必要があります。セルの中には「第〇会議室 ・ 時間」という文字列を入力し、セルを結合して中央に配置し、背景をグレーにするようにしたいです。
  • ExcelのマクロやVBAを使用して月を切り替えると日付や曜日が更新され、条件付き書式で色を付けることはできました。しかし、特定のセルの書式設定についてはうまく実装できませんでした。テキストボックスにマクロを登録し、ボタンをクリックすると処理が実行されるような形式にしたいです。金曜日と日曜日のボタンを用意し、それぞれの書式設定ができるようにしたいです。
  • 同様の処理が必要なシートが複数あり、困っています。皆さんの助けが必要です。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range)  dim r as integer  dim d as date  if application.intersect(target, range("A1,D1")) is nothing then exit sub  if range("A1") = "" or range("D1") = "" then exit sub  range("B3:O33").unmerge  range("B3:O33").clearcontents  range("B3:O33").wraptext = true  range("B3:O33").horizontalalignment = xlcenter  range("B3:O33").interior.colorindex = xlnone  application.enableevents = false  for r = 3 to 33   d = dateserial(range("A1"), range("D1"), r - 2)   if month(d) = range("D1") then    select case format(d, "aaa")    case "金"     range(cells(r, "J"), cells(r, "O")).merge     cells(r, "J") = "第一会議室" & vblf & "13:00~16:00"     cells(r, "J").interior.color = xlgray25    case "日"     range(cells(r, "B"), cells(r, "O")).merge     cells(r, "B") = "第二会議室" & vblf & "9:00~16:00"     cells(r, "B").interior.color = xlgray25    case else    end select   end if  next r  application.enableevents = true end sub ファイルメニューから終了してエクセルに戻る A1、D1をてきとーに書き換えると自動で動作する。 #塗色については好みに応じて修正してください。 #オマケ A3セルには =IF(MONTH(DATE($A$1,$D$1,ROW(A1)))=$D$1,DATE($A$1,$D$1,ROW(A1)),"") と記入、セルの書式設定のユーザー定義で d(aaa)と設定 31日のセルまでコピー貼り付ける

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.1です! たびたびごめんなさい。 前回のコードで間違いが2ヶ所ありました。 >If WorksheetFunction.Weekday(Cells(i, "A")) = 1 Then を >If WorksheetFunction.Weekday(Cells(i, "A")) = 6 Then に >ElseIf WorksheetFunction.Weekday(Cells(i, "A")) = 5 Then を >ElseIf WorksheetFunction.Weekday(Cells(i, "A")) = 1 Then に 訂正してください。 曜日と列範囲が違っていました。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >テキストボックスにマクロを登録してボタンを設置し、押した時に・・・ とありますので、テキストボックスを挿入 → 上下左右の小さな矢印になるところで右クリック → マクロの登録 → 編集 → VBE画面に↓のコードをコピー&ペーストしてみてください。 Sub テキストボックス1_Click() Dim i As Long i = Cells(Rows.Count, "A").End(xlUp).Row With Range(Cells(3, "B"), Cells(i, "O")) .ClearContents .UnMerge .Interior.ColorIndex = xlNone End With For i = 3 To Cells(Rows.Count, "A").End(xlUp).Row If WorksheetFunction.Weekday(Cells(i, "A")) = 1 Then With Range(Cells(i, "J"), Cells(i, "O")) .Merge .Interior.ColorIndex = 15 '←グレイ25% .Value = "第一会議室" & vbCrLf & "13:00~16:00" .HorizontalAlignment = xlCenter End With ElseIf WorksheetFunction.Weekday(Cells(i, "A")) = 5 Then With Range(Cells(i, "B"), Cells(i, "O")) .Merge .Interior.ColorIndex = 15 .Value = "第二会議室" & vbCrLf & "9:00~16:00" .HorizontalAlignment = xlCenter End With End If Next i End Sub 1行目の >Sub テキストボックス1_Click() と最終行の >End Sub は表示されますのでその間に2行目以降をコピー&ペーストします。 ※ 各行は2行分表示されるだけの高さが十分あるものとします。 こんな感じではどうでしょうか?m(_ _)m

関連するQ&A