[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『カレンダー作成…休みの日の表示を変えたい』(かね)
職場の年間カレンダーを作成しています。 A1セルに月を手入力し、2行目に日〜土曜日を表示して日付は 「=IF(MONTH($A$1)<>MONTH($A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(ROW(A1)-1)),"", $A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(ROW(A1)-1))」という式を使っています。
質問ですが、仕事が休みの日を「○で囲む」ことはできないでしょうか。 休日は基本的に土日祝日で、祝日は別シートに一覧を作成しました。 条件付書式で色付けはできるのですが、○で囲むように指示されたもので(^_^;) オートシェイプで1つずつ…はちょっとどうかな〜と思い、知恵をお貸しいただければ幸いです。
こちらが参考になるかもしれません。 [[20091208144739]] 『図の簡単挿入の方法』(F) しかし、 >A1セルに月を手入力し、 は書き間違いでは? (みやほりん)(-_∂)b
(みやほりん)(-_∂)bさんへ
ご回答ありがとうございます。 上記の式を少し直しました。 よろしくお願いします。
ご提示いただいた質問を参考にしてみました。 ですが、マクロを扱えないのでコピペで試したところ、○が囲むのは 「日」「土」と記載されたの曜日欄(2行目)で、数字は変化なく…という結果になりました。 日付部分を○で囲むには他にどちらを変更すればよいのかわからず…すみません。
入力規則を使ったやり方は、日付に条件書式で使用した関数を入れたのですが、 エラーになってしまいました↓ 入力値の種類「日付」 データ「次の値に等しい」 日付「=OR(WEEKDAY(A3)=1,WEEKDAY(A3)=7,ISNUMBER(MATCH(A3,祝日,0)))」
マクロはそのままコピペしました↓
Private Sub Workbook_Open() With Worksheets("Sheet1") .ClearCircles .CircleInvalid End With End Sub
間違っている部分がどこかもわかりません。。。 ご指導よろしくお願いします。
(かね)
[[20071114041820]] のダブルクリックでの方法は「セルの値が」土日祝日等 の文字列でないとうまくいきません。細かく凝り出すときりがないので、 避けて通ることをお許しください。 入力規則での方法を解説します。 A3の数式を次のようにしフィルコピー。 =IF(MONTH($A$1)<>MONTH($A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(ROW(A1)-1)),0, $A$1-WEEKDAY($A$1)+COLUMN(A1)+7*(ROW(A1)-1)) 次に、ツール>オプションの表示設定でゼロ値非表示にするか、日付表示セルで 表示形式の書式設定のユーザー定義で「m/d;;;」のようにして、0が表示されな いようにします。 さらに、入力規則ですが、次のようにします。 データの種類[ユーザー定義] 数式 [=OR(AND(WEEKDAY(A3)<>1,WEEKDAY(A3)<>7,COUNTIF(祝日,A3)=0),LEN(A3)=0,A3=0)] 最後にツール>ワークシート分析>ワークシート分析ツールバーを表示する で、分析ツールバーを出して、[無効データのマーク]ボタンを押します。 この方法、発案者の性格に似て非常に天邪鬼的な設定でして、 入力規則で「土日祝日以外の日付を入力可能に設定」し、入力規則に 反するデータ、すなわち、「土日祝日以外でない=土日祝日である」日付に マークするものです。 [かね]さんが行った設定では、 A3の「日付(または"")」と、数式「=OR(WEEKDAY(A3)=1,WEEKDAY(A3)=7,ISNUMBER(MATCH(A3,祝日,0)))」 を比較するものとなってしまうので、意図したとおりにはなりません。 この数式はTRUE、FALSE、エラーが返り、これらと同じ「日付」のみ入力できる、 という設定となっていますね。 入力規則や条件付書式に設定する数式は、いきなりダイアログに入力してしまうと 結果がわかりにくいので、一時的に作業範囲に数式を入力してみて、 TRUEやFALSEの結果が思い通りに返るか試験してみるのがコツです。 (今回の場合だと、入力規則に設定する数式をA11あたりから入力して計算結果を見る) (みやほりん)(-_∂)b
みやほりん さんへ
ご提示いただいた方法を試したところ、赤○で囲むことができました! ありがとうございます。
調子に乗って… ○の大きさ・色を変更するなど、少し手を加えたい場合はどのようにしたらよいでしょうか。
また、印刷プレビューで見ると○が表示されないのですが、印刷できるようにする方法も教えていただければと思います。
よろしくお願いしますm(_ _)m
(かね)
私が紹介したログには次のように書いてあるはずですよね? >・○をつける判断材料が入力規則で判断できるものである >・入力内容にかかわらず、セル枠いっぱいの円を描く >・印刷されなくてもよい >という制限を甘受できるなら 好みのものを自由に作りたいのなら、オートシェイプを自動的に 配置、移動、削除するようなマクロを作る必要がありますが、 私はパスさせていただきます。 選択肢はいくつかありますが、 1.このまま誰かがマクロを作ってくれるまで待つ。 2.「今の私には無理です」と勇気を持って言う。 2-1「ですが1年間マクロを勉強させてくださればできます」と言う。 2-2 外注するよう、進言する。 2-3 妥協して条件付書式のままでおく。 2-4 妥協して試した方法までにしておく。 (みやほりん)(-_∂)b
なんとなく気が向いたので >1.このまま誰かがマクロを作ってくれるまで待つ。 叩き台として以下のようなものを置いておきます。 使い方: カレンダーの日が表示されているセルを範囲選択した上で実行すると、 文字色が赤、青のセルに丸の図形を配置します。 選択範囲内に含まれるShapeはザックリ消してしまうので注意。 Option Explicit Sub 選択範囲の土日セルに丸を配置() Dim r As Range Dim s As Shape Dim TargetSheet As Worksheet Dim markLeft As Single Dim markTop As Single Dim markSize As Single Set TargetSheet = Selection.Parent For Each s In TargetSheet.Shapes If Not Application.Intersect(s.TopLeftCell, Selection) Is Nothing Then s.Delete End If Next For Each r In Selection If r.Value = "" Then GoTo NEXT_RANGE End If Select Case r.Characters.Font.ColorIndex Case 3, 5 '赤、青の場合 If r.Width > r.Height Then markSize = r.Height 'markLeft = r.Left '左寄せ 'markLeft = r.Left + (r.Width / 2) - (markSize / 2) '中央寄せ markLeft = r.Left + r.Width - markSize '右寄せ markTop = r.Top Else markSize = r.Width markLeft = r.Left 'markTop = r.Top '上寄せ markTop = r.Top + (r.Height / 2) - (markSize / 2) '中央寄せ markTop = r.Top + r.Height - markSize '下寄せ End If With TargetSheet.Shapes.AddShape(msoShapeOval, markLeft, markTop, markSize, markSize) .Fill.Visible = msoFalse End With Case Else End Select NEXT_RANGE: Next End Sub 微調整とか面倒そうだからこれ以上は手を入れないかも。 使う人が適当にいじって調整が必要かな?と。なので叩き台。 2010/01/19 15:48 変数の意味と中身が違ってたので修正。 (ご近所PG)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.