• ベストアンサー

Excelで日付けを入れたらスケジュールが引けるようにしたいのですが

Excelで、1枚目に日付けをいれてそれが自動的に2枚目のスケジュール に反映されてグラフのように反映されてほしいと思っています。 今は、別々に日付を入力したら、2枚目のシートに移りスケジュール を引き直しています。 色々調べてみたのですが、解決できませんでした。 お教え頂ければありがたいです。 よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

エクセルでマクロを用いないでセルの色を変えるには「条件付き書式」を使う方法が考えられます。でも条件付き書式は他のシートを条件の中で参照することができません(Office2007は分かりませんが…) 従って「1枚目に日付けをいれてそれが自動的に2枚目のスケジュールに反映」するのは条件付き書式では無理です。どうしてもマクロが必要になりますが、質問の内容だけでは情報不足でマクロは書けません。 マクロの知識が乏しいなら、日付入力シートとスケジュールシートを合体させて「条件付き書式」で実現するのが一番の早道だと思います。

tiwariu
質問者

お礼

早速のご回答ありがとうございます! お察しのとおり、マクロの知識は乏しいのですが これを機に勉強をしたいと考えています。 情報は出来るだけ挙げたつもりなのですが、不足 がありましたら、なんなりとおっしゃって下さい。 よろしくお願いいたします。

その他の回答 (10)

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.11

pc_knightです。たびたびどうも。回答文字数制限の都合でANo.8の回答ではVBAにエラー回避処理を入れてませんでした。 今回、以下のエラー回避処理を追加します。 (1) 18行の「c = c + 1: Cells(1, c).Value = dy」を削除し代わりに c = c + 1 If c > 256 Then Exit For Else Cells(1, c).Value = dy End If を追加 (2.a)29行「hend = Sheets("貸出台帳").Cells(r, 8)」の次の行に 「If kasid <> "" And hend <> "" Then 」を行追加 (2.b)末尾から9行手前の「Next r」の上の行に「End If」を行追加 ☆エラーの生ずるのは次の(1)(2)の何れの場合で起きます。 (1) 各行のデータのうち最早開始月と最遅終了月の間隔すなわちシート「貼り出し用」の月日欄が約8ヶ月(厳密には250日間)を越えるとき (2) シート「貸出台帳」のA列のNo.欄にデータが存在しているにもかかわらずG列の開始欄やH列の終了欄にデータ入っていないとき ☆その時、「実行時エラー’1004’: アプリケーション定義またはオブジェクト定義のエラーです。」が生じます。tiwariuさんが経験されている、「400」というエラー表示とは異なり、そちらの原因解決にはつながりませんが・・・。 ☆参考意見 「貼り出し用」の月日欄は約8ヶ月(厳密には250間、Excelの許容列数=256)で打ち切られますが、どうしても365日に拡張したい場合は、2日間に1つのセルを割り当てるように作り変える必要があれます。

tiwariu
質問者

お礼

pc_knight様 ありがとうございました!!! ようやくできました! 原因は、私のシートに隠れた列があって、それを 削除したらマクロがきちんと実行されました。 こんな初心者に素晴らしいマクロを書いて下さり ありがとうございました。 感謝、感謝でございます。 長い間、お世話になりました!!

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.10

うまく動かない原因を捕らえるのは、なかなか難しいです。 我が家のパソコンにて 1枚目シート名:貸出台帳 No  資産No   品名   分類(1)   分類(2)   現状   開始   終了   貸出者   場所 S001   123    サーバ   固資   工具備品   貸出中   4月1日  5月5日  山田    ラック S002  345   サーバ   固資   工具備品   貸出中   4月1日  5月7日  佐藤    ラック 2枚目シート名:貼り出し用 で動作確認できております。どこか条件の異なる所がないでしょうか。 (1)「マクロを貼り付けて実行してみたのですが、「400」というエラー表示になり」は全く見当がつきません。 そのエラーが発生した際、「実行時エラー’400’: アプリケーション定義またはオブジェクト定義のエラーです。」というメッセージと3種類のコマンドボタン(「終了(E)」、「デバッグ(D)」、「ヘルプ(H)」)が表示されたでしょうか。もし表示されてましたら ・「ヘルプ(H)」をクリツクしたら表示されるヘルプ画面内に大きなフォントで表示される表題名と ・「デバッグ(D)」、をクリツクしたら表示される黄色で色塗りされたVBAの行の内容を調べたら原因究明に近づけるかもしれません。 (2)「1枚目のシートからデータが消えてしまい」も分りかねますが、13行目の「Cells.Clear」にてシート内をすべてクリアしているので、これと関係ありそうです。 但し、クリアされるシートは、12行の「Sheets("貼り出し用").Select」にて2枚目のシート「貼り出し用」に指定されています。従って1枚目のシート「貸出台帳」からデータが消えるのは分かりかねます。現実のシート名とVBAコードに記述のシート名との整合がとれていないような感じがします。 小生がテストに使用したシート内容と同じデータでもエラーが生ずるでしょうか。

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.9

