2016-04-27 8 views
1

ユーザがコピーしてログインを貼り付けるダッシュボードを作成しました。ダッシュボードでは、数式だけで数枚のデータを分析します。Excel VBAスクリプトはセル内の値を検出し、クリックするまでシートを点滅させます。

B25で数式がTRUEになると、ユーザーがシートタブをクリックしてループを終了するまでシートは緑色から赤色に、空白となります。私はVBAには非常に慣れていて、マクロからいくつかのコードを掻いて試行しました。

Sub Test() 

If Range("B25").Value = "TRUE" Then 

Do Until Sheets("Dilutions").Activate 

With ActiveWorkbook.Sheets("Dilutions").Tab 
    .ThemeColor = xlThemeColorAccent3 
    .TintAndShade = -0.249977111117893 
End With 

Application.Wait (Now + #12:00:01 AM#) 

With ActiveWorkbook.Sheets("Dilutions").Tab 
    .ThemeColor = xlThemeColorAccent2 
    .TintAndShade = -0.249977111117893 
End With 

Application.Wait (Now + #12:00:01 AM#) 
Loop 
End If 
End Sub 

スクリプトを実行するとき、B25でTRUEが見つかった場合、シートタブは色を変更しません。私は自分のコードでエラーメッセージを受け取っていないので、どこでトラブルシューティングを開始するのか分からない。私は、マクロをテストする際に選択した "Dilutions"シートがなく、B25が真であると評価していることを確認しました。

これに関するヘルプは、大歓迎です。私はこれを続けていくつもりです。ありがとうございました!

+0

** B25 **の数式アクションの結果を検出するには、Calculate Eventマクロと、点滅を制御するためのいくつかの 'OnTime'マクロが必要です。 –

答えて

0

これらの要件では、さらに問題が発生する可能性がありますが、ワークシートの変更イベントから作業を開始するのが適切です。

VBEで、追跡しているセルを含むワークシートに移動し、コードの上部にあるボックスをドロップして「ワークシート」を選択し、ボックスを左にドロップして「変更」を選択します。

これは、そのワークシートのVBAコードで新しいサブルーチンを作成するには、これは、このサブルーチンが起動させchangeを持っていたRangeにデフォルトでロードされTargetというパラメータがありWorksheet_Change()

Private Sub Worksheet_Change(ByVal Target As Range) 

End Sub 

と呼ばれます。それはあなたがINTERSECTを使用することができましたどのセルを検出するには:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("B25")) Is Nothing Then 
      If Target.Value = "True" Then Call Test 
    End if 
End Sub 

そこでここでは、変更されたセルを検出し、それがB25だ場合、我々はテストサブルーチンを呼び出し、値がTrueです。

Test()サブルーチンでは、Worksheet_Change()イベントサブルーチンでここで検出を行っているので、B25を参照する行を取り出すことができます。

Application.OnTimeメソッドを使用すると、マクロが呼び出された場所(現在の時刻から1秒)でスケジュールを設定できるようになります。そのマクロは色を切り替えるが、それは次のハードルです。 1つは、ワークシートの変更によってこの問題が発生することです。

関連する問題