• 締切済み

エクセルマクロで長文です

いつも皆様 度々教えて頂いて有り難うございます。 おかげさまで何とかいいところまで作成する事ができました。この場を借りて皆様に御礼申し上げます。  そこでしつもんなのですが、以下のマクロにおいて  (変数等の指定は省略します) columns("c:c").interior.colorindex = xlnone cnt = 3 temp = range("a6").value cells(cnt,3).resize(temp).interior.colorindex = 16 select case count1 case 1 cells(cnt,4).resize(temp).select selection.bordersaround linestyle:=xlcontinuous selection.bordersaround weight:=xlthin case 2 途中省略    case 4 (cells(cnt,4),sells(cnt,7)).resize(temp).select selection.bordersaround linestyle:=xlcontinuous selection.bordersaround weight:=xlthin とあるとします。  case4 の場合になぜか各セルの中にまで縦線の罫線が  入ってしまいます。 僕のイメージとしては範囲の大外のみの罫線と下線のみを 引きたいのですが、何処がまちがっているのでしょうか。 皆様お知恵をお貸し下さい。

みんなの回答

  • Raistlin
  • ベストアンサー率63% (65/102)
回答No.3

以下の通りにすると、それらしい動作をしています。 A6に表?の列数、A7に行数を入力するものと仮定しています。 Sub linetest() count1 = Range("a7").Value 'ここ追加 Columns("c:c").Interior.ColorIndex = xlNone cnt = 3 temp = Range("a6").Value Cells(cnt, 3).Resize(temp).Interior.ColorIndex = 16 Select Case count1 Case 1 Cells(cnt, 4).Resize(temp).BorderAround _ LineStyle:=xlContinuous, Weight:=xlThin Case 2 '途中省略 Case 4 Range(Cells(cnt, 4), Cells(cnt, 7)).Resize(temp).BorderAround _ LineStyle:=xlContinuous, Weight:=xlThin End Select 'ここ追加 End Sub もし私の推測が正しいのなら、Select Caseを頑張って記述しなくても、以下のようにできると思います。 Sub linetest2() count1 = Range("a7").Value 'ここ追加 Columns("c:c").Interior.ColorIndex = xlNone cnt = 3 temp = Range("a6").Value Cells(cnt, 3).Resize(temp).Interior.ColorIndex = 16 Range(Cells(cnt, 4), Cells(cnt, 7)).Resize(temp, count1).BorderAround _ LineStyle:=xlContinuous, Weight:=xlThin End Sub 蛇足: tempはlRowSize、count1はlColSizeみたいな名前にしたほうがよいのではないでしょうか。

noname#8445
noname#8445
回答No.2

マクロの記録でそのデータを使えばいいのでは?

回答No.1

こんにちは。 うーん、よくわからないんですが・・・。 Borders(Index)の記述はないんですか? ソースの記述ミスが多すぎて・・・(sellsって何?)。 (^^ゞ

関連するQ&A