Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


809 / 13645 ツリー ←次へ | 前へ→

【78192】月が変わるとセルの色を変えたい。 T 16/5/23(月) 11:25 質問[未読]
【78193】Re:月が変わるとセルの色を変えたい。 γ 16/5/23(月) 21:20 質問[未読]
【78194】Re:月が変わるとセルの色を変えたい。 T 16/5/23(月) 21:43 発言[未読]
【78195】Re:月が変わるとセルの色を変えたい。 γ 16/5/23(月) 22:45 発言[未読]
【78196】Re:月が変わるとセルの色を変えたい。 [名前なし] 16/5/24(火) 9:48 発言[未読]
【78197】Re:月が変わるとセルの色を変えたい。 [名前なし] 16/5/24(火) 9:53 発言[未読]
【78199】Re:月が変わるとセルの色を変えたい。 [名前なし] 16/5/24(火) 13:24 お礼[未読]
【78201】Re:月が変わるとセルの色を変えたい。 γ 16/5/24(火) 21:29 発言[未読]

【78192】月が変わるとセルの色を変えたい。
質問  T  - 16/5/23(月) 11:25 -

引用なし
パスワード
   こんにちは。
初めての投稿となります。

VBAでカレンダーを作成しています。
月はコンボボックスで選択するようにしています。月に合わせて日にちと曜日が連動します。AさんからCさんがいて、例えばAさんが9/21(水)に休日を入れたとします。そうすると21日とAさんが一致するセルに色が付きます。ここまでは問題ないのですが、コンボボックスの値を変更すると月は変わりますが色はそのままです。カレンダーは一年分あり、個人が入れる休日はそれぞれです。
目的は、月が変わったらその月に入っている色を表示することです。(例9月から12月に変更したら、9月の色付きのセルから12月の色付きのセルに変更したい。)
 9月(コンボボックス)
 1 2 3 4 5 6

A
B
C

どうかご教授の方、よろしくお願いいたします。

【78193】Re:月が変わるとセルの色を変えたい。
質問  γ  - 16/5/23(月) 21:20 -

引用なし
パスワード
   ちょっとよくわかりません。

> 例えばAさんが9/21(水)に休日を入れたとします。
> そうすると21日とAさんが一致するセルに色が付きます。
> ここまでは問題ないのですが
問題がないそうですが、
こちらにはどこに何を表示しているのかさっぱり分かりません。
カレンダーはシートにあるんですか?
9月と12月のカレンダーは別の場所にあるんですか?

9月のカレンダを作成するコード
9月の休日に色を付ける部分のコード、
それらのコードを示してもらえますか?

【78194】Re:月が変わるとセルの色を変えたい。
発言  T  - 16/5/23(月) 21:43 -

引用なし
パスワード
   説明が下手ですみません。

実はユーザーフォームから名前と日付を選択して、
名前の列と日付の行から一致するセルを検索して、cell()で検索した値を組み合わせセルに色を付ける仕様となっています。

ちょっと今手元にエクセルが無いのでコード等は明日になってしまいます。
申し訳ありません。

カレンダーは同じシートにあります。というのもシートの一個のセルがコンボボックスになっており、12までの数字が選択できるようになっています。これが「月」を表し、このコンボボックスを変えるとカレンダーの日付もその月に合った日付に変わります。2月に変えたら29日までしか表示させないようにする等です。

現時点での説明できるのはこれだけです・・・全く分からないというのも私の説明が下手なせいですね・・・申し訳ありません。

【78195】Re:月が変わるとセルの色を変えたい。
発言  γ  - 16/5/23(月) 22:45 -

引用なし
パスワード
   ユーザーフォームで指定する情報は、
・名前
・日付

シートには、
・月のコンボボックスと
・コンボボックスの月に応じた日付が横一列にならんでいる。

日付と氏名が一致するセルに休日と書き込みたい、ということですね。

(ところで、
 月が変わったら、前の月の情報は消えてよいのですね。
 9月から12月に変わって、また9月に戻すということはないんですね。)


(1)やろうとしていうことを分解すると下記だろうか。
 (a)ユーザーフォームに入れた日付(●月○日等)から、月を取り出し、
 (b)シートのコンボボックスを更新する
 (c)日付と名前をもとに、何行目の何列かを計算する
 (d)そのセルに"休日"と書き込む