Tiwariuさん、OKWaveの閲覧者の皆さん。 前回答に不備があり申し訳ありませんでした。 (1) コメント行としていれたつもりの「‘★」と「‘☆」の行(4ヶ所)が思いもよらぬ不備のあることが分りました。 この行は削除をお願いします。因みに「★」の左側の文字「‘」はアポストロフィー「'」(Shiftキー+7キー)であるべきですが、前回回答文の作成にて文章貼付時になぜか別の分字に文字化けしたようです。チェック不足をお許し下さい。 (2)前回回答「‘★~‘★間か‘☆~☆間を選択、一方を要削除で」の意味の補足 (a)‘★~‘★間にある「.FormulaArray = "*"」を残して、‘☆~‘☆にある「.HorizontalAlignment = xlCenter」から「.Value = Sheets("貸出台帳").Cells(r, 9)」までの4行を削除する。 または (b)、‘★~‘★間にある「.FormulaArray = "*"」を削除して、‘☆~‘☆にある「.HorizontalAlignment = xlCenter」から「.Value = Sheets("貸出台帳").Cells(r, 9)」までの4行を残す。 の二者択一の意味のつもりでした。 「‘★~‘★間か‘☆~☆間を選択」ではなく、「‘★~‘★間か‘☆~☆間のどちらかを残して」と書くべきでした。 因みに(a)を採用すると貸出期間に対応するセルが半角の「*」で埋まり、(b)を採用すると貸出期間に対応するセルの色塗りと、貸出者名表示がされます。

tiwariu
質問者

お礼

pc_knight様 いつもありがとうございます。 また、お礼が遅くなり申し訳ありませんでした。 マクロを貼り付けて実行してみたのですが、「400」という エラー表示になり、1枚目のシートからデータが消えてしまい ました。 何度もお手を煩わせてしまい申し訳ありません。 ご教授頂ければと思います。 よろしくお願い致します。

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.8

改めて回答。‘★~‘★間か‘☆~☆間を選択、一方を要削除で Sub Test() dd = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) km = Array("No", "資産No", "品名", "設置", "貸出日", "返却予定日") Sheets("貸出台帳").Select mind = Application.WorksheetFunction.Min(Range("g2:g65536")) maxd = Application.WorksheetFunction.Max(Range("h2:h65536")) mmin = Month(mind) mmax = Month(maxd) If mmax < mmin Then mmax = mmax + 12 End If Sheets("貼り出し用").Select Cells.Clear For c = 1 To 6: Cells(1, c).Value = km(c - 1): Next c c = 6 For m = mmin To mmax For dy = 1 To dd((m - 1) Mod 12) c = c + 1: Cells(1, c).Value = dy Next dy Next m For r = 2 To Sheets("貸出台帳").Range("A65536").End(xlUp).Row ck = 0: ch = 0 For c = 1 To 3 Cells(r, c).Value = Sheets("貸出台帳").Cells(r, c) Next c Cells(r, 5).Value = Sheets("貸出台帳").Cells(r, 7) Cells(r, 6).Value = Sheets("貸出台帳").Cells(r, 8) kasid = Sheets("貸出台帳").Cells(r, 7) hend = Sheets("貸出台帳").Cells(r, 8) mkasi = Month(kasid) dkasi = Day(kasid) mhenk = Month(hend) dhenk = Day(hend) If mkasi < mmin Then mkasi = mkasi + 12 End If For km = mmin To mkasi If km > mmin Then ck = ck + dd((km - 1) Mod 12) End If Next km ck = ck + dkasi + 6 If mhenk < mmin Then mhenk = mhenk + 12 End If For hm = mmin To mhenk If hm > mmin Then ch = ch + dd((hm - 1) Mod 12) End If Next hm ch = ch + dhenk + 6 Range(Cells(r, ck), Cells(r, ch)).Select With Selection ‘★ .FormulaArray = "*" ‘★ ‘☆ .HorizontalAlignment = xlCenter .MergeCells = True .Interior.ColorIndex = 35 .Value = Sheets("貸出台帳").Cells(r, 9) ‘☆ End With Next r Columns("e:f").NumberFormatLocal = "m""月""d""日"";@" Columns("a:f").Columns.AutoFit Columns("g:iv").Select With Selection .ColumnWidth = 2.5 .HorizontalAlignment = xlCenter End With End Sub

