No.2
- 回答日時:
こんばんは!
VBAで無理やりやってみました。
↓の画像のように2行目に8~24までの整数の数値
(とりあえず時刻を表しているとします)を入力しておいてください。
そして、C列に時刻が入力されるとオートシェイプの赤の線が表示されるようにしてみました。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
B列 → C列の順に時刻を入力してみてください。
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim c As Range, r As Range, mySp As Shape
Dim startH As Range, endH As Range
Dim startM As Double, endM As Double
If Intersect(Target, Range("C:C")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
For Each mySp In ActiveSheet.Shapes
If mySp.Top >= .Top And mySp.Top + mySp.Height <= .Offset(1).Top Then
mySp.Delete
Exit For
End If
Next mySp
On Error Resume Next '←念のため//
If .Value <> "" Then
Set startH = Rows(2).Find(what:=Hour(.Offset(, -1)), LookIn:=xlValues, lookat:=xlWhole)
Set c = Cells(.Row, startH.Column)
startM = Minute(.Offset(, -1)) / 60
Set endH = Rows(2).Find(what:=Hour(.Value), LookIn:=xlValues, lookat:=xlWhole)
Set r = Cells(.Row, endH.Column)
endM = Minute(.Value) / 60
With ActiveSheet.Shapes.AddLine(c.Left + c.Width * startM, c.Top + c.Height / 2, _
r.Left + r.Width * endM, r.Top + r.Height / 2).Line
.ForeColor.RGB = vbRed
.Weight = 5
End With
End If
End With
End Sub 'この行まで//
>B3セルに9:00
>C3セルに15:00と入力します。
>するとE3セルからK3セルまで線が引かれる
と
>B4セルに15:00
>C4セルに22:30と入力します。
>するとL4からR4の半分まで線が引かれる
の両方を考えると最初のK3のつじつまが合わない
(15:30のような場合はL3セルの半分までになってしまう)ので
画像のようにJ3セルの最後までとしています。m(_ _)m
No.3
- 回答日時:
2016,2013は使ったことがないのですが、通常の機能ではたぶん出来ないと思います。
横棒グラフ機能を利用して、B列の系列のグラフ書式で塗りつぶしなしにしておけば、似たようなものを実現することは可能です。
セルの範囲を線の位置情報として利用するなら、たぶんマクロを利用するのが簡単だと思います。その場合、B4、C12等のセルに値を入れたタイミングで線を引き直すのも可能ですが、マクロが複雑になります。
たぶん簡単なのは、マクロを実行したときに全部の線を引き直してしまうという方式だと思います。
マクロを使えるならば、VBEを起動して、下記のコードを書いておき、B列,C列の値を書き直してから、マクロを実行してみてください。
下図のような線を引きます。線を引いてしまえば、行高さや列幅を変更しても、変更に応じて線の位置や長さは自動対応します。
なお、08:00以前、24:00以降のデータには対応してないマクロにしてあります。(23:59まで)
Sub hiku()
ActiveSheet.Shapes.SelectAll
Selection.ShapeRange.Delete
' データがあるのは三行目から30行目としています
For i = 3 To 30
If Cells(i, 2) = "" Then Exit Sub
If Cells(i, 3) = "" Then Exit Sub
j0 = i
jm = (Cells(j0, 1).Height) / 2 + Cells(j0, 1).Top
j1 = Hour(Cells(j0, 2)) - 4
j2 = (Cells(j0, j1).Width) * Minute(Cells(j0, 2)) / 60 + Cells(j0, j1).Left
k1 = Hour(Cells(j0, 3)) - 4
k2 = (Cells(j0, k1).Width) * Minute(Cells(j0, 3)) / 60 + Cells(j0, k1).Left
With ActiveSheet.Shapes.AddLine(j2, jm, k2, jm).Line
.ForeColor.SchemeColor = 23
.Weight = 3
.EndArrowheadStyle = msoArrowheadTriangle
End With
Next i
No.4ベストアンサー
- 回答日時:
No.3です。
うっかり マクロコードの最終行を書き忘れました。
(空白の行をカットして、再掲します)
Sub hiku()
ActiveSheet.Shapes.SelectAll
Selection.ShapeRange.Delete
' データがあるのは三行目から30行目としています
For i = 3 To 30
If Cells(i, 2) = "" Then Exit Sub
If Cells(i, 3) = "" Then Exit Sub
j0 = i
jm = (Cells(j0, 1).Height) / 2 + Cells(j0, 1).Top
j1 = Hour(Cells(j0, 2)) - 4
j2 = (Cells(j0, j1).Width) * Minute(Cells(j0, 2)) / 60 + Cells(j0, j1).Left
k1 = Hour(Cells(j0, 3)) - 4
k2 = (Cells(j0, k1).Width) * Minute(Cells(j0, 3)) / 60 + Cells(j0, k1).Left
With ActiveSheet.Shapes.AddLine(j2, jm, k2, jm).Line
.ForeColor.SchemeColor = 53 ' 線の色を変えました
.Weight = 3
.EndArrowheadStyle = msoArrowheadTriangle
End With
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式について教えてください。 3 2023/01/29 10:36
- Excel(エクセル) エクセルで、例えばAのセルの値次第で、Bのセルの値を自動入力する方法を教えてください。 2 2022/08/02 12:10
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) エクセルについて質問です 1 2022/12/10 11:49
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) エクセル 関数参照範囲のセルの表示 1 2023/03/16 14:55
- Excel(エクセル) エクセルで 例えばA1のセルに1+1 と入力すると B1のセルに2 と答えが出る関数があったと思いま 8 2022/12/16 20:57
- Excel(エクセル) エクセル・セルに数式を入力してセル指定計算 2 2023/04/21 12:46
- Excel(エクセル) エクセル データの入力規制について 3 2022/03/30 17:16
- Excel(エクセル) WORKDAY関数 4 2023/06/08 13:23
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
エクセルで日にちを入力すると矢印が自動的に引かれるとか。
Excel(エクセル)
-
VBAを使用して時間単位で矢印をひきたいです!
Excel(エクセル)
-
時間を入力するとタイムスケジュールに矢印で表示させたい
Excel(エクセル)
-
-
4
機械の運転時間帯を表すグラフを作りたい。
Excel(エクセル)
-
5
EXCELで、入力した時間に合わせてセルに色をつけるにはどのようにした
Excel(エクセル)
-
6
開始時刻から所要時間に応じてセルを塗りつぶすには
その他(Microsoft Office)
-
7
エクセルVBAで日付に合わせて図形を動かす際に土日を考慮外にしたい
Excel(エクセル)
-
8
Excelガントチャート 同一直線上に表示
Excel(エクセル)
-
9
入力した値をもとに線を引きたいのですが
Excel(エクセル)
-
10
エクセル2016で時間を入力して線で反映させる方法について
Excel(エクセル)
-
11
エクセルでガンチャートを作成しましたが、 矢印を自動で引くマクロで、日付日時の参照で、例えば、201
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル マクロ オートフィ...
-
エクセルで特定の文字列が入っ...
-
アクティブになっている行をマ...
-
結合されたセルをプルダウンの...
-
エクセル マクロで数値が変っ...
-
VBA アクティブ行の削除
-
[EXCEL]ボタン押す→時刻が表に...
-
VBAで色の付いているセルの行削除
-
エクセル 数字のみ残したい
-
AのセルとB行を比較して、一致...
-
【Excel関数】UNIQUE関数で"0"...
-
サイズの違うセル 並べ変え
-
Excel ウインドウ枠の固定をす...
-
電話番号の入力方式が違うデー...
-
エクセル 上下で列幅を変えるには
-
エクセルマクロ オートSUM(合...
-
セルの色によって条件文をつけ...
-
excelのデータで色つき行の抽出...
-
完全一致したら代入するマクロ...
-
【EXCEL】連続データの個数を抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
エクセル マクロ オートフィ...
-
【Excel関数】UNIQUE関数で"0"...
-
[EXCEL]ボタン押す→時刻が表に...
-
結合されたセルをプルダウンの...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
AのセルとB行を比較して、一致...
-
エクセル 上下で列幅を変えるには
-
Excel ウインドウ枠の固定をす...
-
特定の文字がある行以外を削除...
-
excelのデータで色つき行の抽出...
-
エクセル2016で時間を入力して...
-
excel 小さすぎて見えないセル...
-
EXCELで最後の行を固定
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
エクセルマクロで偶数行(又は...
-
エクセルのセルに指定画像(.jpg...
-
罫線の斜線を自動で引くマクロ
おすすめ情報