- ベストアンサー
エクセルマクロの質問です。
マクロでセルの値が0~5の時、セルに斜めの罫線を入れたいのですが、どうすればいいのでしょうか。 教えて下さい。
- みんなの回答 (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
その他の回答 (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 ※本当に素人ですので質問者で注意深く検証して下さい。
お礼
有難うございました。参考になりました。
お礼
有難うございました。 出来ました!(^-^)