• 締切済み

excelで罫線を引くマクロを教えてください

エクセルで、以下のような表があったとします 商品コード  商品名  商品の特徴 0001   商品1   商品1の特徴1                商品1の特徴2 0002   商品2   商品2の特徴1                商品2の特徴2                商品2の特徴3       ・       ・       ・ この場合に、一つの商品の情報を実線で囲み、その中を 1行づつ横に点線を引くという作業がしたいのです。 ただ、その時によって商品の数が変わるため、 (1)一つの商品の範囲を認識して罫線を引く (2)その時によって数が変わる商品それぞれに(1)の操作をする この2点をクリアしたマクロが作りたいのです 皆様のお知恵を貸してください。 ちなみにexcel2003です。

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.8

商品コードの列で、コード入力セル以外は、間違いなく空白セルである ということなら、turuzouさんのコードで希望通りの動作をします。 商品コード列の最上行セルで、Ctrl+↓ とキー操作してみてください。 最終行までカーソルが移動するなら、空白セルはないので、すべて破線になります。 数値かどうか判定すればどうでしょうか。 試しに組んでみました。 Sub test1()   Dim rng As Range   Dim r As Range      Set rng = Range("A1", "A" & Cells(Rows.Count, "C").End(xlUp).Row)   rng.Resize(, 3).BorderAround LineStyle:=xlContinuous, Weight:=xlThin   Set rng = rng.Offset(1).Resize(rng.Count - 1)   For Each r In rng     With r.Resize(, 3).Borders(xlEdgeTop)       If IsNumeric(r.Value) Then         .LineStyle = xlContinuous         .Weight = xlThin       Else         .LineStyle = xlDash         .Weight = xlThin       End If     End With   Next End Sub >No3の方も仰る通り、色々調べてやってはみたのですが、なぜか >実線が引かれず、うまくいかない原因を見つけられません。 抽象的なことでなく、ご自分でやったこと、書いたコードを提示し、 間違いを指摘してもらうようにすればどうでしょうか。 希望通りの動作をするコードの提供を待っているより、確実に実力UPになると思います。

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.7

No6 の追記です。 A列の空白セルを空白にさせるには、色々ありますが、 (数式などを削除しても、Ctrl+↑で、コード番号を選択できない場合) A列を選択 → データ → 区切り位置 → 完了 で、空白セルになると思います。 又は、A1を選択 → フィルタ → オートフィルタ → フィルタの 空白セル を抽出 → 表示されたA列のセルを選択 → Delete で、空白セルになると思います。 ご自分で作成(修正)された、マクロを提示してみて、A列等の表示が直接入力なのか、数式等で、表示させているのかも、お教え下さい。

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.6

お疲れ様です。 多分A列は空白に見えていて、数式で空を表示していたり、スペースがあったりしていませんか(本当の空白セルではない)? 提示したマクロは、サンプル画像での、A11 がアクティブセルの時、Ctrl+↑ 押下で、A10(0003)がアクティブにならないと、実線が引かれませんので、確認して下さい。 例えばA列の最下行のセルを選択して、Ctrl+↑ 押下で A1 セルが選択されると、現在のマクロでは正しく動作しません。 A列に数式があり、数式を削除してよいならば、A列の範囲を選択してコピー→形式を選択して貼り付け の 値 で、数式を削除してみてください。 A列の最下行から、Ctrl+↑を繰り返し押下して、コード番号を順々に選択できるようになれば、現在のマクロで実線が引かれます。 又は、 >空白になり得るのは 特徴の分類/特徴の内容以外の5列 上記の列で、本当の空白セルがある列があるのならば、その列を対象に商品コード別の範囲の上限を捜すことも出来ます。(補助列を作っても良いと思います) Sheetの変更が出来ないのならば、No.3さんでも書かれているように、1行ずつ、A列を基準に、罫線種を選択しながら、上罫線を引くマクロになると思います。

回答No.5

