• 締切済み

休日の範囲だけ着色したい

エクセルで工程表をつくりました。 スケジュール書込み欄の休日の部分だけを着色したいのです。 方法としては、カーソルを着色したい列のところへ移動して、その列のたとえば3行目から10行目までをマクロを登録したボタンをクリックすると着色するといった具合です。 ボタンを作って、マクロを登録することは出来ますので、VBAのほうを教えてください。 よろしくお願いします。

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.7

参考までに VBAでのActiveCellの使い方 ActiveCellの列番号 ActiveCell.Column       行番号 ActiveCell.Row Rangeコマンドで範囲を指定する Range(Cells(3, 5), Cells(10, 5)) Sub Macro1() retu = ActiveCell.Column Range(Cells(3, retu), Cells(10, retu)).Interior.ColorIndex = 10 End Sub とか Sub Macro1() Range(Cells(3, ActiveCell.Column), Cells(10, ActiveCell.Column)).Interior.ColorIndex = 10 End Sub とか出来ます。

pangnam
質問者

お礼

有難うございました。 これで回答を締め切らせていただきます。

全文を見る
すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.6

ほとんどNo3さんが説明されている通りです。テクのガイドラインですが、 1、事前に別シートにでも、休日の日付を設定しておく、   休日を入れたセルを、仮に休日とでも名前をつけておく  例 別シート   A 1 2007/4/27 2 2007/5/3 3 2007/5/5 ・・・     「挿入」「定義」「名前」で設定して準備 2、3列目の日がシリアル値で書式で日のみ表示しているのあればよいのですが、5列目から20列目を選択して、条件付書式 数式で =COUNTIF(休日,A$3)>0 $マークの位置に注意してください。 意味は休日で指定した範囲に3列目の日付が1回以上あれば、設定した書式 となります。

pangnam
質問者

お礼

返事が遅くなりました。 私が当初希望していた方法とは異なりますが、大変参考になりました。ありがとうございます。 休日を別シートに設定するというのは、今まで想定していなかったので試してみたいと思います。 それとは別にVBAでのActiveCellの使い方も知りたいのでまた別のスレッドを立てて質問してみたいと思います。そのときはまたよろしくお願いします。 繰り返しになりますが、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.5

No2です。 >休日は作業工程上決めるため、暦どおりではない(一定条件ではない)ので条件付書式では無理かと思われます。 休日が土日とか一定条件でなくても、No3さんが説明されているように、会社の都合にあった休日を設定しておけばOKです。 いちいち休みの日の列を探してボタンを押すよりも 休日設定した日付の列(3行目から10行目)が自動で色が変われば便利ではないでしょうか。

pangnam
質問者

お礼

なるほど。 ありがとうございます。 もう少し、私の使用している工程表について説明させていただきます。 2行目に「月」、3行目に「日」、4行目に「曜日」が入るようになっていて、1シートに3ヶ月(前月、今月、来月)の表示がされます。 「年」の入力欄もあって、今月の月数値を入力すると月、日、曜日等が自動的に変わるようになっています。 5行目以下20行目まで(例えばですが)が作業内容の書込み欄になっています。 よって、新しいシート(工程表)をつくったときに以前の場所と違う箇所が休日になったり、また、平日でも作業の都合で急遽休みにすることもあります。 で、あらかじめ休日設定するのはこの工程表作りではムリかと思うのですが、いかがでしょうか? 以前は、休日の列の書込み部(例で言えば5行目から20行目までですね)を範囲選択して、セルの書式設定でパターン付していましたが、非常に手間取ります。 お手数ですがよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

既回答を見ると、質問の表現が結果論として曖昧だったのでは。 完全に休日の選択は操作者に任されていて、クリックしたセルに着色(セルパターンのとフオントのどちらかはっきりさせること)すれば良いようにも取れる。 それならセルのChangeイベントで、決まった列や範囲のセルをクリックするとセルパターン色を変える事は簡単だが、誤った訂正と、その機能(イベント)をどういうタイミングで停止したらよいか迷う。 いつまでもそれが働くのは厄介でしょう。 セルのChangeイベントでなく、範囲指定のSelectionやApplication.InputBoxの範囲指定で1回限りの、休日の部分だけを着色するルーチンを走らしたほうが良いかもしれない。

pangnam
質問者

お礼

ありがとうございます。 確かに説明不足でした。 zap35さんにご説明した表現でわかっていただけるでしょうか。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

