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

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

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

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答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

  • セルの書式設定

    VBAで時刻の列を別シートにCOPYしたところ、 セルの書式設定まではコピーされず、 ハチャメチャな数字が表示されてしまいました。 セルの書式設定もコピーできないでしょうか? Sheets("Sheet3").Columns(1).Value = Sheets("Sheet1").Columns(1).Value でやってます。

  • excelで書式設定ができません。

    excel2000を使っており、データが入ったファイルを もらったのですが、なぜだか書式設定ができません。 右クリックの書式設定、書式(O)→セル(E)ともに 表示はされるのですが、選択しても何も起きません。 ctrl+1、も何もおきません。 ツール(T)→保護(P)を選んでみても、 "シート保護の解除"は出ないので、 シート保護等はされていないと思われます。 さらに、ツール(M)→マクロ(M)→マクロ(M)も 何も表示されないのでマクロも組まれていないようです。 どなたか原因がお分かりになる方がいらっしゃったら お返事お願い致します。

  • セルの書式が標準なのに文字列にできるのはなぜ?

    会社のシステムで吐き出したデータですが セルの書式設定が標準なのに文字列となっています。 マクロを利用して、あるセルの値を別セルへ転記すると、 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示になってしまいます。 会社のシステムが吐き出したエクセルはセルの書式が標準なのに 中の数字が文字列でいられるのが疑問です。 会社のシステムの吐き出したデータは Microsoft Excel 2.1ワークシートで 全てのセルの書式設定は「標準」です。 で例えば 12345678901234 は 12345678901234 と表示されていて 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) 0101という値のセルでも 表示は0101ですが 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) それらのセルの値をマクロとかで別セルに転記すると 転記先では1.23457E+13 と表示されてしまいます。 (0101は101になります。) まっさらなエクセルに自分で手入力すると ・セルの書式設定が標準だと 12345678901234 ↓ 1.23457E+13になります。 ・セルの書式設定が数値だと 12345678901234 ↓ 12345678901234 ・セルの書式設定が文字列だと 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) なのに会社のシステムの吐き出しデータは セルの書式設定が標準なのにもかかわらず 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) となっています。 手入力で書式設定が標準の状態でセルに12345678901234 と表示させるには先頭に ' をつける方法しか知りませんが ' が無いのに表示されています。 でもこの該当セルをマクロで別セル(書式設定:標準)に転記すると 1.23457E+13 となります。 またシステムが吐き出したエクセルの同じシート内に 以下のマクロで転記すると ↓ Sub 転記() 行 = 2 Do If Cells(行, 6).Value = "" Then Exit Do If Cells(行, 6).Value >= 10 Then Cells(行, 7).Value = Range("A2") Else Cells(行, 7).Value = Range("A3") End If 行 = 行 + 1 Loop End Sub ↓ このマクロだと A列~F列が書式設定が標準なのに文字列として表示されているのですが 転記先のG列が書式設定が標準であっても 12345678901234 (数値が文字列と保存されています と注釈有) と同じ状態のまま転記できます。 新しいBOOKのシート2に 会社の吐き出しデータをシートコピーした後、 (セルの書式設定:標準だが文字列で表示されている) そのBOOKに登録されているマクロで シート2のセルからシート1のセル(書式設定:標準)に転記すると 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示 となってしまいます。 ちょっと混乱しています。 理屈等教えていただければと思います。お願いします。

  • エクセルのセル書式設定について

    エクセルのセル書式設定について教えてください。 セルA1に文字列「052」と入力すると、B2に「0 5 2」と表示されるようにするには、 書式設定をどう設定したら良いですか? ちなみに、A1を文字列ではなく数値で設定し、B2をユーザー定義「# # # #」で登録すると、 A1は「52」、B2は「5 2」と表示されてしまいます。 A1を「052」と表示させる為には、文字列として設定しなくてはいけないが、 そうするとB2の値も「052」と表示されてしまいます。 どなたか良い方法を教えてください。

  • Excel2000でセルの書式設定を変更させたくない

    Excel2000でセルの書式設定を変更させたくない Excel2000を使用しています。 Excel2002?以降では、書式設定を保護できるらしいですが、2000ではそのような機能がありません。でも、データを貼り付けた際に書式設定を変更させたくないのですが、何か方法がありますでしょうか? 具体的には、シート内のある範囲内(B3-F43)までを書式設定で「縮小して全体を表示」に設定してあり、「折り返して全体を表示する」のチェックを外してセル1行で表示するよう設定しています。 ここに改行付きの文字列データをコピーして貼り付けると、「折り返して全体を表示する」に勝手にチェックが入ってセル1行では表示しきれなくなり、文字全体が読めなくなるのですが、この勝手にチェックされてしまう「折り返して全体を表示する」のチェックをマクロを使って、自動で外す方法とかありますでしょうか? とりあえず現状は貼り付け前に一度、テキストエディタで改行を削除する編集をしてからデータを貼り付けるようにしてるのですが、面倒なのでできれば改行付きデータを直接Excelに貼り付けても「折り返して全体を表示する」にチェックが入らないようにしたいのです。 マクロの知識はまったくないので、どなたかお知恵を貸していただけないでしょうか? 現在、他の件でマクロを教えていただいて、Thisworkbookという所に、Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)とかいうマクロを記述してあります。 Excelデータを上書きセーブする際にこのマクロが走るようなんですが、これに追記する形で、B3からF43までのセルの書式設定の「折り返して全体を表示する」のチェックを強制的に外すことができると助かるのですが。 同じシート内に、「折り返して全体を表示する」を使用しているセルもあるので、シート全体の書式設定を変えてしまうのではなく、あくまでB3からF43までの範囲のセルで設定したいのですが、こういうことはマクロで可能なのでしょうか?

  • セルの書式設定

    教えて下さい VISTA、Excel2007で 1か月31日間のロット計算のシートを作っています 製造個数50個毎に取り出し破壊検査をします。 製品種類は40種類程あります 日計(セルB2)に数量を入力すると累計(セルC2)に 前日累計+本日の日計が計算され、累計が50個になると ロット(セルD2)がきた事を知らせる"●"を表示させています 以下は表のイメージです A, B, C, D 1,日付 .日計.累計.ロット 2, 1日 , 20個, 20個, 3, 2日 , 35個, 55個,● 4, 3日 , 0 ,   , 5, 4日 , 25個, 80個, 6, 5日 ,   ,   , 7, 6日 ,  ,  , 日曜日や、まだ期日の来ていない日の累計は前日と同数なので空欄の ように見せかける為、[条件付き書式]で新しいルール [指定の値を含むセルだけを書式設定]を選び [次のセルのみを書式設定(O)]でセルの値 次の値に等しい 一行上のセルを選択した後 書式設定でセルのフォントで白色を選び見掛け上空欄にし目的を達しています。 只これですと 40種類×31日で1200ヶ所以上設定しなければなりません もっと簡単な良い方法があればご教授いただけませんでしょうか?  * セルC2に =IF(B2="","",C2)の方法はうまくいきませんでした。

  • Excelセルの書式設定に関して

    01、02など、0から始まる数字を計算したいのですが、 セルの書式設定が標準の場合、計算はしてくれますが、 01は1、02は2と表示されてしまいます。 セルを文字列にすると01と表示されますが、計算をしてくれません。 01の前にアルファベットをつけると書式設定が標準でもa01と表示され 計算もしてくれるのですが、すべてのデータの頭にaをつけるのが大変手間がかかります。 01、02が文字列ではなく標準のままで、表示内容が変わることなく、 計算もしてくれるようにするには、どうしたら良いでしょうか? よろしくお願い致します。

  • エクセルのセル書式設定について

    エクセルのセル書式設定について教えてください。 セルA1に 111222333 と数字を入力しました。 ちょっと見にくいので111-222-333とするために書式設定のユーザー定義で ###-###-### としました。うまくいきましたが、  A1122233B だと - がはいりません。 セルA列には英数字が入ります。見やすくするため表示のみ「-」を 表示させたいです。入力はそのまま「-」なしで入力します。 どうかお願いします。

  • エクセルで日付セルの参照先が空白の場合の書式設定

    エクセル2016です。 例えばシート1のA列に日付を入れる表があって、そのA列のセルを参照してシート2の$B$2に同じ日付が入る表があります。 このA列への日付の入力を忘れがちなのでシート1のA列が空白セルの場合(=シート2のB2セルが1900年1月1日となる)はセルを赤色にしたいのですが。 書式設定で、セルが「1900年1月1日」の時、としてもうまくいかないのですが。 シート2のB2はOFFSET関数でA列の値を引っ張るので、A1=""では書式が設定できませんのでよろしくお願します。

  • エクセルのセルの書式設定について

    お世話になります。 エクセルのセルの書式設定について質問させて頂きます。 sheet1のA1に本日の日付を入れてセルの書式設定のユーザー定義にて"C"yyyymm"-"を設定することで、「C201512-」となりますが、sheet2のA1に「=sheet1!A1」とし、同じ定義で同じ結果「C201512-」を表示させたいのですが、どのような方法がありますか? 尚、状況によって「C201512-」のCについてはsheet1のA1のユーザー定義において「"C"yyyymm"-"」⇒「"D"yyyymm"-"」に変える場合があります。その場合でも、ユーザー定義をsheet2のA1に同じ結果を表示させたいと考えています。 宜しくお願い致します。 もし、もっと効率の良い方法がありましたら、ご教授頂けると光栄です。 尚、使用環境は OS:windows8.1 EXCEL:EXCEL2013 です。

専門家に質問してみよう