• ベストアンサー

EXCEL2000 VBA レコードの入っているセルにのみ罫線

EXCEL2000です。 CSVファイルを取り込んでエクセルシートに貼り付け(値だけを貼り付け)、罫線を受けて書式を整えるマクロを記録したいと思っています。 が、読み込むファイルのレコード数が毎日違う(10から100件程度)ので、取り込んだエクセルシートのセルに罫線がうまくつけられません。先に200程度セルに罫線をつけておく事も考えたのですが、そうすると印刷時にレコードのない部分まで印刷されてしまいます。一枚の紙に15件ほどしか入らないので、10の時に200だと何もレコードの入っていない紙が13枚ほど出てきてしまうのです。 レコードは横もちなのですが、ところどころ虫食いもあります。ただ、必ずB列だけはレコードがあります。 いくつかロジックを考えてみました。 1)Bのセルがnullでなければ、その横A1-D1までに罫線を引く。Bのセルがnullになったら罫線は引かない。それぞれセルごとに罫線が要ります。 2)Bのセルがnullでないセルまでを選ぶ方法。印刷のオプションに選択した範囲を印刷、というのがあるので、レコードが入っている範囲を選択する方法があればそれでもできるかなと。 どなたか教えていただければ幸いです。また、他に案があればよろしくお願いします。

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

  • ベストアンサー
noname#4564
noname#4564
回答No.2

下記の要領で。 Public Sub MakeLine() With Application.ActiveSheet.UsedRange .Borders(xlDiagonalDown).LineStyle = xlNone .Borders(xlDiagonalUp).LineStyle = xlNone .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous .Borders(xlInsideVertical).LineStyle = xlContinuous .Borders(xlInsideHorizontal).LineStyle = xlContinuous End With End Sub

kyrie_esumi
質問者

お礼

ご回答ありがとうございました。 こちらの方法で出来た、と思って回答を締め切らせていただいた直後、この方法は、セルに書式設定がしてある範囲もレコードが入っていると認識することがわかりました。 書式設定がなければこの方法でいけました。ありがとうございます。 http://www.okweb.ne.jp/kotaeru.php3?q=564131 こちらに再度質問させていただきましたが、もしもおわかりになるようでしたら、教えていただけますと幸いです。

その他の回答 (2)

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.3

罫線を引く前に、データのある範囲だけを、範囲選択ができればいいわけですよね? 以下は、そのサンプルです。 罫線を引くコードの前にこのコードを貼り付けてみてください。 Sub Sample() Dim myRow As Long Const myCol As Long = 4 'データ全体の列数(D列までデータがあるなら、4) Const myKey As Long = 2 '必ずデータがある列の番号(たとえばB列なら、2) myRow = ActiveSheet.Rows.Count myRow = Cells(myRow, myKey).End(xlUp).Row 'データ項目数を取得 Range(Cells(1, 1), Cells(myRow, myCol)).Select End Sub

kyrie_esumi
質問者

お礼

ありがとうございました。締め切るほとんど寸前にご回答いただいたようで、評価の対象にはいれさせていただく余裕がなかったのですが。 http://www.okweb.ne.jp/kotaeru.php3?q=564131 再度こちらで質問しているのですが、#3さんのコードも参考にしてみます。このコードでレンジした範囲のセルの高さを80にするコードを書いてみようと思います。 ありがつございました。

noname#11856
noname#11856
回答No.1

