• 締切済み

EXCEL 工程表の作成にて日付を入力されたの下のセルに線を引くマクロの作り方

いつもこのサイトを参考にさせていただいております。 QNo.1538992を参考に自分でも工程表を作成していましたが、 日付の開始日と終了日を判定して線を自動的に引くマクロの作成方法を教えて頂けませんでしょうか。 実際にはセルC4に日付を入力しD4は=C4+1,E4は=D4+1といったような感じで 3ヶ月の表を作成します。 縦軸のセルA欄には作業の開始日を、セルB欄には作業の終了日を入力します。 セルの横軸の日付を参照して△ーーーーーー○をオートシェイプで自動的に書きたいのです。 三角は開始、○は終了で、その間をオートシェイプの線で書きます。 できれば、作業の終了日を入力した段階で自動的に線を引ければありがたいのですが…。 以上、よろしくお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

こんなのは、出来合いのソフト(フリーやシェアウエアや製品)を使うべきと思います。 仕事用ソフトはVBAが自在にできないと、作成が難しいと思います。 質問者の場合経験はどれほどか判りませんが、相当聞きまくらないと 完成しないでしょう。次々と欲が出てきますし。 ーー まあ言うだけなのもと思い、お遊び程度のサンプルを作ってみました。質問と趣旨が違う点はあると思いますが、これ以上は、複雑になったり、難しい知識が要ったり色々しますので。 Sub test1() ActiveSheet.DrawingObjects.Delete d = Range("a65536").End(xlUp).Row '-- For i = 2 To d ym = DateSerial(Year(Cells(i, "A")), Month(Cells(i, "A")), 1) Cells(20, "X") = ym f = Application.WorksheetFunction.Match(Range("X20"), Range("C1:N1"), 0) + 2 'MsgBox f ym = DateSerial(Year(Cells(i, "B")), Month(Cells(i, "B")), 1) Cells(20, "X") = ym e = Application.WorksheetFunction.Match(Range("X20"), Range("C1:N1"), 0) + 2 ' MsgBox e l = Cells(i, f).Left + 5 t = Cells(i, "c").Top + Cells(i, "C").Height * 0.2 w = Cells(i, e).Left + Cells(i, e).Width - 10 - Cells(i, f).Left H = Cells(i, "c").Height * 0.8 ActiveSheet.Shapes.AddShape(msoShapeRightArrow, l, t, w, H).Select Selection.ShapeRange.Fill.ForeColor.SchemeColor = 11 Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255) Next End Sub ーー 例データ A1:M5 開始日 終了日 06年12月 07年1月 07年2月 2006/12/1 2007/8/31 2007/3/12 2007/9/25    横方向にブロック矢印が表示される 2007/2/5 2007/5/30 2007/6/1 2007/6/30 上記でシート第1行06年12月は書式でこう見えているが、値はこの行は全て各月の1日の値(日付シリアル値)が入っている。 ーー 日付単位にしてないのが問題だろうとわかっていますがが、・・。 (X20セルは中間ワークのセルですが、小生変数でうまく行かなくて、逃げでとりあえず、これを使う羽目になったもの)

