• ベストアンサー

エクセルマクロの質問です。

マクロでセルの値が0~5の時、セルに斜めの罫線を入れたいのですが、どうすればいいのでしょうか。 教えて下さい。

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

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

条件付書式、、、と思ったら斜め罫線は引けないみたいですね(@Excel2000) 仕方ないのでNo1さんのVBAを改良しました。 Sub Macro1()   iMaxRow = Cells.SpecialCells(xlLastCell).Row   iMaxClm = Cells.SpecialCells(xlLastCell).Column   For Row = 1 To iMaxRow Step 1     bClmDel = True     For clm = 1 To iMaxClm Step 1       bSlant = False       If (IsNumeric(Cells(Row, clm).Value)) Then         If (IsEmpty(Cells(Row, clm).Value) = False) Then           If ((0 <= Cells(Row, clm).Value) And (Cells(Row, clm).Value <= 5)) Then             bSlant = True           End If         End If       End If              If (bSlant) Then         With Cells(Row, clm)           .Borders(xlDiagonalUp).LineStyle = xlContinuous           .Borders(xlDiagonalUp).Weight = xlThin           .Borders(xlDiagonalUp).ColorIndex = xlAutomatic                      .Borders(xlDiagonalDown).LineStyle = xlNone           .Borders(xlEdgeLeft).LineStyle = xlNone           .Borders(xlEdgeTop).LineStyle = xlNone           .Borders(xlEdgeBottom).LineStyle = xlNone           .Borders(xlEdgeRight).LineStyle = xlNone         End With       Else         With Cells(Row, clm)           .Borders(xlDiagonalUp).LineStyle = xlNone           .Borders(xlDiagonalDown).LineStyle = xlNone           .Borders(xlEdgeLeft).LineStyle = xlNone           .Borders(xlEdgeTop).LineStyle = xlNone           .Borders(xlEdgeBottom).LineStyle = xlNone           .Borders(xlEdgeRight).LineStyle = xlNone         End With       End If     Next clm   Next Row End Sub

majalis3113
質問者

お礼

有難うございました。 出来ました!(^-^)

その他の回答 (1)

noname#22222
noname#22222
回答No.1

Excel は操作したことのない門外漢ですが・・・。 斜め罫線を引かせたり消したりするマクロを記録してみれば大体のコードが判ります。 次のコードで、5行5列の範囲を条件に応じて斜め罫線を引きます。 Private Sub Worksheet_Change(ByVal Target As Range)   Dim R As Integer   Dim C As Integer      R = Target.Row   C = Target.Column   If (R >= 1 And R <= 5) And (C >= 1 And C <= 5) Then     If Target.Value >= 0 And Target.Value <= 5 Then       With Target.Borders(xlDiagonalDown)         .LineStyle = xlContinuous         .Weight = xlThin         .ColorIndex = xlAutomatic       End With       With Target         .Borders(xlDiagonalUp).LineStyle = xlNone         .Borders(xlEdgeLeft).LineStyle = xlNone         .Borders(xlEdgeTop).LineStyle = xlNone         .Borders(xlEdgeBottom).LineStyle = xlNone         .Borders(xlEdgeRight).LineStyle = xlNone       End With     Else       With Target         .Borders(xlDiagonalDown).LineStyle = xlNone         .Borders(xlDiagonalUp).LineStyle = xlNone         .Borders(xlEdgeLeft).LineStyle = xlNone         .Borders(xlEdgeTop).LineStyle = xlNone         .Borders(xlEdgeBottom).LineStyle = xlNone       End With     End If   End If End Sub ※本当に素人ですので質問者で注意深く検証して下さい。

majalis3113
質問者

お礼

有難うございました。参考になりました。

関連するQ&A

専門家に質問してみよう