質問文にマクロを書くだけの情報がないので、マクロは書けません。 でもカレンダの休日に自動的に着色するなら、マクロより条件付き書式を使う方が簡単ではないですか? まず適当なシートに休日表を作成しましょう 2008/4/29 2008/5/3 2008/5/4 2008/5/5 のような休日の日付を入力します。仮に範囲をSheet2!A1:A4として説明します。また工程表の1行目には日付が入力されているとします。 (何も書かれていないので、想像で書くしかないですね) 「着色したい列」のセルを選択し「書式」→「条件付き書式」を選択します。ここでは仮にD列としましょう。D1に日付があるとします。 「数式が」を「セルの値が」に変更し「数式に」  =COUNTIF(Sheet2!$A$1:$A$4,D$1)>0 を入力し、「書式」ボタン→「パターン」で背景色をつけます。 つまりD1の日付がSheet2!$A$1:$A$4の範囲にあるとき色を着けることになります。 次に「追加」で日曜日の場合の背景色を指定します。 同じく「数式が」を「セルの値が」に変更し「数式に」は  =WEEKDAY(D1)=1 として、背景色を指定します。 最後に条件付き書式を設定したセルをコピーして、他のセルに「編集」→「形式を選択して貼り付け」→「書式」で貼り付けてください 「条件付き書式」「休日」などで検索すると事例はたくさん見つかりますので、ご覧ください http://www.relief.jp/itnote/archives/000971.php http://www2.odn.ne.jp/excel/waza/cformat.html#SEC3

pangnam
質問者

お礼

回答ありがとうございます。 質問が説明不足のようでした。 アクティブセルの列の決められた範囲の行の部分だけを着色(パターン)付したいのです。 つまり、Bの列にカーソルがあって、マクロの登録されたボタンをクリックすると、B3からB10のセルを着色する。 次にEの列にカーソルを移動して先ほどのボタンをクリックするとE3からE10のセルを着色する。 といった具合です。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

やりたいことは、 仮に休日の日付の一覧表が別シートにあって スケジュールの日付列のデータが休日の一覧にある日付の場合は着色される。 ではないのですか? 条件付書式の設定で可能です。

pangnam
質問者

お礼

回答ありがとうございます。 休日は作業工程上決めるため、暦どおりではない(一定条件ではない)ので条件付書式では無理かと思われます。 説明不足ですみません。

全文を見る
すると、全ての回答が全文表示されます。
  • mako_sea
  • ベストアンサー率47% (62/130)
回答No.1

1.任意のセルを選択する。 2.マクロを実行する。 3.1で選択したセルに色が付く と考えてよろしければ、以下のマクロで足りると思います。 ==================================== Sub Macro1() ' ' Macro1 Macro ' With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With End Sub ===================================== ちなみにこの'6'は黄色です。 他の色指定は下記などが参考になります。 http://72.14.235.104/search?q=cache:7H0YSeeDZQEJ:www.ne.jp/asahi/home/yamamomo/op/op05.html+VBA+%E8%89%B2%E6%8C%87%E5%AE%9A&hl=ja&ct=clnk&cd=3&gl=jp

pangnam
質問者

お礼

