アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のコード うまく動作しません
教えてくれませんでしょぅか
Sub ff()
Worksheets(1).Range("a1").FormatConditions.Add Type:=xlValidateDate, Operator:=xlgrater, Formula1:=Range("b1"), Formula2:=Range("c1")

Worksheets(1).Range("a1").FormatConditions(1).Interior.ColorIndex = 3

Worksheets(1).Range("a1").FormatConditions.Add Type:=xlValidateDate, Operator:=xlLess, Formula1:=Range("b1"), Formula2:=Range("c1")

Worksheets(1).Range("a1").FormatConditions(2).Interior.ColorIndex = 1
End Sub

A 回答 (2件)

このコードというのは、条件付き書式なのでしょうか?入力規則と混ぜ合わせたようなコードです。



Type:=xlValidateDate, というのは、入力規則のプロパティです。

一般的に、マクロで条件付き書式(FormatCondition)を組むというのは、めったにないことです。イベント型マクロに、同様の機能があるからなのです。

このマクロの意図するところは、B列とC列を比較して、B列が多ければ、赤を、B列が少ないなら、黑の背景にしなさい、という命令だと思います。

例えば、このようなコードになります。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rw As Long
 If Target.Column <> 2 And Target.Column <> 3 Then Exit Sub
 rw = Target.Row
 If IsDate(Cells(rw, 2).Text) And IsDate(Cells(rw, 3).Text) Then
  If Cells(rw, 2).Value >= Cells(rw, 3).Value Then
   Cells(rw, 1).Interior.ColorIndex = 3
  Else
   Cells(rw, 1).Interior.ColorIndex = 1
  End If
 Else
  Cells(rw, 1).Interior.ColorIndex = xlColorIndexNone
 End If
End Sub
    • good
    • 1
この回答へのお礼

解決しました

有難うございました。
これを考えて10日間位
考えていました。
すっきりしました。
本当にありがとうございました。

お礼日時:2017/10/13 21:19

気を改めて、元の質問のコードを直してみました。


これは、記録マクロではできないようですね。

xlGreaterとか、xlLess とか不要な気もしますが、入れました。
数式は、"=RC[1]>RC[2]" は、数式をR1C1タイプにしました。
B1>C1 でも同じことですが、単に見かけ上、.Range("A1:A10")でも、可能だと分かるようにしただけです。なお、ほとんど、一回きりのマクロだとは思いますが、私自身、随分長い間、書いたことのないコードです。

'//一応、標準モジュールにしました。
Sub On_FormatCoditions()
 With Worksheets("Sheet1")
  .Range("A1").FormatConditions.Delete
   With .Range("A1").FormatConditions _
   .Add(xlExpression, xlGreater, "=RC[1]>RC[2]")
   .Interior.ColorIndex = 3 '赤
   End With
   With .Range("A1").FormatConditions _
    .Add(xlExpression, xlLess, "=RC[1]<RC[2]")
    .Interior.ColorIndex = 1 '黑
   End With
  End With
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!