tiwariu
質問者

お礼

度々ありがとうございます。 >‘★~‘★間か‘☆~☆間を選択、一方を要削除で とは、どのようにすればよいのでしょうか? ★だけを削除すると「コンパイル 構文エラー」になり ’と★を削除すると「インデックスが有効範囲にありません」 とエラーになってしまいます。 お手を煩わせてしまい申し訳ありません。 ご教授頂ければ幸いです。 よろしくお願い致します。

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.7

データの消滅の被害は大丈夫だったでしょうか。 記載内容からの原因の判断が難しいので更に次の点についてもう一度お聞かせいただけませんでしょうか。 (1)1枚目のシートと2枚目のシートのシート名 (2)1枚目のシート内の表示様式(具体的なデータで) (3)作成したい2枚目のシート内(スケジュール表)の表示様式 (4)月日をインプットするセルの表示形式は「日付」になっているでしょうか ご回答は、ANo.4に記載された表示例のような形で・・・ (例) 1枚目のシートの名前:Sheet1 機材名 スペック 資産番号 借出者 借出日 返却日  甲                 秋田   5月1日   5月4日  乙                 福島   5月3日   5月8日  甲                 千葉   5月7日   5月10日  1枚目のシートの名前:Sheet2 機材名 設置場所 1 2 3 4 5 6 7 8 9 10 11 12  甲           * * * *     * * * *  乙               * * * * * *

tiwariu
質問者

お礼

ご返答頂きありがとうございます。また、ご心配頂き ありがとうございます。 ファイルをコピーして使っていたので、データは大丈夫です。 ご質問への回答ですが、以下の通りになります。 1枚目シート名:貸出台帳 No  資産No   品名   分類(1)   分類(2)   現状   開始   終了   貸出者   場所 S001   123    サーバ   固資   工具備品   貸出中   4月1日  5月5日  山田    ラック S002  345   サーバ   固資   工具備品   貸出中   4月1日  5月7日  佐藤    ラック 2枚目シート名:貼り出し用                        4 No  資産No 品名 設置  貸出日 返却予定日 12345678910 S001 123     A   IN-001 4月3日  5月5日    *********** S002 456     B   IN-002 4月10日  5月10日 このような体裁になります。 お忙しい中申し訳ありませんが、ご教授頂ければと思います。 よろしくお願い致します。

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.6

(1)エラーに関して 「インデックスが有効範囲にありません」エラーの原因は、シート名の差異にあると思われます。 1枚目のシート名は「Sheet1」、2枚目のシート名は「Sheet2」という前提で作りました。 tiwaryuさんのシート名にマッチするようコードの変更が必要です。 仮に、1枚目のシート名を「貸出台帳」、2枚目のシート名を「スケジュール」と名付けている場合は、Worksheets("Sheet1")をWorksheets("貸出台帳")に、Worksheets("Sheet2")をWorksheets("スケジュール")に変更します。 (2)表の補足説明 (a)スケジュールを表示するシートの1行目に月表示が出ます。 例えば1枚目のシートの各行データのうち貸出日の最も早い日が5月であり、返却日の最も遅い日が6月であったなら、C1セルから31ヶ分のセルを結合し「5月」と表示され、更にその右のセルから30ヶ分のセルを結合し「6月」と表示されるようにしてあります。 (b)2行目には、左から順に「機材名」、「設置場所」、「1」~「31」、「1」~「30」等と書き込まれるようにしてあります。 1行目、2行目は、貸出日の最も早い日の月と返却日の最も遅い日の月に応じてそれに見合って自動的に設定されます。(そのことから「dd = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)」と一年分の各月日数を配列してあります。) 従って、1行目、2行目の表示は、5~6月のように複数月になることもあります。但し1シートは256列の制限があるので貸出期間が8ヶ月分を超えるとエラーが発生します。また閏年についての補正は未配慮です。・・・もしかしてtiwaryuさんはスケジュール表を月毎にシート分けしていますか?。その場合はコード修正が必要になりますので別途検討で。 (c)3行目以降はセルの着色と借用者名の表示です。

