• ベストアンサー

ガントチャート、バーの変更

VBAでガントチャートを作っています。 今時刻を入力しなおすと、「今ある バーを消してから再度バーを生成する」という処理を 行っています。 '削除処理 Bar.Delete '挿画処理 Set Bar(~) といった感じです。これを、一度消してから 生成するのではなく、時刻が変わったら既存のバーを 「変更する」、といった形で行いたいと思っています。 詳しい回答をしていただきたいです。 よろしくお願いします。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

Barとは何のObjectか、 時刻を入力する事によってBarがどう変動するのか、 現状の描画処理のコードはどういうコードか、 が書いてないのに『詳しい』回答はできないと思いますよ? 考え方としては、Bar 作成時に、一意の名前を付ければ済む話です。 『標準モジュール』に以下を置いて実行してください。 Sub pre()   Sheets.Add.Range("A1:C3").Value = [{"item","start","finish";"a",200,300;"b",400,500}] End Sub 新規シートが追加されます。 できた新規シートの『シートモジュール』に以下を置いてください。 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range)   Dim r  As Range   'Targetが範囲の場合のLoop用   Dim rect As Rectangle 'Shapeの四角形   Dim x  As Long   '変更セルの行   With Me     Set Target = Intersect(Target, .Range("B2:C3"))     If Not Target Is Nothing Then       For Each r In Target         Select Case r.Column           Case 2             'startを変更した時の処理(割愛)           Case 3             'finishを変更した時の処理             x = r.Row             On Error Resume Next             Set rect = .Rectangles("rect" & x)             On Error GoTo 0             '名前 "rect" & x の四角形がない時は追加する。             If rect Is Nothing Then               Set rect = .Rectangles.Add(0, r.Top + 2, 0, 5)               rect.Name = "rect" & x             End If             rect.Left = r.Offset(, -1).Value             rect.Width = r.Value - r.Offset(, -1).Value           Case Else         End Select       Next     End If   End With   Set rect = Nothing End Sub C2 or C3を変更してみてください。 [win2000/xl2000]の環境で動作確認。2007では試していません。 ちなみに Bar が Shapeの四角形の事だとして、既存のShapeの名前を変更するには Sub rName()   Dim rect As Rectangle      For Each rect In ActiveSheet.Rectangles     rect.Name = "rect" & rect.TopLeftCell.Row   Next End Sub こんな感じです。"rect" & 行No.にしています。 >VBAでガントチャートを作っています。 (以上は、Excel VBA と仮定した上でのアドバイスです)

sun-sky
質問者

お礼

説明が足りなかったのに丁寧にご回答くださりありがとうございます。 変更できました! end-uさんのおっしゃるとおり、Barはオートシェイプで Excel VBAでの質問でした。 ありがとうございました!

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

