みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル97の罫線について

EXCEL97の罫線について教えてください。

マクロで、単純にデータのあるセルに罫線を引きたいと考えています。
ACCESSのデータをEXCELにエクスポートしてからEXCELのシートを開くので、
シートの列(横幅)はどれだけあるかわかりません。ちなみに行のマックス行の取得の仕方はわかっています。

現在、下のようなコードで5枚のシートに罫線を引いているのですが、すべてのシートが一枚目のシートの列行と同じだけ罫線が引かれてしまいます。

==========================================================
Public Sub get_keisen(sheet As String)  ←シート名が引数

Set ws1 = Worksheets(sheet) '罫線を引くシート
Dim maxRow As Long '最大行
Dim I As Integer

Application.ScreenUpdating = False
ws1.Activate

'シートの最大行を得る
ws1.Activate: maxRow = ws1.Range("A65536").End(xlUp).Row

'シートの横幅を得る
I = 1 'デ-タ1行目設定
Do Until Cells(1, I) = ""
  I = I + 1
Loop

'罫線を引く範囲(全体)を選択
ws1.Activate: Range("A1:I" & maxRow).Select

  ~ 罫線を引く処理文 ~

end sub
===========================================================

もっと簡単な方法があればその方法でかまいません。
宜しくお願い致します。

投稿日時 - 2002-10-22 16:22:01

QNo.387100

すぐに回答ほしいです

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

初めまして。次のように変更してみて下さい。

Public Sub get_keisen(sheet As String)  ←シート名が引数

Dim maxRow As Long '最大行
Dim I As Integer

for i = 1 to activeworkbook.worksheets.count
Set ws1 = Worksheets(i) '罫線を引くシート
Application.ScreenUpdating = False
ws1.Activate
range("A1").currentregion.select

  ~ 罫線を引く処理文 ~
next i
end sub

これで多分あなた様のおやりになりたいことが実現していると思います。
あなた様の書かれたマクロは、常に1枚目のシートの列と行しか取れないようにかかれてありました。それを修正してみました。

もし動作しなかったり、不都合・ご不明な点があったときは、ご遠慮なくお知らせ下さい。私でよろしければあなた様のおやりになりたいことが実現できるまでご一緒に考えていきたいと思います。

投稿日時 - 2002-10-22 16:38:39

お礼

for文でループを使わずにやってみましたらうまく出来ました。
ありがとうございました。

投稿日時 - 2002-10-22 19:29:00

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

こんにちは。
もう解決されているようですが、元はテーブルのようですし UsedRange を使う方法も。。。

'---------------------------------------------------------
Sub myMacro()
Dim mySheet As Worksheet
 For Each mySheet In Worksheets
   LineAdd mySheet
 Next mySheet
End Sub

'---------------------------------------------------------
Sub LineAdd(ws As Worksheet)
Dim i As Integer
 If ws.UsedRange.Count = 1 Then Exit Sub
 For i = 7 To 12
  On Error Resume Next
  ws.UsedRange.Borders(i).LineStyle = xlContinuous
 Next i
End Sub
'---------------------------------------------------------

投稿日時 - 2002-10-22 21:46:36

ANo.2

下記を参考に最右列を捉えてはどうでしょうか。
CurrentRegionはそれなりの注意点もあるようですが
私の仕事上では差さわりはありませんでした。
Columnsのsに注意。
Sub test01()
c = Worksheets("sheet1").Range _ ("a1").CurrentRegion.Columns.Count
MsgBox c '確認のため
End Sub

投稿日時 - 2002-10-22 19:12:23

あなたにオススメの質問