「セル内の、条件付き書式で変化した赤字があればUser formが起動して、赤字を緑にする」
をエクセルのVBAでやりたいのですが、型が一致しませんとなり、どごが悪いのでしょうか?
Private Sub CommandButton1_Click()
Dim mRng As Range
For Each mRng In Range("A2:D3")
If mRng.DisplayFormat.Font.Color = CLng("&H00" & Right(Hex(-16776961), 6)) Then
mRng.Font.Color = vbGreen ユーザーフォーム1.Show Exit For End If
Next
End Sub
どの行で「型が一致しません」と表示されますか?

If mRng.DisplayFormat.Font.Color = CLng("&H00" & Right(Hex(-16776961), 6)) Then
この部分になります。
上記のコードをコピーしてVBAに書くと[CLng("&H0" &]の部分の0が一つ減るのですが関係あるでしょうか?
こちらでは、正常に終了します。(エラーになりません)
CLng("&H0" & Right(Hex(-16776961), 6))
にしても、同様に正常に終了します。
CLng("&H00" & Right(Hex(-16776961), 6))の値は255なので、
直接、
If mRng.DisplayFormat.Font.Color = 255 Then
と書いてはいかがでしょうか。
尚、Thenが成立した場合、フォントカラーがかわるのと、ユーザーフォーム1が表示されることは
こちらでも確認できました。

tatsu99さま
If mRng.DisplayFormat.Font.Color = 255 Then と記述すると動作致しました。
大変ありがとうごさいます。
しかし赤字が緑にならずに、条件付き書式の赤が優先されるようです(条件にあう数字に変更すると緑になっています)
>しかし赤字が緑にならずに、条件付き書式の赤が優先されるようです(条件にあう数字に変更すると緑になっています)
これは仕様なので、どうしようもないかと思います。
もし、強引に、緑に変えたいなら、条件付き書式を解除して、表示したい色に変えるしかないと思いますが、現状の条件付き書式を維持したまま、変えるのは不可能かと思われます。

ありがとうございました。
条件付き書式を解除して対応致します。

回答2件
あなたの回答
tips
プレビュー