[[20180916230357]] 『背景色付け』(うっほい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『背景色付け』(うっほい)

初めまして。エクセル初心者で調べながら作ってますが行き詰まってます。
どうかお助けください。

内容。年と月入力で自動でできるカレンダーシートが1つ(横カレンダー)。あとはシートが31個あり計32個のシートがあります。(カレンダーシート、1日〜31日シート)

1日〜31日のシートはすべて同じフォーマットで作成されております。
ここから本題なのですが、1日のシートA4に何かしらの入力があるとカレンダーシートのカレンダー1日(セル)に背景色をつけたいです。それを31日分作りたいです。

もしできるなら一個ずつ作るのではなく、vbaで一括して1日〜31日シートにそれができたら嬉しく思います。
説明不足もあると思いますが、よろしくお願いします。

< 使用 アプリ:365 proplus、使用 OS:Windows7 >


カレンダーのフォーマット、シート名について具体的に記載したほうが良いです。

【仮定】
・シート名は1 2 3 4・・・
・着色セルはB1から右方向に1 2 3 4・・・・と続いており、このセルに着色する。

【着色】
B1〜AF1を選択して条件付き書式→新しいルール→数式を使用してry→数式に
=INDIRECT(B$1&"!$A$4")<>""
と入力して塗りつぶしするように設定

【シートコピー】
シート"0"を指定した年月の日数分コピーするマクロの例です。
既存の1〜31シートは削除されますのでご注意ください。

 Sub シート複製()
    Dim Y As Long
    Dim M As Long
    Dim dt As Date
    Dim i As Long
    Dim Temp As Worksheet

    Set Temp = Worksheets("0")
    Y = 2018
    M = 9
    dt = DateSerial(Y, M, 1)
    For i = 1 To DateAdd("m", 1, dt) - dt
        Application.DisplayAlerts = False
        On Error Resume Next
        Worksheets(CStr(i)).Delete
        On Error GoTo 0
        Application.DisplayAlerts = True

        Temp.Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = CStr(i)
    Next
End Sub

(にゅるん) 2018/09/17(月) 02:30


にゅるんさん
勉強の末なんとかできました。ありがとうございます。

もう一つ質問ですが、alt+d+o(excel標準入力フォーム)をマクロ(コマンドボタン)設定しているのですが、そのシートに保護をかけるとコマンドボタンは機能するものの入力フォームの中にある新規、削除、戻るボタンが押せなくなり機能しなくなります。
シート保護をかけても入力フォームがちゃんと機能する方法あるでしょうか?

(うっほい) 2018/09/17(月) 03:59


別の質問は別のスレッドで・・・したほうが良いと思いますが、
あえて答えるなら、保護状態なので編集出来なくて当然です。

(シートの保護を解除した状態で)
セルの書式設定の保護タブでロックのチェック(標準はON)をOFFにしてから
シートの保護をかけることで、必要な範囲のみ編集可能にできます。

ワークシート上での直接入力だけ禁止して、Alt+D+Oのフォームで入力できるようにする方法は
無いのではないかと思います。VBAで自前でフォームを作れば出来ますけどね。

シートの保護に関してはこちらとかで勉強してください。
http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040803.html
(にゅるん) 2018/09/17(月) 09:43


にゅるんさん 
すいません。勉強になりました。
自前の入力フォームも考えてみます。
色々ありがとうございました。
(うっほい) 2018/09/17(月) 13:42

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.