回答ありがとうございます。 このマクロだと範囲指定が無いように思いますが・・・。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル:列の範囲選択をうまくできないでしょうか ?

    行数が約2000行ほどの表を毎月使用します。それでいろんな列をコピーして別の表に貼り付けたいのですが、列のコピーをする時に範囲指定でドラッグに結構時間がかかります。これをマクロでやりたいんですが、カーソルをおいた列の一番下の行まで範囲を指定すると言うのをマクロでできないでしょうか? 自動記録でマクロを造ろうとすると、実行した列を選択してしまい、任意の列の選択ができません。 よろしくおねがいします。

  • セルの着色に関するVBA

    初めまして、エクセルのVBAの記述方法について質問させてください…! 列A・B・D・Eには文字などのデータがあり、列Cにグループの番号(0~5番グループまで存在します。)列Fに数字が入っている表があります。 表はそれぞれのグループごとにF列の大きい数字から順番に並んでおり、同じ数字の情報が存在する場合、同じ数字ごとに分かれています。 この表を、数字が2回変わると着色したいと思っています。(数字の変化に規則性はありません。) 例えば、100・90・88・87という数字があるとすれば、 数字が100の情報(列A~F)には着色なし、90の情報には着色する、 88の情報には着色なし、87には着色する…といった流れです。 グループが変われば処理のやり直しで、また着色なし→着色あり→着色なし… の作業を全てのグループの表に行いたいです。 説明が分かりづらく申し訳ありません、どなたかご教示いただけると嬉しいです、よろしくお願いいたします。

  • 空白までのデータを範囲指定する

    EXCEL VBAにて教えてもらいたい事があります。 空白までの行列を範囲指定したいのです。         A  B   C   D  1   1123 123  12  57 2    32 1 5 52 3 2 98 852 11 4 65 2 72 1 A列からD列の行が空白になるまでの範囲を指定する マクロを教えてほしいです。 A列の最終行の次の行にカーソルを合わせるマクロはわかるのですが 範囲を指定する方法がわかりません。 よろしくお願いいたします。 最終行の次の行にカーソルを合わせるマクロ Range("A1").End(xlDown).Select ActiveCell.Offset(rowOffset:=1).Activate Selection.Copy

  • 最終行から指定行までの削除

    VBAで、表のB列の最終行からB列の91行目までの行削除するマクロを作りたいのですが、うまくいきません。

  • マクロで範囲指定をするには

    こんにちわ。 マクロを作りたいのですが。 B1セルにカーソルをおいてB列をデーターが入っている行の終わりまで範囲指定をさせたいのですがどのようにしたらよいのでしょうか。 宜しくお願いします。

  • Excel Vba でデータの範囲を知るには?

    Excelを使用していますが、マクロ(VBA)で、シートのデータの範囲を知るにはどうすればよいのでしょうか。  印刷プレビューを行うと、自動的にページ数が求めらていますが、これは、シートのデータの範囲(列及び行の最大値)を判別しているからできるのだと思います。  これを、VBAで行、及び列のMAX値を取得したいのですが、そのメソッド(プロパティ)を知りたいのです。  どなたかご教授ください。

  • Excel2007 時間表記の足し算について

    Excel2007での関数?について、質問させて下さい。 現在、研修のタイムスケジュール表を作成しています。 表記したい内容は、該当時間と、スケジュール内容、スケジュールそれぞれの所要時間です。 (例:8:00~9:00までは、ビジネスマナーについての研修を60分間、 9:00~9:30までは、営業知識の研修を30分間、といった具合です) 例えば、A列に時間を表記(8:00~9:00といった形)、B列に研修内容、C列に所要時間(30分、50分など)、を入れたいとします。 A列の2行目以降を、C列の所要時間を計算しながら自動表記する場合、A列にどのような関数を入れたらよいでしょうか? VBAやマクロなどを使用せず、単純に関数のみで可能な方法があれば、是非教えて下さい。 よろしくお願いいたします。

  • エクセルのマクロ

    教えてください。   A     B   C 1 部品番号  ○   済印 2 111111   ○   済 3 222222   ○   済 4 333333   ○ という表があるとします。 B列にマクロのボタンを作っておき、 A列に部品番号を入力したら、マクロのボタンを押して、 C列に済、という字を表示したいのです。 1部品入力するごとに、その表示をさせたいです。 2行目、3行目・・・と一つずつマクロを登録して いく方法は、(マクロについては詳しくないので、マクロの記録、マクロの停止、という方法しかわかりません)入力するデータが100件以上あるため、それもどうかな・・と悩んでいます。超初心者なのですが、何とか完成したいと思っています。 よろしくお願い致します。

  • Excel VBA アクティブセルからある一定のセルまでの範囲選択

    Excel VBA アクティブセルからある一定のセルまでの範囲選択 Excel2003を使用しています。 アクティブセルからC列に『計』と入力されている行の1行上のD列までを選択状態にするマクロを作成しようとしています。 C列に『計』と入力されている行は下記のように複数あるので、アクティブセルの行以下に入力されている次のC列の『計』の1行上までとしたいのですが、どのようにコードを書いたらいいでしょうか? 例えば… A2セルをアクティブにしていてマクロを実行するとA2:D3が選択状態に A7セルをアクティブにしていてマクロを実行すると、A7:D9が選択状態になるように という具合です。 わかりづらくて申し訳ありませんが、よろしくお願いします。    A     B     C     D 1  日付    №   品名    金額 2  1/1     1    ○○○   1,000 3  1/2     2    ×××   1,500 4              計      2,500 5 6 7   1/1     5    ○×○   2,000 8   1/3     6    ××○   1,200 9   1/4     7    ×○○   2,500               計      5,700            :            :

  • カーソル行の直下にコピペ

    毎月録画する番組をExcelで一覧表にしています。 現在、カーソルがある行の下に行を新規に挿入して マウスのある行のA-Eまでの列をコピーして 挿入した行の同じ列にペーストするマクロ(コード)を教えてください。 つまり、カーソルがある行の直下に  同じ内容のセルをコピペしたいのです。  

Googleで働きたい
このQ&Aのポイント
  • 将来の夢はGoogleの本社で働くこと
  • 英語の会話力を向上させるために日々努力中
  • 大学進学とプログラミング学習を考えている
回答を見る

専門家に質問してみよう