2017-11-20 17 views
0

excelでは、条件が一致した場合は0に、そうでない場合は編集可能にするセルを追加します。VBAで単純な条件が発生することはありません

If Range("B4").Value = 1 Then Range("C4").Value = 0 

しかし、何がB4が1に設定されていても起こっていない:私の条件は、別のセルの値= 1。この私の最小限の例VBAラインであるということです!このコードには何かがありますか?ありがとう!

+1

あなたはセル 'B4'またはセル' R4'を意味するか...多分あなたの質問の最後にありそうなタイプミス? –

+2

このコードはどこにありますか?それは出来事ですか?モジュールで?ワークシートのコードで?あなたの言葉には「R4」と書かれていて、あなたのコードには 'B4'と書かれていますか? –

+0

ヒットした場合、問題のある行にブレークポイントを設定します。範囲は "Range"( "B4")です。価値は何ですか? – peakpeak

答えて

1

はあなたが変える/分析する特定のワークシートでRangeオブジェクトを修飾します。これはVBAのベストプラクティスであり、必要な特定の場所でコードが動作するようにします。例えば

With Worksheets("Sheet1") 

    If .Range("B4").Value = 1 Then .Range("C4").Value = 0 

End With 

それとも

If Worksheets("mySheet").Range("B4").Value = 1 Then 

    Worksheets("yourSheet").Range("C4").Value = 0 

End If 
+0

ありがとう - それは重要なポイントです。しかし、まだ何も起こっていません。私の場合、 "mySheet" = "yourSheet"。それ以外は、あなたが提案する全く同じ(秒)コードを使用しています。とても奇妙。 –

0

また、シートを参照する必要があります。例えば、あなたが言及したシートを、見るに

If ActiveSheet.Range("B4").Value = 1 Then ActiveSheet.Range("C4").Value = 0 

、これを試してみてください。

Sub TestMe() 
    If Range("B4").Value = 1 Then Range("C4").Value = 0 
    MsgBox (Range("B4").Parent.Name) 
End Sub 
+1

'ActiveSheet'も間違った答えを返すかもしれません! –

+0

@ScottHoltzman - OPが何をしているかによって異なります。しかし、彼が言うように、私は彼が彼の前のシートを見ていると思うし、更新されていないと思う。 – Vityata

+0

本当に、私はアクティブシートで作業していました。私は名前でシートを選んだ。まだ何も起こっていません –

関連する問題