1でいくなら、罫線の引き方はマクロの記録でやっていただくとして Dim lngRow As Long Do Until IsEmpty(Cells(lngRow, 2)  罫線を引く Loop と、ちょっと改造してあげれば、できると思います。

kyrie_esumi
質問者

お礼

回答ありがとうございました。 もうちょっと試行錯誤してがんばってみます。

kyrie_esumi
質問者

補足

罫線を引く、というマクロをマクロの記録で作りました。 Sub 罫線を引く() ' ' Range("A1:D1").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End Sub これで、ご回答いただいたコードはどこにどう記述すればいいのでしょうか。Loop関数の使い方もいまいちわからないので、もしもお時間があるようでしたら教えてください。

関連するQ&A

  • VBA(Excel)セルの罫線について・・・

    VBAで、セルに罫線をつけたいのですが、選択範囲の外枠だけに罫線を ひきたいのに、選択範囲内全ての罫線がひかれてしまいます。 以下のようなものを実行しました。 Public sub Sample() Range("A1:C3").Select With Selection .BorderAround .Borders.ColorIndex = 1 '線の色を黒にする .Borders.Weight = xlThin '線を細い線にする End With End Sub どうしたら、選択範囲の外枠だけに線をひけるでしょうか? よろしくお願いします。

  • VBA 罫線について

    VBA初心者です。 (1)Sheet1のA1に罫線を引きたいセル数を入力 (2)Sheet2にS1A1に入力された数だけS2A1から横にセルが罫線で囲まれる 例  (1)S1A1・・・2  (2)S2A1、A2がセルごとに罫線が引かれる 罫線の引き方まではわかるのですが、常に数が変わる状態での引き方がわかりません。

  • G→可視セル→コピー貼り付けがうまくいかない

    お世話になります。 エクセル2007でよく使う「可視セルのみコピーし貼り付け」がうまくいきません。 既存ブックの印刷したい行以外は非表示にし、 印刷したい範囲を選択してから 「ジャンプ→可視セル選択→コピー」し、 別のブックを開きひとつだけセルを選択し「貼り付け」すると、 非表示行まですっかり貼り付いてしまいます。 「形式を選択して貼り付け」にすると、 「ワークシートオブジェクト」とか「図」とか 「ビットマップ」とか書いてある見覚えのないウィンドウが開きます。わからないまま「ワークシートオブジェクト」でOKすると 「貼り付けられませんでした」と言われます。 目的は、不要なところを除き必要なところだけ 紙をケチって詰め詰めで印刷したい、ということです。 どなたかご指導お願いします。

  • コピー→貼り付けしたら、セルの元の罫線のままにしたい

    Excel2000だと思います。 Excelで作った表、色々な罫線を引いてあります:二重線、点線、太さ違いの線、色違いの線・・・ AセルをコピーしてBセルに貼り付ける場合、Aセルの罫線も一緒にBセルに貼り付けられてしまうのを避ける為に、「形式を選択して貼り付け→罫線を除くすべて」若しくはそのショートカットキーAlt+E+S+Xを利用してきました、しかしこのような操作は頻繁にしなければいけない状況なので、実に面倒に感じました。 罫線を一括固定する(?)こうのような方法はありますか?理想はそのままコピー→貼り付けしても罫線除き貼り付けられた効果にしたいです。 ご存知の方どなたか教えてください!よろしくお願い致します。

  • Excelの罫線のロックについて

    多量のセルを別のワークシートにコピペしなければならない作業があるのですが、各々罫線が異なっているので、いちいち[形式を選択して貼り付け]→[罫線を除くすべて]をしています。 Excelの罫線をロックできるコマンドは特にないし、量が量なので、一発で[形式を選択して貼り付け]→[罫線を除くすべて]のマクロを組んでみたいのですが、マクロはド素人です。 なのでマクロの構文だけではなく、はじめから順を追って教えていただける方、どうぞよろしくお願いします!

  • Wordに挿入したExcelの表の罫線

     この度Wordで文書を作成していまして、メニューの挿入→オブジェクトから「Microsoft Excel ワークシート」を選択しまして、Excelの表を文書中に貼り付けて使用していました。そして、いざ印刷してみますと、文書中のExcelの表の部分で、自分で引いた罫線ではない、元々あるセルを区切る罫線が印刷されていました。そしてよく見ると、文書中に複数Excelの表を挿入していたのですが、元々ある罫線が印刷されているのはある1個の表だけでした。  これは、なぜなのでしょうか、また、どうやれば解決できるのでしょうか。一応白い罫線を引けば印刷されないのですが、手間がかかるし、直せるなら直せたほうがいいので、解決法が分かる方は教えてください。  当方の環境は、Word2002,Excel2002と、WindowsXPです。

  • 入力セルから入力セルに罫線をひく

    BBAでお聞きします。 セルB3「あ」が入力してあり、F5に「い」が入力してあるとします。B3;F5まで罫線をマクロ設定後、ボタンを作成して記入できますでしょうか。 Excelで「B3」を選択後、shift+ctrl+endで「F5」まで指定後、相対マクロで記憶させます.その後、1度クリアー後、再度「B4」から「F4」まで選択しますとF5まで罫線が引かれます。 記入セルから記入セルまでの罫線の引く、VBAをご教授ください。 宜しくお願いします。

  • 【Excel】罫線の作成

    Excel2003を使用しています。 罫線を引く際、線を引きたいセルを選択して、罫線メニューから「外枠」や「格子」等のボタンを押せば、簡単に引くことができますが、同じようなボタンを独自に作ることはできませんか? 希望としては… 3行4列のセルに(例えばA1:D3とした場合) A1:D1→上罫線 A3:D3→上罫線+下二重罫線 複数のシートに渡って、この罫線を引くのですが、選択するセルが違うので、作業グループではできません。罫線メニューのボタンをクリックするのと同じような操作で、罫線が引けると嬉しいのですが。。。 よろしくお願いします。

  • Excel VBA 空白セル以外のセルを罫線で囲む

    Excel VBA 空白セル以外のセルを罫線で囲む ここの質問箱をよく利用させて頂いている者ですが、また質問させていただきます。 あるシート(例:”Sheet1”)の全セル内のうち、ランダムな文字が全セル内のどこかに記入されています。 また、記入される位置は常に変化します。 つまり、ある時は「A1」に入力されていても、次ははそうでないということです。 この様な場合、文字が入力されているセルのみに罫線を引く処理を行いたいのですが、実現は可能でしょうか? また、可能であれば、どの様なコードになるのでしょうか。教えてください。

  • EXCEL2010罫線が印刷できない

    EXCEL2010であるシートを印刷すると罫線の一部が表示されません。 ※EXCEL2013では印刷できます。 サイズはA3でそのプリンタからしかA3は印刷できません。 一部の行を非表示にしています。 ※罫線が印刷されない部分は非表示のセルと隣接していません。 罫線は一番細い点線です。 上手く印刷する方法はないでしょうか? ・印刷品質600⇒200 罫線が表示されて印刷されたが全体が大きくずれた ・罫線の引き直し   黒色の線で引きなおしたが効果なし ・非表示のセルを表示してから印刷 罫線が問題なく印刷できた  ※印刷はしたくないが必要なデータなので非表示のまま罫線を印刷したい ・行の高さの変更  効果なし

専門家に質問してみよう