VBA初心者です。
前にこちらの質問にあったマクロで実行してみたのですが、1時間毎でしか矢印が作成されませんでした。
分単位で矢印の長さが変わるようにするにはどのようにしたら良いのでしょうか?
Sub ガントチャート描画2()
Dim c As Range
Dim org As Range
Dim dst As Range
For Each c In Range("D8:D20")
If c.Value <> "" Then
Call MyFind(c.Text, org)
Call MyFind(c.Offset(0, 1).Text, dst)
With ActiveSheet.Shapes.AddLine(org.Left + 0, _
c.Top + 7, dst.Left + 0, c.Top + 7).Line
.EndArrowheadStyle = msoArrowheadTriangle
.ForeColor.RGB = RGB(0, 0, 128)
.Weight = 3
End With
End If
Next
End Sub
Private Sub MyFind(ByVal src As String, ByRef rng As Range)
Dim r As Range
Set rng = Nothing
For Each r In Range("F5:AJ5")
If r.Text = src Then
Set rng = r
Exit Sub
End If
Next
End Sub
よろしくお願いしますm(__)m
No.3ベストアンサー
- 回答日時:
こんにちは!
列方向に関しては1列が1時間というコトですかね。
細かい分までは判らないかもしれませんが、とりあえずやってみました。
一例です。
Sub Sample1()
Dim i As Long
Dim c As Range, r As Range
Dim myStart, myEnd
ActiveSheet.Lines.Delete
For i = 6 To Cells(Rows.Count, "D").End(xlUp).Row
myStart = Application.Match(Cells(i, "D"), Rows(5), True)
myEnd = Application.Match(Cells(i, "E"), Rows(5), True)
If IsNumeric(myStart) And IsNumeric(myEnd) Then '//←念のため//
Set c = Cells(i, myStart)
Set r = Cells(i, myEnd)
With ActiveSheet.Shapes.AddLine(c.Left + c.Width * Minute(Cells(i, "D")) / 60, c.Top + c.Height / 2, _
r.Left + r.Width * Minute(Cells(i, "E")) / 60, r.Top + r.Height / 2).Line
.ForeColor.RGB = RGB(0, 0, 255) '//←「青」(色は好みで!)★//
.Weight = 2 '//←太さは好みで!★//
.EndArrowheadStyle = msoArrowheadTriangle
End With
End If
Next i
End Sub
※ 最初に記載したように○分の部分は正確に判らないかもしれませんが、
感じとしては「このあたり!」と判別できると思います。m(_ _)m
No.2
- 回答日時:
こんにちは
ご提示のコードがどのような方法をとっているか理解なさっているのかわかりませんが、
「指定時刻と5行目に記載の時間を比較して一致しているものを探す」方式です。
このため、D,E列に記入する時刻は、5行目に存在する時刻と一致するように入力しないとうまく動作しないという大きなデメリットがあるように思われます。
一方で、5行目の表記は連続しなくても自由に設定できるというメリットはありますが、逆に、必ず時刻表示の行(5行目)が必要となります。
この方式とは別の考え方として、スタートを「0時」として以降は「1時間/1セル」として計算するとか、他の方式もあり得ると考えられます。
>分単位で矢印の長さが変わるようにするにはどのようにしたら良いのでしょうか?
計算を分単位に応じて行うようにすれば良いですが、上記のような条件群のうち何を実際の前提条件とするかによっても、コードは変わってくるものと考えられます。
いずれにしろ、考え方としてはどの場合も同様で、「1時間/1セル」という前提で良いのならば、
与えられた時刻(シリアル値)に対して
Hour(シリアル値)
Minute(シリアル値)
でそれぞれ時刻、分が得られますので、これによりセルの位置を決定し、
セル幅×分数/60
でそのセル内でのチャートの表示長さを算出することができます。
仮に、全てのセル幅が一律であるという保証があるなら、
(時間数 + 分数/60)× 単位セル幅
で、線分の長さを直接求めることもできるでしょう。
なお、この値はシリアル値の差分から
(シリアル値-INT(シリアル値))×24×単位セル幅
で直接求めても同じ結果になるはずです。
線分の開始位置も同様の要領で求められますので、「開始位置」から「開始位置+線分長さ」の位置までラインを引けば、分単位に対応したラインを引くことができるでしょう。
No.1
- 回答日時:
回答ではありません。
提案となります。① このレイアウトではジャスト9時とかが、どこだかわかりにくいですよね?
下図のようにセル結合して2セルで1時間にされた方が良いと思いますがいかがでしょうか?
② 1分単位で表示するならば、1分1ピクセルの倍数にされた方が良いと思いますがいかがでしょうか?
1分1ピクセルの場合、下図のようにセル結合し時にはセル幅が「3.13」になります。
③ 時刻表示ですが、表示形式を「[hh]:mm」にして24時間以上も「時間:分」表示にされた方が良いと思いますがいかがでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
このQ&Aを見た人はこんなQ&Aも見ています
-
とっておきの「夜食」教えて下さい
真夜中に小腹がすいたときにこっそり作るメニュー、こっそり家を抜け出して食べに行くお店… 人には言えない、けど自慢したい、そんなあなたの「とっておきの夜食」を教えて下さい。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
とっておきの「まかない飯」を教えて下さい!
飲食店で働く方だけが食べられる、とっておきの「まかない飯」。 働いてらっしゃる方がSNSなどにアップしているのを見ると、表のメニューには出てこない秘密感もあって、「食べたい!!」と毎回思ってしまいます。
-
エクセルで日にちを入力すると矢印が自動的に引かれるとか。
Excel(エクセル)
-
時間を入力するとタイムスケジュールに矢印で表示させたい
Excel(エクセル)
-
エクセル2016で時間を入力して線で反映させる方法について
Excel(エクセル)
-
-
4
エクセルでガンチャートを作成しましたが、 矢印を自動で引くマクロで、日付日時の参照で、例えば、201
Excel(エクセル)
-
5
日報に自動で矢印線をひきたい
その他(ソフトウェア)
-
6
EXCEL VBA 時間の検索 上手くいかない…
Visual Basic(VBA)
-
7
日付で矢印マクロ
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
Excelで数式内の文字色を一部だ...
-
エクセルで指定したセルのどれ...
-
エクセルの一つのセルに複数の...
-
セルをクリック⇒そのセルに入力...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
Excelでのコメント表示位置
-
対象セル内(複数)が埋まった...
-
excelの特定のセルの隣のセル指...
-
エクセル オートフィルタで絞...
-
Excel 例A(1+9) のように番地の...
-
(Excel)数字記入セルの数値の後...
-
ハイパーリンクの参照セルのズ...
-
【Excel】 セルの色での判断は...
-
エクセルの書式設定の表示形式...
-
エクセルvba (ByVal Targ...
-
LARGE関数 飛び飛びの範囲を指定
-
エクセル 足して割る
-
エクセル “13ヶ月”を“1年1ヶ月...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
Excelで数式内の文字色を一部だ...
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
セルをクリック⇒そのセルに入力...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
枠に収まらない文字を非表示に...
-
Excelでのコメント表示位置
-
【Excel】 セルの色での判断は...
-
エクセルの書式設定の表示形式...
-
エクセル オートフィルタで絞...
-
エクセル 足して割る
-
エクセルのセルの枠を超えて文...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
EXCEL VBA セルに既に入...
-
Excel2003 の『コメント』の編...
-
数式を残したまま、別のセルに...
おすすめ情報