関連するQ&A

  • 自動で図形にマクロの登録

    VBAを学び始めたばかりなので、詳しく教えていただきたいです。 今ガントチャート(のようなもの)を作っています。 そこで時刻を入力するとバーが自動で引かれるのですが、 そのバーに「マクロの登録」をしたいと思っています。 ※たとえば、そのバーにtest()を実装させたい、ということです。 バー(オートシェイプの図形)を右クリックして「マクロの登録」を選べばできることは知っているのですが、それをバーが生成されるのと同時に自動で実装されるようにしたいと思っています。 このようなことは可能でしょうか? ご存じの方がいらっしゃいましたらよろしくお願いします。

  • ガントチャートが作れません。細かい作業が同時進行で

    ガントチャートが作れません。細かい作業が同時進行で行われ、行ったり来たりします。ほかに良いツールはありませんか? 例 データ受け取る ⬇︎ データ入力 ⬇︎ データ確認 これを3日で200件処理します。 データを受け取る期間が決まってないので、来たら随時やる、だからガントも五月雨式になるというか、1日目は、これ、2日目はこれ、と言えないのです。

  • エクセルのガントチャート(初心)

    こんにちは。 エクセルでガントチャートのようなものを作っています。 添付画像を見ていただきたいのですが、 「案件(1)」の状態が、今現在の状態で、 条件付き書式に「=AND(M$5>=$L6,M$5<=$L6)」と入力されています。 これを、「案件(2)」の状態にしたいのです。 (縦のセル5つ分を結合し、全てに色が反映されるようにする) どなたか、ご存じの方いらっしゃいましたら、ご教授いただければ助かります。 どうぞ宜しくお願いします。

  • エクセルでのガントチャート表示について

    業者の出入り状況を把握したい為、エクセルでガントチャートを条件書式を用いて作成しました。 ほぼ思ったとおりに出来ているようなのですが、一箇所だけうまくいきません。どこが悪いのかご指摘をいただければと思い投稿させていただきました。 A列は業者名、B列1行目からとB列2行目から横方向に時間(15分単位)を振って業者の入~出までの時間のセルを赤くするように条件書式を作りました。入りと出の時間を入力するセルは表の欄外に作りました。 A列 9:00 9:16 9:31 9:46 10:01 10:16 10:31 10:46 11:01・・13:00・   9:15 9:30 9:45 10:00 10:15 10:30 10:45 11:00 11:15・・13:15・ a社 b社 c社 A社の9:00~9:15の条件は=AND($B$30<=B$2,C$30>=B$1) B30は入り、C30は出の入力セルです。あとはこの式をコピーしました。 ここでB30に13:00と入力した場合のみ12:46~13:10のA社のセルが赤くなりません。コピーしているからかB社、C社もその13:00と入力した場合は同様です。他の時刻(10:00、11:31、14:00・・・など)ではその時刻に対応してセルが赤くなり全く問題なく出来るのです。どこに問題があるのでしょうか。ちなみにエクセルは2000のSP-3です。よろしくお願いします。

  • テキストボックスとオートシェイプが重なった場合メッセージが返る

    VBAについて質問させてください。 ガントチャートを作っているのですが、 テキストボックスとオートシェイプ(Rectangle****(←数字) という名前)の二つの図形が重なったら、 メッセージで「図形が重なっています」という メッセージを返したいと思っています。 セルに数値を入力するとバーが引かれる処理が行われます。 その時テキストボックスがある箇所にバーが引かれたら メッセージを返す、ということです。 よろしくお願いします。

  • Excelで作成した株価チャートにスクロールバーをつけたい

    WinXP/Excel2000: お世話になります。 素人に近いためわかりにくい表現があったらスミマセン。 (1)エクセルのグラフウィザードで作成したチャートに、スクロールバー(横にスクロール)つけることは可能でしょうか? 現在、外部データを取り込んで、日々チャートを描画しようとしてるのですが、表示される本数は常に100本くらいにしたいもので…。その状態でスクロールバーで過去のチャートも見れる形になれないものかと考えてます。 (2)外部データで取り込んだ価格に対して、各種テクニカル分析のデータも出るようにしたいのですが、あらかじめ数式を入力していたセルの数値が変わりません。 数式の編集をするバーにカーソルをあわせてからEnterを押すと数値がやっと変わるのですが、何が問題なのでしょうか? よろしくお願いいたします

  • excelのVBAマクロ教えてください。

    エクセルのガントチャート。 例・横軸には1~20までの数字が入っていて縦軸は自由に数字を入れれるセル(D4と置く。) D4に数字で変化するガントチャート。D4に21以上の値を入れた時にその前に入力した値に戻す(ガントチャートは変化しない)状態にしたい。それをVBAマクロで組みたいのですがどうすればいいですか??至急お願いします。

  • Chartの番号の把握の仕方

    シートに埋め込まれたグラフをクリックすると、 マクロレコードでは、次のようになります。 ActiveSheet.ChartObjects("Chart 3").Activate 今,VBAでクリックされたグラフを自動で処理したいのですが、上記のように、固有の値(この例では、"Chart 3")が入るのは困ります。これを回避する手段を探しています。サジェスチョンをお願い致します。

  • Access:一定範囲内を回転しながら連番を振る

    Access97 or 2000 VBAでないとダメだと思うのですがVBA初心者です・・。 1001~1050のような決まった範囲内で既存テーブルに採番したいのですが 入力しながらではなく、「採番」ボタンを 押すと既存のテーブルに書きに行きたい、 1050まで採番したら1001に戻りたいというのがあります。 次回処理には続きから採番したいです。 最終番号をセットするようなテーブルを作るような イメージはわくのですが、どうも書き方がわかりません。 教えて下さい・・。 宜しくお願いします。

  • RSAセキュリテリ、ワンタイムパスワードの仕組みを教えて

    サイトで研究しましたが、現実のところがわからないのでお使いの方、お教えください。 小さな「RSAパスワード生成機」を見たことがありますが、あれは電池が切れてしまうと、再度、自分の暗証番号4桁を入れるのでしょうか?セットしてから利用可能ということですよね。 1分おきに6桁が生成されるそうですが、もたもたしていると番号がかわってしまいませんか? ログインするときは自分のユーザ名を入れてから、パスワード欄にこの生成機の数字6桁を入力してから、なおかつ4桁の暗証番号を入力するのでしょうか?また、この時の暗証番号は、RSAカードに初期設定する番号と同じなのでしょうか?また、この番号と、サーバにセットする暗証番号と同じなのでしょうか?サーバが生成したパスワードと、1分おきに生成し直されるパスワードはおなじものなのでしょうけど、携帯生成機の時刻合わせはどのようにするのでしょうか?だんだんずれて行くけど、サーバ側が6桁の番号から、時刻を合わせているのでしょうか?つまり、時刻は狂ってくるものなのでしょうか?なまじ、携帯生成機の時刻をただしくしたとすると、ログインできなくなるのでしょうか?それとも時刻の狂いは1時間くらい許容されているのでしょうか? 生成機が生成する番号6桁は、あるあるゴリリズムに基づいていると思いますが、公開されているのでしょうか?あるいは、もう解読されているのでしょうか?RSA が高価ですので、フリーの生成機のようなソフトはあるのでしょうか? これとて、4桁のサーバにセットする番号と、生成アルゴリズムがわかれば、解読できると思いますがいかがでしょうか?

このQ&Aのポイント
  • MFC-L2730DNのコピーが薄い問題について解決方法をご紹介します。
  • 濃くしたいコピーが薄くなってしまう問題に悩んでいませんか?MFC-L2730DNの濃さ調整方法をご紹介します。
  • MFC-L2730DNのコピーが思ったよりも薄くなってしまう場合の対処方法について解説します。
回答を見る