Excel2016のVBAについて

Anonymous
2020-11-03T04:38:19+00:00

Excel2016を使用しています。

ユーザー関数を作りVBAで条件付き書式のルールに使おうとしました。

しかし、設定できませんでした。

VBAでなく、手動ででルールに記入すると条件付き書式は適用されました。

手動で作成した条件付き書式は下記のとおりです。

ルール 数式「=セルの文字色($D2)=255」書式=「色」適用先「=$L$2:$L$20」

VBAで作ったプロシージャ・ユーザー定義関数等は

Sub 条件付き書式()

Range("$L$2:$L$20").FormatConditions.Add Type:=xlExpression, Formula1:="セルの文字色($D2)=255"

Range("$L$2:$L$20").FormatConditions(1).Interior.ColorIndex = 40

End Sub

Function セルの文字色(セル)

セルの文字色 = セル.Font.Color

End Function

どう編集すればVBAを使用して条件付き書式が設定できるかわかりません。どのようにVBAを修正すればよいのかお教え願います。

ちなみに、「"セルの文字色($D2)=255"」の場合はルール部分が「="セルの文字色($D2)=255"」になっていて

「"=セルの文字色($D2)=255"」とするとルール部分は「"=セルの文字色($D2)=255"」になりましたが色の設定ができなくなりました。

マクロ記録を使い、記録したマクロを実行するとエラーになりました。

バージョンは、エラーが頻繁に発生するため戻したため 2002(ビルド12527.20278)です

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

6 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2020-11-04T00:10:14+00:00

    詳しい回答いただきありがとうございます。

    VBAのみではできないことを承知しました。

    上記方法で再度挑戦してみます。ありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2020-11-03T17:18:57+00:00

    宜しくお願いします!

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. ひまじん 17,185 評価のポイント
    2020-11-03T07:53:12+00:00

    こんにちは。

    VBAフォーラムのほうにも投稿されたようですが、下記のようなコードにすることで実行確認できましたので、何かのご参考になれば。

    Sub 条件付き書式()

      Range("$L$2:$L$20").FormatConditions.Add Type:=xlExpression, Formula1:=False

      Range("$L$2:$L$20").FormatConditions(1).Interior.ColorIndex = 40

    End Sub

    Sub setcolor()

      If セルの文字色(Range("$D$2")) = 255 Then

        Range("$L$2:$L$20").FormatConditions(1).Modify Type:=xlExpression, Formula1:=True

      Else

        Range("$L$2:$L$20").FormatConditions(1).Modify Type:=xlExpression, Formula1:=False

      End If

    End Sub

    Function セルの文字色(セル As Range) As Long

       セルの文字色 = セル.Font.Color

    End Function

    最初に1回だけ『 条件付き書式() 』を実行し( .Add を使っているため)、D2 セルの塗りつぶし色を判定して条件付き書式を変更するときには setcolor() を実行するようにします。

    ユーザー定義関数( セルの文字色() )や条件付き書式を使うことに拘らないのであれば別の書き方もありますが・・・。

    <追記>

    おそらく本来のご希望としては、『セルのフォント色を変更したタイミングで自動的に他のセル範囲の背景色を変更したい』といったことかと思いますが、フォント色の変更で関数(今回の場合はユーザー定義関数)が自動再計算されないことや、WorkSheet や Workbook の既存のイベントにフォント色の変更などをトリガとして起動するものがない、などの理由から VBA だけでの実行は難しいかと思われます。

    WindowsAPI などを組み合わせれば可能かもしれませんが・・・。念のため追記。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2020-11-03T05:39:38+00:00

    返信ありがとうございます。早速VBA専用フォーラムに投稿します。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. Anonymous
    2020-11-03T05:25:17+00:00

    こんにちは。

    同じユーザーとしてマイクロソフト製品のサポートを行う独立アドバイザーのYuki M.です。

    VBA専用のフォーラムがございますため、下記へご投稿してみてください。

    https://social.msdn.microsoft.com/Forums/ja-JP/...

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません