• ベストアンサー

Excelのセルに沿って罫線や棒線を引きたい

Excel上の指定した二つのセルを結ぶような、横の棒線を引きたいのですが… 例えばセル番号 (x(1),y(1)) と (x(2),y(1)) で、上側の罫線でもなく下側の罫線でもなく、その中間に 引くイメージです。 また、上側の罫線を引く場合、もしくは下側の罫線を引く場合はどうしたらよいでしょうか。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 以下は、2つのセルを結ぶように出来ています。 範囲を選択すれば、左端(または左端上)と右端(または右下端)のセルの真中にライン罫線が結ばれます。 MYSELECT の定数を 上側の罫線を引く場合-1、もしくは下側の罫線を引く場合-3 にしてください。 なお、端と端を結ぶ場合は、 a.Width / 2 b.Width / 2 となっている部分を取り去ればよいです。 比較的基本的なコードなのですが、この手のものは、相手の環境次第で、意外に、気が付かない失敗が出てきますので、経験的に気をつけたつもりですが、私のが必ずしもうまくいくとは限りません。 '標準モジュール '------------------------------------------------- Type Rect   x As Double   y As Double End Type Sub LineMakingBetweenCells()   Dim a As Range   Dim b As Range   Dim Asize As Rect   Dim Bsize As Rect     '罫線位置   Const MYSELECT As Integer = 2 '1-上, 2-中, 3-下     If TypeName(Selection) <> "Range" Then Exit Sub   If Selection.Areas.Count = 2 Then    Set a = Selection.Areas(1)    Set b = Selection.Areas(2)   ElseIf Selection.Count > 1 Then    Set a = Selection.Cells(1, 1)    Set b = Selection.Cells(Selection.Count)    Else    MsgBox "正しく2点のセルを選択していません。"    Exit Sub   End If     With Asize    Select Case MYSELECT      Case 1 '上       .y = a.Top: .x = a.Left + a.Width / 2      Case 2 '中       .y = a.Top + a.Height / 2: .x = a.Left + a.Width / 2      Case 3 '下       .y = a.Top + a.Height: .x = a.Left + a.Width / 2    End Select   End With   With Bsize    Select Case MYSELECT      Case 1       .y = b.Top: .x = b.Left + b.Width / 2      Case 2       .y = b.Top + b.Height / 2: .x = b.Left + b.Width / 2      Case 3       .y = b.Top + b.Height: .x = b.Left + b.Width / 2      Case Else       MsgBox "MYSELECT の設定がヘンです", vbCritical       Exit Sub    End Select   End With     With ActiveSheet.Shapes.AddLine(Asize.x, Asize.y, Bsize.x, Bsize.y)    .Line.Weight = 0.75    .Line.DashStyle = msoLineSolid    .Line.Visible = msoTrue    .Line.ForeColor.SchemeColor = 8   End With End Sub '------------------------------------------------

kistune
質問者

お礼

なるほど、このように考えるのですか。実装してみたところうまく動きました。ありがとうございます。

その他の回答 (3)

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

オートシェイプの線をAddLineメソッドで引けばよい。 2セルの指定はどうするのですか。そこが難しい課題を持ち込むと思います。 斜め方向の結線を考えていますか。 それに言葉の表現に気をつけてください。 >横の棒線 横線 >セル番号 (x(1),y(1)) と (x(2),y(1)) で エクセルのセルには番地という表現方法があります。それに従ってください。B3とH3セルを結ぶとか >上側の罫線を引く場合 普通の罫線を利用するのとどう違いますか

kistune
質問者

お礼

曖昧なるイメージのみに頼った不正確な表現、誠にもって汗顔、恐悦至極の面伏せ物の質問でございました。

  • o_tooru
  • ベストアンサー率37% (896/2361)
回答No.2

こんばんは、疑問はつきませんね。 さてご質問の件ですが、基本的には、セルの外側に色を塗る様な概念の罫線ですね。後別解としては、オートシェイプで、線を置くと言うことも出来ますけど。 この二つくらいしか思い浮かびません。

kistune
質問者

お礼

VBAの本を見ていたら、確かにオートシェイブを扱うものがありました。応用できそうです(汗)

noname#22222
noname#22222
回答No.1

罫線の概念には該当するようなものは存在しないと思います。 Excelの与件のなかで工夫するしかないでしょう。

kistune
質問者

お礼

うー難しそうですねー。