tiwariu
質問者

お礼

丁寧な解説を頂きありがとうございます。 Sheet名の変更をしてマクロを動作してみたのですが 1枚目のシートからデータが消え、2枚目のシート上で エラー 400と表示されてしまいます。 また、今回のシートはスケジュール表を月ごとにシート 分けはしていません。 お忙しい中申し訳ありませんが、ご教授頂ければと思います。 よろしくお願い致します。

  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.5

表の様式がANo.4(misatoanna)さんのご回答のようであるとすれば、次のVBAでお試し下さい。 2枚目の設置場所はどこからデータをもってくるのか不明なためその処理は入れてありません。 Sub Test() dd = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) Worksheets("Sheet1").Activate mind = Application.WorksheetFunction.Min(Range("e2:e65536")) maxd = Application.WorksheetFunction.Max(Range("f2:f65536")) mmin = Month(mind) mmax = Month(maxd) If mmax < mmin Then mmax = mmax + 12 End If Worksheets("Sheet2").Activate Cells.Clear cl = 2 For m = mmin To mmax For dy = 1 To dd((m - 1) Mod 12) cl = cl + 1: Cells(2, cl).Value = dy Next dy Range(Cells(1, cl - dy + 2), Cells(1, cl)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True End With Cells(1, cl - dy + 2).Value = (m - 1) Mod 12 + 1 & " 月" Next m For r = 2 To Worksheets("Sheet1").Range("A65536").End(xlUp).Row clk = 0: clh = 0 kasid = Worksheets("Sheet1").Cells(r, 5) hend = Worksheets("Sheet1").Cells(r, 6) mkasi = Month(kasid) dkasi = Day(kasid) mhenk = Month(hend) dhenk = Day(hend) If mkasi < mmin Then mkasi = mkasi + 12 End If For km = mmin To mkasi If km > mmin Then clk = clk + dd((km - 1) Mod 12) End If Next km clk = clk + dkasi + 2 If mhenk < mmin Then mhenk = mhenk + 12 End If For hm = mmin To mhenk If hm > mmin Then clh = clh + dd((hm - 1) Mod 12) End If Next hm clh = clh + dhenk + 2 Range(Cells(r + 1, clk), Cells(r + 1, clh)).Select With Selection .HorizontalAlignment = xlCenter .MergeCells = True End With Cells(2, 1).Value = "機材名" Cells(2, 2).Value = "設置場所" Cells(r + 1, 1).Value = Worksheets("Sheet1").Cells(r, 1) Cells(r + 1, clk).Value = Worksheets("Sheet1").Cells(r, 4) Cells(r + 1, clk).Interior.ColorIndex = 35 Next r Columns("A:B").Columns.AutoFit Columns("C:iv").ColumnWidth = 2.5 End Sub

tiwariu
質問者

お礼

pc_knight様 サンプルありがとうございます! 現在、作業中なのですが貼り付けて実行をした所 インデックスが有効範囲にありません、とエラーに なります。 サンプルを見直してみて、私のシートでは4月から7月 間でしか無いため、 dd = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) を dd = Array(30, 31, 30, 31) としています。 その他、試行錯誤して試しておりますが、上記のエラーが出て しまいます。 再度、pc_knight様のサンプルコードを見て挑戦してみたいと 思います。

回答No.4

様式のご説明から考えますと、おそらく下記のような体裁になるのだと 思います。 Sheet1 機材名 スペック 資産番号 借出者 借出日 返却日  甲                 秋田    1   4  乙                 福島    3   8  甲                 千葉    7   10 Sheet2 機材名 設置場所 1 2 3 4 5 6 7 8 9 10 11 12  甲           * * * *     * * * *  乙               * * * * * * Sheet1で機器甲の貸出が複数出たものをSheet2(*部分は塗りつぶし)の ようにするのでしたら、条件付書式や一般関数では複雑すぎて荷が重過 ぎると思います。 しかも、上の例にはありませんが、セル上に借出者の名前まで表示する のでしたら、VBAで処理されるべきと思います。 どなたかがサンプルをご提出くださるのをお待ちしましょう。 何度も補足説明をお願いしながら、お力になれなくてゴメンなさい。

tiwariu
質問者

お礼

お礼のコメントが遅くなり、すいませんでした。 misatoanna様が書いて下さった体裁の通りになります。 私のつたない説明を解読して頂きありがとうございます。 サンプルを頂いているのですが、現在作業中です。。 なにぶん、理解が浅いもので試行錯誤を繰り返しております。