(2) 上の(a)については、日付の形式が不明なので回答不可。

(3) (b)については、
  シートのコンボボックスがActiveXなのかフォームコントロールなのか不明ですが、
  たぶん前者。
  そのリンクされたセルに、直接、値(月)を書き込めば、
  コンボボックスの値は変更できます。
  これに応じてカレンダが更新されるはず。
  (その月の休日情報をどうするかは問題とされていないと理解)

(4) (c)
  名前については、Application.Matchで何番目の行かわかるはず。
  日にちについては数えなくてもわかります。

(5)セル範囲をCells(j,k)形式で指定すれば 入力はできるはずです。

今までのコードが書けているなら、上記のことは簡単にできるはずです。
こちらの理解が違っているのも知れないが。

質問にあたってどこに詰まっているのか書かなければ、質問の意味がないです。

私は時間がとれないので、以上とさせていただきます。

【78196】Re:月が変わるとセルの色を変えたい。
発言  [名前なし]  - 16/5/24(火) 9:48 -

引用なし
パスワード
   返信遅れて申し訳ございません。

昨日の質問の説明が全然足りず大変申し訳ございません。
ご指摘をいただいたので、詳しく書いていきます。

一年の休暇予定表を作成しています。

まずカレンダーですが、B4からAF4まで横に日付が並んでいます。この下のセルに曜日があります。月はK1にコンボボックスで選択できるようになっています。コンボボックスは開発タブより作っています。
各個人の名前はA7からA21まで縦に並んでいます。

ユーザーフォームで名前と取りたい休日の月と日にちを入力すると、まずシート上の月のコンボボックスに入力した月が代入されます。ここで月が変わります。そして名前と日にちが一致するセル(列と行)を検索し、一致したセルに色を付けます。

現在行詰まっているのは、シート上の月のコンボボックスを変更したとき(例9月から12月に変えた時)、変えただけではセルに付いた色はそののままです。一年間の予定表なので、月を変えるごとに色付きのセルを表示させたいです。(9月なら9月の休暇予定表を表示させる)
私がやってみたことは、Range("B7:Af21")を範囲選択して、12個の変数を用意し、9月ならsepという変数に代入します。シート上のコンボボックスが9月を選択されたらシートのRange("B7:Af21")にsepを代入するという方法です(これは他の月でも同じです。)
実行してみると、B7:AF21が真っ黒になってしまいます。ネットで検索してみたところ、範囲取得はできないようでした。

結論としては、月ごとに色付きのセル(休暇予定日)を表示させることです。
行詰まっているのが、シート上のコンボボックスを変えたとき、その月の休暇予定日を変数に記憶させて、選択した月の休暇予定日が入っている変数を呼び出し表示させることです。月を白紙に戻す訳ではなく、記憶させて一度シートを白紙にしてから表示させるという意味です。

【78197】Re:月が変わるとセルの色を変えたい。
発言  [名前なし]  - 16/5/24(火) 9:53 -

引用なし
パスワード
   これが名前と月と日にちから一致するセルを求め、色を付けるコードになります。

'///名前を列から検索///
  rt = Range("A7:A21").Find(name).Row

  '///月を変更///
  Range("K1") = month1


  '///日にちを検索して代入///
  gy1 = Range("B4:AE4").Find(hi1).Column

  '///休みを入れる///
  cells(rt, gy1).Interior.Color = RGB(0, 220, 255)
  
  onyr1 = Range("B7:AF21")

【78199】Re:月が変わるとセルの色を変えたい。
お礼  [名前なし]  - 16/5/24(火) 13:24 -

引用なし
パスワード
   知人からのアドバイスがあり
別の方法で試してみる事にしました。

多忙の中、ご指摘いただきありがとうございました。

【78201】Re:月が変わるとセルの色を変えたい。
発言  γ  - 16/5/24(火) 21:29 -

引用なし
パスワード
   別の方法で対応するとのこと。結構なことです。

なお、私は仕事中はこちらには来ません。
自宅でしかアクセスしない方針です。

ついでに。
変数に各月の情報を持たせるなどということではなく(それは無理)、
シートは広いのですから、各月の情報をシートにもたせるのが
普通の考え方です。

809 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free