関連するQ&A

  • エクセルで表中の複数のオートシェイプで作成した線(斜線)を一度に消すには?

    お世話になります。エクセルにて社員の出勤簿の表を作成したのですが、欠席した場合、その日のその人のセルにオートシェイプにて斜線を引っ張って欠席にしていました。それを翌月になった場合データをクリアして使うのですが、複数あるこの斜線を一度に消す方法はありませんでしょうか?(マクロを使うことになるとは思うのですが) つまりシート中のある決まった範囲のオートシェイプで作成した線のみを一度に消すという作業です。 どうかよろしくお願いいたします。

  • 日付が入っているだけ表を作成したい

    こんにちわ 別ブックで入力した値から1ヶ月分の日付を表示させていく表を作成したいのです。 すでに表の元は完成していて、31日入るようになっています。 線もひいてあります。 ですが、入力日によっては31日の所もあれば30日の場合もあり、28日の時や29日の時もあると思うんです。 それに対応する形で表に埋まった日付の分だけの表を作成したいのですが、処理をするたびに随時変更できるのでしょうか?

  • エクセル日付の自動入力

    エクセルで表を作りました その表で、上司が毎日 情報の整理をして入力をしています 具体的には送迎の日程表、時刻表を作成しています >その際 シート上の右上に 本日の日付時刻が自動的に 入力されるようにしたいとの事ですが その方法がわかりません 上司は……どうしても エクセルを開いたときもしくは 印刷を したときに 自動に日付が印刷されるようにしたいそうなので いろいろ調べてみたのですが うまくできませんでした。どなたかその方法を教えてください 私なりに セルを右クリックして、セルの書式設定画面を開き日付を選択してみたらどうでしょうか と 言ってみたんですが それだと3/11しなければならないので、趣旨が違うようです また私が行っている仕事は わたしが休職中にどなたかが その作業(日付けが自動で入力される) を行ったらしく 逆に日付を入れたくない書類にも 日付が印刷されてしまいますあ(画面上では 日付の文字は表示されていません) >その解除方法を教えていただけないでしょうか 質問が二つになってしまいましたが どなたかお知恵をお貸しください よろしくお願いいたします OSはVISTAで MICROSOFT OFFICE2010です 

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

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

  • エクセルで工程表

    エクセルで工程表を作りたいです。 C1に第1工程の開始時間1220(12:20という意味) C2に第1工程の終了時間1240(12:40) C3に第2工程の開始時間1300(13:00) C4に第2工程の終了時間1325(13:25)        : という感じで約10工程まであります。 シート2は各セルを細かくしてあって、A5を12:00とし横軸に時間をとっています(5分刻み) 第1工程の12:20から12:40まで、つまりE5からI5までを黒くしたいです。 同じように第2工程13:00から13:25までのセルを黒く・・・ 関数では難しいと思うので、VBAでもかまいません。 何かいい方法がありましたら、教えてください。 よろしくお願いいたします。

  • エクセルVBAで作業進捗表を作成したいと考えてます。

    エクセルVBAで作業進捗表を作成したいと考えてます。 C3の作業NO欄に任意の作業NO(桁数指定無)を入力するとA3にその時刻(開始時間)が自動入力されD3の状態欄に状態(プルダウンで終了が選択できる)を入力するとB3にその時刻(終了時間)が自動入力される。 この作業開始時間と終了時間の自動入力を3行目から100行目までを対象とするプログラムをりたいのですが、分かりません。 参考までに時間の表示形式は"h:mm"です。 またPCの使用環境はOSはXPでエクセル2003使用です。 ご存知の方がいましたらよろしくお願いします。

  • 日付データで自動でオートシィプの線を引く

    A列に内容 B列に開始日 C列に終了日を日付で入力し タイトル行に1日おきの日付を入力しサンプルのように 開始日から終了日までオートシェイプで線を自動で引くには どうしたら良いでしょうか

  • エクセルで工程表・作業表を作っています 塗りつぶしの自動化についてお教えください

    エクセルで工程表・作業表をつくることになりました。 A1セルに項目名「年月日」A2セルに項目名「曜日」 以下A3 A4・・・と作業氏名が入っています B1から右方向に2005/01/01の形式で連続して 年月日が入っています B2はB1を参照してWeekday関数を入れて 曜日を表示しています。 ここからなのですがA3から下方向に作業者名が入力されていますが 曜日に関係なく ばらばらに「休」と文字を入れて この作業者がその日は休みであることをあらわしています。 ある人のセルに数字を2種類入力して 作業日数分塗りつぶして その作業の種類を色で塗り分けたいのですが 2005/11/24 ある作業者の欄に数字を3(三日間という意味) を入れると 24日25日26日が自動的に塗りつぶすようなことは 可能でしょうか? そして たとえば25日の欄に「休」を入っている場合には 24日は塗りつぶして 25日は「休」のままで塗りつぶさなくて 26日と27日をまた塗りつぶすという判別の方法があればと 思っています。 関数で可能なのか もしくはセルをクリックなどして ユーザーフォームを立ち上げて入力を促すマクロなどでないと 難しいのか いかがでしょう? 文章がわかりにくかったら申し訳ありませんが 補足の解説をさせていただきますので よろしくお願いいたします

  • エクセルマクロ 日付を検索し入力

    エクセル2003マクロを使用して以下の事を行いたいと思っていますが、どのようなマクロを組んだらよいか分かりません。よろしくお願いします。 シート上部にある以下のデータを    A      B     C      D      E     1  日付 商品A 商品B 商品C  商品D 2  5/26    5     6     1       3    ←その日のデータ(毎日変わる) 入力ボタンを作成し、それを押すことにより        ↓ 6   5/1 7    ・ 8    ・ 9   5/26   5     6     1     3 10    ・  ↑日付が予め入力された表 上記のような、同一シート上の日付欄に入力される表を作りたいのですが、方法が分かりません。 その日のデータは、別シートに入力用フォームを作成し、飛ばしています。何人かの人間が入力するので、マクロで簡単に、行えるようにしたいと思います。よろしくお願いします。

  • エクセルの日付入力に関して。

    仕事で上司に、暇のあるときに「To Do リストのTo Do の欄に何か入力したら、自動的に隣のセルの日付がその日の日付にアップデートされるように改良してくれない?」と頼まれているのですが、IF系か日付系の関数でできますでしょうか?? たとえば、E5のセルに文字列を入力したら、F5に当日の日付が反映される・・・というような感じで・・・ まったく急ぎではないのですが、もしよろしければどなたかアドバイスお願いします。 よろしくおねがいします。

専門家に質問してみよう