回答No.3

> 1枚目のシートで、貸出日付、貸出機材のスペック、資産番号を記入 > 2枚目のスケジュール表は、先頭の横一列が日付けで、機材の名称と > 誰がいつまで借りるのかをセルに色を付けて表示。 書かれていませんが、1枚目では、当然借出者の名前も入力、ですね。 返却予定日は入力しないのですか? 2枚目は1行目が日付ということですが、1列目は何なのでしょうか。  ・借出者の名前?→ 機材名はどう表示するのでしょうか。  ・機材の名称? → 借出者名はどう表示するのでしょうか。 機材名または借出者は色で判別するというのでしたら、当然条件付書式 では対応できませんので、マクロ処理になってしまいますね。

tiwariu
質問者

お礼

度々ありがとうございます。 ご指摘のとおり、借出者の名前、返却予定日も入力します。。 2枚目について、説明が不十分でした、すいません。 2枚目は一番左に機材の品目、次に設置場所を明記してます。 貸し出し者の名前はスケジュールを引いたセルの上に書いています。 色で判別はしておらず、全て同じ色でスケジュールを引いています。 お手数をおかけしています。。 よろしくお願いします。

回答No.2

> 1枚目に日付けをいれて > それが自動的に2枚目のスケジュールにグラフのように反映 各シートがそれぞれどういう様式なのか想像できませんので、具体的に 提示されたほうがよいと思います。 あと……、zap35さまの > 条件付き書式は他のシートを条件の中で参照することができません ですが、 私は2000ですが、セルに名前をつけその名前を指定すると、他シートで も参照できました。 ^_^;

tiwariu
質問者

お礼

早速のご回答ありがとうございます! 今は、貸出物の管理をしているのですが 1枚目のシートで貸出する日付をいれて2枚目のシートで スケジュール表を作って貼り出しています。 1枚目のシートには、貸出する機材のスペックや、資産番号を 記入しており、2枚目のスケジュール表は、機材の名称と誰が いつまで借りるのかをセルに色を付けて表示させています。 2枚目のスケジュール表は、先頭の横一列が日付けになって います。 このような説明でよろしいでしょうか? つたない説明で申し訳ありませんが、お教え頂ければと思います。