こんにちは。 ちょっと式が複雑になりますが、条件付き書式で希望の動きになるかと思います。 A1:商品コード B1:商品名 C1:商品情報 として、2行目からデータを入力すると仮定します。 A列とB列の2行目には (1)下部実線書式:数式が =OR((AND(C2<>"",A3="",C3="")),(AND(C2<>"",A2="",C3<>"",A3<>"")),(AND(C2<>"",A2<>"",C3<>"",A3<>""))) (2)下部点線書式: =AND(C2<>"",A3="",C3<>"") C列2行目には (1)下部実線書式/右部実線書式:数式が =OR((AND(C2<>"",A3="",C3="")),(AND(C2<>"",A2="",C3<>"",A3<>"")),(AND(C2<>"",A2<>"",C3<>"",A3<>""))) (2)下部点線書式/右部実線書式:数式が =AND(C2<>"",A3="",C3<>"") と入れて、下の行へ書式の複写をして下さい。 するとほぼ同様の動きになると思います。後は、数式・書式の調整を行ってください。 私も、3行ごとに罫線を引いて入力するなどで使っています。

この投稿のマルチメディアは削除されているためご覧いただけません。
  • turuzou
  • ベストアンサー率33% (15/45)
回答No.4

No.1です。 >サンプルです、修正は、ご自分で、お願いします。 >・・・に変えるだけで大丈夫でしょうか? 最初から実際の範囲を提示するべきですし、確認してから質問してください。 >・・・横線がすべて点線に A列に例題の様にコード番号が入力されていれば、こちらでは実線が引かれています。 追記 Dim x, y の下へ Application.ScreenUpdating = False  If x <= 2 Then Exit Sub を削除して Next x の下へ Application.ScreenUpdating = True としてみても

H0TELIER
質問者

お礼

>最初から実際の範囲を提示するべきですし・・・ 申し訳ございません。 実際は、 商品コード/発注部署/発注日/納品日/商品名/特徴の分類/特徴の内容 となっており、商品コードが0001ではなく、5桁で51237とか 85068みたいな数字なんです。 空白になり得るのは 特徴の分類/特徴の内容以外の5列です。 No3の方も仰る通り、色々調べてやってはみたのですが、なぜか 実線が引かれず、うまくいかない原因を見つけられません。 お力をお貸し頂ければ幸いです。

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

こんなの簡単で、丸投げすることも無いでしょう。 (1)まづマクロの記録を取り(罫線を引く位置は置いといて) 罫線、点線を引くなどのコードがどうなるか知る。 上罫線だけを引く場合はどういうコードになるか。 それと多数列に罫線の引き方のコード。 (2)実線を引く場所の特徴を考える。これは質問者が一番良く事情を知っているはず。 例 各行で商品名の列が空白でなかったら、上罫線を実線で引く (3)点線を引くべき行の特徴を考える。 例 商品列が空白なら、上罫線を点線で引く。 === 以上ぐらい考えて、何か疑問があれば質問するようにしないと。 頼りすぎ。 Googleででも罫線を引く、点線を引く VBAで照会したら。 内容も難しい点はないと思う。

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.2

No.1です、訂正です。 If x - 1 <= 2 Then Exit Sub ↓ If x <= 2 Then Exit Sub 失礼しました。

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.1

サンプルです、修正は、ご自分で、お願いします。 Sub keisen()  Dim x, y  For x = Cells(65536, 3).End(xlUp).Row To 2 Step -1   y = IIf(Cells(x, 1).Value = "", Cells(x, 1).End(xlUp).Row, x)   With Range(Cells(y, 1), Cells(x, 3))    .Borders(xlEdgeLeft).LineStyle = xlContinuous    .Borders(xlEdgeTop).LineStyle = xlContinuous    .Borders(xlEdgeBottom).LineStyle = xlContinuous    .Borders(xlEdgeRight).LineStyle = xlContinuous    If x <> y Then .Borders(xlInsideHorizontal).LineStyle = xlDot   End With   x = y   If x - 1 <= 2 Then Exit Sub  Next x End Sub

H0TELIER
質問者

お礼

ありがとうございます!! 列が、例では3列までですが、7列まである場合は、 1) For x = Cells(65536, 7).End(xlUp).Row To 2 Step -1 2) With Range(Cells(y, 1), Cells(x, 7)) に変えるだけで大丈夫でしょうか? これだけでも充分効率化は図れるのですが、作っていただいた ものですと、横線がすべて点線になっており、商品が変わる毎に 実線で区切りたい場合は、どうすればよろしいのでしょうか? 重ねてお願いいたします。

