• ベストアンサー

このマクロコードをダイエットするには?

罫線を引き、配色し、文字に色を付ける。 このコードをどのようにダイエットすればよいのでしょうか? 罫線のマクロはこんなに大きいのですか? Withの使い方がよくわかりません。 よろしくお願い致します。 ------------ Sub Test1() Range("B1:O14").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With Selection.Interior .ColorIndex = 56 .Pattern = xlSolid End With Selection.Font.ColorIndex = 33 End Sub

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

体脂肪率3%以下のダイエット。。。 ------------------------------------- Sub Test222()   Range("B1:O14").Borders.LineStyle = xlContinuous   Range("B1:O14").Borders.Weight = xlHairline   Range("B1:O14").Interior.ColorIndex = 56   Range("B1:O14").Font.ColorIndex = 33 End Sub ----------------------------------------- Sub Test333()   With Range("B1:O14")     .Borders.LineStyle = xlContinuous     .Borders.Weight = xlHairline     .Interior.ColorIndex = 56     .Font.ColorIndex = 33   End With End Sub ------------------------------------------

oshietecho-dai
質問者

お礼

ななななんと、 こんなにまでしてしまってもよいわけですね! いや~まいりました。 皆様にポイントが付けられなくなりました。 どうも有難うございました。

その他の回答 (2)

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

こんばんは。 >罫線のマクロはこんなに大きいのですか? 慣れないうちは、マクロのダイエットは難しいです。 どちらかというと、それは、構造化プログラミングを理解したうえで、行うべきですから、基礎的なことを十分の理解してから行ってください。ただし、マクロの行は、100行以内にとどめるようにしてください。それ以上になったら、区切れの良いところで、別けてください。 >Withの使い方がよくわかりません。 例: Range("A1:D10").Value ="○" Range("A1:D10").Interior.ColorIndex = 4 With Range("A1:D10")   .Value ="○"   .Interior.ColorIndex = 4 End With というように、省略して書くことができます。 あまり、入れ子にするのはよくない作法ですが、このように書くのは、VBAでは、薦められています。できれば、「. (Range と Valueの間などの点)」の数を、With や Set 変数 で、減らすことは、「最適化」と呼ばれて、マクロを速くする重要な項目です。 '------------------------------------------ Sub Main()  Dim r As Range  Dim LineFlg As Integer  Const CON As Integer = xlContinuous 'あり  Const NON As Integer = xlNone 'なし   '------------------------------  'ユーザー設定  LineFlg = CON 'CON= 罫線を引く;'NON= 罫線を消す  Set r = Range("B1:O14") '------------------------------  LineMaking r, LineFlg    With r   '色づけ   If LineFlg = CON Then    .Interior.ColorIndex = 56    .Interior.Pattern = xlSolid    .Font.ColorIndex = 33   Else    '戻す    .Interior.ColorIndex = xlNone    .Font.ColorIndex = 0   End If  End With    Set r = Nothing End Sub Sub LineMaking(ByVal rng As Range, ByVal myStyle As Integer) '罫線引きサブルーチン  Dim Bds As Variant  Dim i As Variant  '罫線の種類  Bds = Array(7, 8, 9, 10, 11, 12)  For Each i In Bds   With rng.Borders(i)    .LineStyle = myStyle    If myStyle <> xlNone Then     .Weight = xlHairline 'xlThin のほうがよい     .ColorIndex = 1 'Black    End If   End With  Next End Sub なお、マクロで作る場合、線の色(ColorIndex)は、できるだけAutomatic にせずに、「明示的」に色づけを設定するようにしてください。

oshietecho-dai
質問者

お礼

詳細なご説明、誠に、有難うございます。 個々に、注意点があるわけですね。

oshietecho-dai
質問者

補足

未熟な私にとっては未だ、皆様に「ポイント付け判断力」がないため、今回は表題の、ダイエット度だけで、ポイント付け致します。詳細内容については、非常に参考になりました。ほんとに有難うございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

Sub test02() With Range("B1:O14") With .Borders .LineStyle = xlContinuous .Weight = xlHairline .ColorIndex = xlAutomatic End With With .Interior .ColorIndex = 56 .Pattern = xlSolid End With .Font.ColorIndex = 33 End With End Sub こんな感じですか。

oshietecho-dai
質問者

お礼

どうも有り難うございます。 こんなになってしまうんですね。 がんばって、もっとダイエットできるように努めます。

関連するQ&A