関連するQ&A

  • Excelの日付について

    過去の投稿を拝見しましたが、該当する物が見つけられませんでした。 どなたか、下記の件教えていただけませんか? Excelで、FAX用紙のフォーマットを作っています。 (なぜエクセルなのかは、聞かないで下さい・・・。 私もホントはExcelはおかしいだろ~と思っているので・・・。) 1枚1シートなので、今日1のシートを使ったら、明日は2個目のシートという感じになっています。 つまり、同じシートは二度と使わないという事です。 ここからが、質問なのですが・・・。 日付を自動的に入力するために"Today"を使いました。 が、他のシートも今日の日付になってしまいますよね。 例えば、1のシートを昨日使ったとします。 1のシートには、自動的に昨日(入力当日からすると今日)の日付が入っていて 2のシートには、今日の日付がちゃんと入るようにできませんか? なんだか分かりづらい質問で、大変恐縮なのですが おわかりの方がいらっしゃったら、教えてください。 宜しくお願いします。

  • エクセルでスケジュール表作成

    いつもお世話になっています。 エクセル(オフィスXP使用)でスケジュール表を作成しています。 日付は一番初めのセルに日付を入力すると自動的に日数が入力されるよう計算式を(隣のセル+1)で作成しています。1Pに月曜始まりで2週間分の日数が入っています。曜日は固定なのでWEEKDAY関数は使っていません。(直接曜日を入力しています)土日は網掛けをしています。 以上のスケジュール表で、自動的に祝日を判別し、セルの色を変えたいのですが方法はありますか?出来れば祝日の曜日欄には自動的に祝日と入るようにしたいのですが・・・。条件付書式などを組み合わせてなんとか1ヶ所入力すると全て自動で行えるように出来ないでしょうか?どの関数を組み合わせればよいか、もしくは別の方法(シートを別に作成し、祝日だけを入力すると、スケジュールのシートが自動的に変わったり・・・)など、ありましたら教えていただけると助かります。 宜しくお願いします。

  • エクセルでシートから日付を取り出し表を作成

    エクセルに日付の入ったデータがあるシートから日付データを取り出し自動で表にまとめたい。 (簡単に言うと日付データを使ってスケジュール管理をしたい) 何かいい方法はあるのでしょうか?

  • エクセルの日付

    シート1に表を作り日付の欄に入力すると、シート2の日付の欄にも自動的に同じ日付が入力されるようにするにはどうしたらよいのでしょうか?教えてください。よろしくお願いします。

  • エクセルの日付自動入力について教えてください。

    エクセルの日付自動入力について教えてください。 商品の出荷情報をエクセルで作成しています。毎週月~土曜日の顧客管理を作成しており、 商品を出荷した日付が自動的に更新されるようにしたいです。 例えば、 現在今週の月曜出荷の情報だと、A1セルに6/21と手入力し、 21日が過ぎた時点(翌日22日に)に翌週の日付6/28という日付を手入力(A1セルに上書き)している状況です。この翌週の日付を自動的に同じA1セルに上書きという形で反映させることは可能でしょうか。 説明が分かりにくくて大変申し訳ございません。 データが大量にあるため、なるべく自動的に反映させたいです。 関数入力でこのようなことができるのか、ご存知の方宜しくお願い致します。

  • エクセル:日付の延長

    初歩的な質問で申し訳ないのですが…。 日ごとの体重変化のテンプレートを使っているのですが、もとの日付を越えたために表の日付を延長しようとしました。 表のセルを増やすことはできたのですが、延長した部分のデータがグラフに反映されません。 もともと用意されていた部分では、数字を打ち込めば自動的にグラフに反映されたのですが…。 知識がないため説明も下手で分かり辛いとは思いますが、よろしければ回答お願いします。

  • エクセルでのスケジュールの作成は?

    エクセルのセルに、項目とイベントの日付を記入して、それを元にスケジュール的(グラフの機能?)に表示できないかと考えています。 具体的には、以下の様な事です。エクセルのA列に、上から、X支店、Y支店、Z支店、、、、の様な名前を入力します。B列に生産日、C列に発表日、D列に発売開始日、E列に発売終了日、、、の様な日付のデータを入力します。 これらの数値を、左右方向を時間軸として、スケジュール表として表示できないかと考えています。 よろしくお願い致します。

  • エクセルユーザーフォームの日付操作を教えてください。

    エクセルユーザーフォームの日付操作を教えてください。 テキストボックスにスピンボタンで日付を入力し、ワークシートに転記するとシリアル値ではなくテキストで転記されます。ワークシートの日付処理に反映されませんので良い方法があれば教えてください。(mm/ddの入力でも良いですスピンボタンにこだわりません)

  • エクセルVBAでのスケジュール作成

    いつも大変お世話になっております。 本日も質問させてください。 会社指定の異なる2つのブックのエクセル表に自分の部署の社員全員のスケジュールを入れなければいけません。 (1つは月間、もう1つは週間で、それぞれ各月、各週毎にシートがあります。) VBAのフォームを作成し、週間スケジュールは自動でセットできるようになりました。 ですが、月間のスケジュールがうまくいかなくて困っています。 (入力フォームは共通のものを使用します。) スケジュールの表はシートが月別になっていてA列に社員名、1行目に日付、2行目に曜日、3行目に祝日が表示されるようになっています。 4行目からが各社員のスケジュールですが、1人の1日分のスケジュール入力のセルは2列×3行=6セルです。 (わかりにくいので図で表現したかったのですが、ずれて表示されてしまって余計にわかりにくいのでやめてみました。ちなみに、1人目の1日目のスケジュールのセル範囲はB4:C6となります。) そして、各セルには入力する項目が決まっています。 (この項目についてはフォームで作成済みです。) セルが多いため、Rangeを使おうと思っても指定するのが困難です。 個人的にはRangeのセルの値を別シートに作成した表からindexで検索できたらなぁ。と思っています。 できるかどうかすらわかっていませんが。(汗) もちろん、もっと効率的な方法があればそちらを教えていただきたいです。 週間スケジュールのセルから入力値をもってくる事も考えたのですが、月間は1日から必ず始まっていますが、週間は月曜日からのため、月や週によって日付が異なることなどから、やはり私には難しいのです。 よろしくお願いします。

  • EXCELで会社のスケジュール管理をしたい

    エクセルで従業員のスケジュール管理をしています。 手入力で手間がかかるのでフリーソフトを利用し 使い勝手の良いように色々変えたいと思います。 シートに月別で各々個人のその月の予定が判るようにしたいです。 マクロなどで自動入力出来たら組まれていたら最適です。 よろしくお願いします。

専門家に質問してみよう