関連するQ&A

  • エクセルの罫線の表、点線を実線にするには

    エクセル2010ですが、罫線の表が点線なのを、普通の実線に直そうとして、セルの書式設定の罫線のところで直そうと指示するのですが、すぐ点線にもどってしまいます。 どのようにすれば、実線の罫線の表に戻すことができますでしょうか。

  • ワードで作った表での罫線が実線にできない

    よろしくお願いします。ワードで表を作った際、枠や罫線の一部のみを残す場合、一旦表のオートフォーマットで枠をまっさらにしてその後、行の一部を罫線を引くボタンで引いたところ実線を選んだのに点線になってしまいます。何度やり直しても実線にならないのですが罫線が点線(といってもホントの点線でなくある一定の長さでぷつぷつ点状に切れているというかんじです。)になるのをどうしたら直せるでしょうか? 困っています。お願いします。

  • エクセル 罫線の太さについて

    エクセルで表を作成しているのですが、罫線の太さを変更したいと思っています。Wordだと変更できると思うのですが、エクセルでの罫線の太さの変更方法はあるでしょうか?点線ではなく実線を使いたいと思っています。

  • エクセルマクロ 罫線の引き方について

    マクロの自動記録を使用して罫線を引きたいと考えています。 A1からD17の表があるとして、そこに罫線を引きたいのですが、最終行が17とは限りません。最終行がD150ということも考えられます。(列はDで固定) この場合どのようにしたらよいのでしょうか?? まだマクロの自動記録しか使用したこがない初心者ですが、教えていただけたらと思います。

  • EXCELの罫線が印字されない。

    EXCEL2002上で表を作成し、印刷すると 縦横の罫線が印字されません。(一番細い実線) もちろん、プレビュー画面上は罫線は見えています。 ・太実線は印字可能。 ・細実線も斜めなら印字可能。 ・細実線で描いたオブジェクト(四角形)を  印刷範囲に配置しておくと、ちゃんと縦横の罫線が  印字される。 ちなみにプリンタはエプソンのLP-8200です。 EXCEL側の問題か、プリンタドライバの問題か・・・。 切り分けさえもできずに困ってます。 似たような経験をされた方、お助けください!

  • 「エクセル」行を表示・非表示にした時の罫線について

    表の中に、太さ、実線、点線、様々な罫線が混在している表で、行を非表示にしたり表示する際、どの部分の罫線が表示されているかご教示ください。 例:全て格子で、行10の上罫線と下罫線だけを太線にしている場合。 行5~9までを非表示にした際、4と10の間は太線ですが、 行5~10までを非表示にした際、4と11の間は太線ではありません。 何かルールがあるのでしょうか? 変な質問で恐縮ですが、どうぞお願いします。

  • エクセルの罫線

    エクセルで表を作成し罫線を引きますが、 この時、一番細い実線を選択しても 印刷するとけっこう太い線で 表が見づらいです。 もっと細い罫線を引く方法はないものでしょうか?

  • Excelの点線が印刷できない!

    Excel2003で表を作成する時、点線を使いました。 (セルの書式設定→罫線→スタイルの無しの下) 印刷プレビューでも確認した際、点線になってますが、プリンタで 印刷すると実線に変わっています。点線を印刷するにはどうすれば よいのか教えてください。

  • エクセルの表、罫線はワードで編集したい

    お願いします。Office2003です。 メンバーの仕事内容を控えるための名簿をエクセルで作成しました。 しかし表の大きさと罫線の実線と点線の太さのバランスがとれないので、罫線はワードで編集したいと思います。 エクセルからどのような形式でワードに貼り付ければ、うまく罫線の編集ができるのでしょうか。

  • WordをPDF化すると罫線パターンが崩れる

    こんにちは。 Wordのバージョンは2000、Acrobatは6.0です。 AcrobatでWordのファイルをPDF化すると、実線だった罫線の一部が点線になってしまいます。 その表の罫線は実線と点線が混在しているのですが、上記のエラーの回避方法がわからなくて、困っています。 画面を縮小・拡大してみても、印刷してみても点線のままです。 全部実線にした上でPDF化すると大丈夫なようなのですが、できれば混在のままでPDFにしたいのです。 以上、よろしくお願いします。

専門家に質問してみよう