関連するQ&A

  • エクセルでセルの罫線を半分にすることは?

    エクセル2002です。セルのひとつに罫線(セルの下側だけ)を半分だけ引くことはできますか?

  • エクセルの罫線

    エクセルで罫線を引いて、表のようなものを作成しました。3ページにのぼるものです。 印刷すると各ページの最後の罫線(セルの下側)が印刷されていません。どうしてでしょうか?念のため再度設定したのですが、やはり駄目です。宜しくお願いいたします。

  • エクセルでのセルとセルを結ぶ罫線は?

    エクセル97です。社員の連絡網を作りたい。セルを3つ枠でかこってその枠を中央付近でつなげたい。(箱枠を線でつなげたい)罫線をの引き方を教えてください。それと、たてに二股に分ける場合先頭の枠を二股の中央に位置させる場合はどうすればよいか。うまくいえませんが、すいません。

  • Wordの罫線で

    例えばエクセルから数値をWordの紙面にもってきて貼り付けると x=333333 Y=444444 Z=55555555 となったとします XYZはひとつのセルにあるのでWordにもセル(グリッド線の)が作られて XYZはひとつのグリッド線に囲まれたひとつのセルに入ってしまうのですが、 この3つを分割する方法はないものでしょうか? 但しX、Y、Zの境目に手動(?)で1本ずつ2回罫線を引けば私の目的とするカタチにはなるのですが、実際はこのXYZの行が何行もあり、又エクセルのシートも何枚もあるのです。罫線は1枚同時に引けるので1枚につき2回引けばよいとしても、シート自体が何枚もあると、ちょっとめげます。 良い知恵はございますか?

  • 罫線が引かれているセルの個数を調べるには

    OFFICE2003エクセルで指定した範囲内に特定の罫線(斜線)が引かれているセルの個数を調べる方法は無いでしょうか?宜しくお願い致します。

  • エクセルの表の罫線が一部だけ印刷できない

    __________ |              | |              ←「ここ」 |              |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ・このように、表の一部のみが印刷されません。印刷イメージでもこの 部分だけが表示されません。セル内データを削除してもダメでした。 何か原因として考えられることがありますか? ・エクセル2003使用 ・ページ設定はA4横、「次のページ数に合わせて印刷」、「横1×縦1」に設定 ・表の縦罫線の一部がセル1個分だけ印刷されない ・印刷イメージを見ても、セル1個分だけ罫線がない ・何度罫線を引いても、印刷イメージで見ると、罫線がない状態。 ・セル内には「0」という数値があるだけ。上下のセルはそれぞれ6ケタの数値が入力されているが縦罫線はキチンと印刷される。 ・上下左右ともページの余白は余裕あり

  • マクロで指定の行に罫線を引く方法

    エクセル2003です。 やりたいことはタイトルにあるように指定行に罫線を引くなのですが 具体的には、 A列の10行目から80行までランダムに1から3までの数字が入っていて、"1"が入ってるセルの上側でその行のA~AC列まで二重罫線を引きたいという状況です。 条件付けで1を探してそのセルの範囲で罫線を引かせるってのは、For Nextで探しつつって感じなんでしょうか? よろしくお願いします。

  • VBAを使用し10行おきにセルの下に罫線を引く方法

    Excel2003のVBAを使用し、10行おきに太い罫線をセルの下側に引きたいのですが、ご存知な方教えて頂けないでしょうか? 出来る事なら、セルの中に×が入っている行は自動的に省いて(選ばず)10行おきに罫線を引きたいと思っています。 先日、解決した内容の質問ですが、新たに3行目から最終行までとか罫線を引きたい行を指定出来るようにコーディングいただけると大変助かります。

  • エクセルVBAでカレンダー作成したいのですが(罫線)

    エクセルVBAでカレンダーを作りたいのですが、次の点が分かりません。 1. 月末日が4週目にくる場合と5週目にくる場合があり、罫線を引く範囲が変わってしまいます。usedrange等で範囲指定後罫線を引きたいのですが、各セルは数式により日にちを表示させているので、月末日以降の空白セルまで範囲指定指定しまい4週で終わる月であっても5週目まで罫線を引くことになります。セル内の数式を無視し、月末日までの週を範囲指定する方法をご教授ください。

  • エクセルで罫線を引くとデーターを消すマクロ

    あまり、マクロに詳しくなくて どうしても分からないので質問します。 1 エクセルのA1のセルにデーターを入れると   A30迄自動的にA1のデーターをコピー 2 A5の下側に罫線を付けると、A6から A30まで、コピーしたデーターを消す (A5に入れる罫線は、ランダムで、A3の時もあれば、 A20の時もあります) 3 A6に違うデーターを入れると 1と同じくA36までコピーする 4 2と同じくA10の下側に罫線を付けると、 A11からA36までデーターを消す 以上のような作業でデーターを コピー、ペーストで繰り返しているのですが、 罫線を引くことを基準に、マクロで出来ないかと 思い質問します。 よろしくお願いします。  

専門家に質問してみよう