- ベストアンサー
このマクロコードをダイエットするには?
罫線を引き、配色し、文字に色を付ける。 このコードをどのようにダイエットすればよいのでしょうか? 罫線のマクロはこんなに大きいのですか? 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
- みんなの回答 (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 ------------------------------------------
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >罫線のマクロはこんなに大きいのですか? 慣れないうちは、マクロのダイエットは難しいです。 どちらかというと、それは、構造化プログラミングを理解したうえで、行うべきですから、基礎的なことを十分の理解してから行ってください。ただし、マクロの行は、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 にせずに、「明示的」に色づけを設定するようにしてください。
お礼
詳細なご説明、誠に、有難うございます。 個々に、注意点があるわけですね。
補足
未熟な私にとっては未だ、皆様に「ポイント付け判断力」がないため、今回は表題の、ダイエット度だけで、ポイント付け致します。詳細内容については、非常に参考になりました。ほんとに有難うございました。
- merlionXX
- ベストアンサー率48% (1930/4007)
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 こんな感じですか。
お礼
どうも有り難うございます。 こんなになってしまうんですね。 がんばって、もっとダイエットできるように努めます。
お礼
ななななんと、 こんなにまでしてしまってもよいわけですね! いや~まいりました。 皆様にポイントが付けられなくなりました。 どうも有難うございました。