• ベストアンサー
  • すぐに回答を!

今日の日付に該当するシート名に赤色を

いつもお世話になります。 WIN7 EXCELL2010 です。 A1に「20140721」と記入しエンターキーを押すと下記のマクロでシート名が自動で「20140721」となるようにしています。 例えば今日(7月21日)になったら自動で赤色にしていくつかあるシートの中で今日のシートを目指させたいのでご指導いただけませんでしょうか。 参考に Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub 是非ご協力をお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数71
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.1
  • MackyNo1
  • ベストアンサー率53% (1521/2850)

ThisWorkBookに以下のコードを貼り付けてみてください。 Private Sub Workbook_Open() Dim mySheet As Worksheet For Each mySheet In Worksheets mySheet.Tab.ColorIndex = 19 If mySheet.Name = Format(Now(), "yyyymmdd") Then mySheet.Tab.ColorIndex = 3 End If Next End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

またもお世話になります。 さっそくご回答いただきありがとうございます。 本当にご協力感謝 感謝です。 上手くできました。 今後ともこれに懲りずまたご指導ください。

関連するQ&A

  • マクロでシート名を変更を変更したい

    A1セルの値をシート名にするマクロは以下のとおりだと思います。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub では、E6セルの値をシート名にすることは可能でしょうか? よろしくお願いします。

  • オープンオフィスでシート名をセルから参照するには

    マクロ初心者です。 こちらの質問(http://okwave.jp/qa/q2025849.html)と同じような内容ですが、 試行錯誤してもOpenOffice Calcでできなかったため質問させていただきます。 OpenOffice Calcで、セル「A1」に入力されてある文字を対応するシートの名前に自動で設定するには、どのようなマクロを記述すればいいのでしょうか? エクセルで使用できる Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub をVBA互換モードで試しましたが、無理そうでしたのでOpenOffice.org Basicで使えるように変換して記述したいところです。 ですが、オープンオフィスのThisWorkbookはどのように使うのかなどさっぱり理解できなかったので、どなたか詳しい方教えてください。 よろしくお願いします。

  • コンパイルエラー Target.Range

    シート上のセルに値を入力したら、 入力した値をイミディエイトに表示させたいのですが Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Debug.Print Target.Range End Sub こうすると、 コンパイルエラー 引数は省略できません。 になります。 .Range の部分がエラーになります。 原因と対策を教えてください。

  • シート名を自動で

    久し振りにお世話になります。 よろしく御願いします。 windowsXP EXCELL2003 です。 下記を採用しました。 表題 「エクセルのセルに名前を入力するだけで自動的にそのシートタブもその名前に」 アドレス http://oshiete1.goo.ne.jp/qa5775792.html 内容 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Cells = Range("A1") And Range("A1") <> "" Then ActiveSheet.Name = Range("A1").Value End If End Sub でばっちりできました。 ただ 何かのミスで A1 の内容を変更した場合シート名が変わりません。 1 もし A1 が変更された時シート名も変更されることが可能でしょう  か。 2 大変厚かましいのですが追加の要望としてシートの色(コード20)  もつけられれば良いのですが。 もし可能ならば上記の「内容」をどう変更すればいいかご教授ご指導を仰ぎたいです。 よろしく御願いします。

  • なぜ、ByVal Sh As Objectは

    NewSheetイベントについて質問なのですが、 なぜ、ByVal Sh As Objectは、Objectなのでしょうか? Sub Workbook_NewSheet(ByVal Sh As Worksheets) や Sub Workbook_NewSheet(ByVal Sh As Worksheet) にしたら、コンパイルエラーになります。 シートの方では、 Private Sub Worksheet_Change(ByVal Target As Range) のようにrange型で宣言しているのに、なぜシートはオブジェクト型で宣言するのでしょうか?

  • マクロで二つの構文を繋ぐには

    いつもお世話になります。 WIN7 EXCELL2010 です。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub ThisWorkbook に上記のマクロに下記のマクロを追加したいのですが、 End Sub の ところを End If End With などに変えたのですがうまくゆきません。 御指導お願いできませんでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myRange As Range Set myRange = Intersect(Target, Range("M3:V27")) If Not myRange Is Nothing Then Select Case Target.Value Case "" Target.Value = "○" Case "○" Target.Value = "●" Case Else Target.ClearContents End Select Cancel = True End If End Sub 宜しくお願いいします。

  • シート名を手入力でなく、セル「A1」の文字を出しい

    過去にも、同様見出しでの質問が出ています。私は、この続編を教えて頂きたい。本文後半に【私の質問】として掲示致しました。 ≪以下、引用≫ :エクセルのシート名についての質問です。 いつもはシート名を変えるとき、シートタブの上を右クリックして「変更」しています。 ◆そこで、  セル「A1」に入力されてある文字を自動で出す方法について教えて下さい。 http://okwave.jp/qa/q2025849.html?from=history ベストアンサー: (1)の場合は、下記のコードを ThisWorkbook に記述してください。 どのワークシートでも機能します。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub ≪引用終了≫ 【私の質問】 確かに、"A1"に直接文字を入力すると、この記述でOKです。 ところが、"A1"に、他のセル等からの参照が入っている場合、例えば、=B5&"年"&B7&”月現金”となっているとき、"A1"の内容をシート名に反映することができません。 コード内容をどのように修正すればよいのでしょうか、ご教授下さい。

  • 記入のデーターを別のシートに

    いつもお世話になります。 WIN7 EXCELL2010 です。 「記入」のデーターを日毎のシートに振り分けたいです。 参照図で説明させていただきます。 ご指導賜りたいのは 2点あって その1 シート「記入」から 各シートに振り分ける数式をおねがいいたします。 その2 シート「記入」から 20140714 20140715 20140721 にデーターを振り分けるのですが、 2の行はどなたとも重複していません。 3と4の行は同じ部屋で「入所日 と 退所日」 7/20 が重複しています。 退所日の「田中」はそのまま「102」に 「伊藤」は一旦「待機」に入れ、「2010721」のシートでは102に戻したい。 特にその2については可能でしょうか。 何かいい方法が その1 その2 あればご指導いただけませんでしょうか。           ※20140716&#65374;20140720 は意図的に省いています。 日毎のシートには、 A1 文字で入力 E1 A1の文字を “yyyy/mm/dd” に   =DATE(INT(A1/10000),MOD(INT(A1/100),100),MOD(A1,100)) F2 =IF(OR(B1<>B2,B2=""),"",IF(D2>MAX(INDEX(D:D,MATCH(B2,B:B,0)):INDEX(E:E,MATCH(B2,B:B,0)+COUNTIF(B$1:B1,B2)-1)),"","重複or待機")) マクロ A1の文字をシート名に Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub 誠に恐れ入りますが何卒よろしくお願いいたします。

  • VBAで二つの構文を繋げるには

    いつもお世話になります。 WIN7 EXCELL2010 です。 1) A1に 数値化した日付を入力するとシート名表示に反映される。  例えば 2014/07/31 で A1 には 20140731 と入力するとシート名にも      20140731 が表示 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value End Sub 2) 1)で表示された複数のシートから今日のシート名になっているシートの色付けです。 Private Sub Workbook_Open() Dim mySheet As Worksheet For Each mySheet In Worksheets mySheet.Tab.ColorIndex = 19 If mySheet.Name = Format(Now(), "yyyymmdd") Then mySheet.Tab.ColorIndex = 3 End If Next End Sub 3) 各月をまとめたシートで シート名は 1&#65374;12 あります。 このシート名にも色付けするため下記マクロを追加したいのですが、1)のマクロとどう繋げばいいか分かりません。 Private Sub Workbook_Open() Dim sh As Worksheet     For Each sh In Worksheets         If isnumeric(sh.Name) Then             sh.Tab.ColorIndex = xlNone             If sh.Name = Month(Now) Then                 sh.Tab.Color = 255 ' 赤             End If         End If     Next End Sub 同じ Private Sub Workbook_Open() で始まるので丸められることが可能ならも含めていい方法を御指導いただけると幸甚です。 宜しくお願いします。

  • EXCELマクロでのシート間のデータ同期方法

    質問させていただきます。 EXCELにて、"シート1"のA1~C3と"シート2"のD4~F6を 同期化したく考えております。 ・いわゆる一方のシートが「読み取り専用」になってしまうリンク貼り付けではなく、シート1、シート2相互が書き換え可能の同期化です。 ・A1とD4、B3とE6、のように互いに照合箇所のセル同士を同期反映させたいと考えております。 なお、他の質問を参照したところ、 シート1のA1とシート2のD4の単一セルを同期かする方法は確認できました。(以下参照) ***************************************************************** シート1のコードは Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Worksheets("シート2").Range("D4") = Target End If End Sub シート2のコードは Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$4" Then Worksheets("シート1").Range("A1") = Target End If End Sub *************************************************************** これを参考にVBAの シート1のコードエディターに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then Worksheets("シート2").Range("D5") = Target End If End Sub シート2のコードエディターに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$5" Then Worksheets("シート2").Range("A2") = Target End If End Sub というように追記していったのですが、エラーとなってしまいます。 お詳しい方がおられましたらお願いいたします。