2016-07-13 6 views
0

VBAの新機能ですので、ここでは愚かなことをお詫び申し上げます。私は、私たちが持っているソフトウェアのカスタムスクリプトに取り組んでいます。どこでもスクリプト作成に優れているようです。何が起こっているコードVBA IF値がnullです終了スクリプトelse continue

IF StrComp(XXXX.GetField("Col_1"), RIGHT(xxxx.GetField("Col_2"), 4)) <> 0 
Then xxxx.SetField "Col_1" , RIGHT(xxxx.GetField("Col_2"), 4) 
End If 

作業

は、スクリプトが正常に実行されているが、ブランク値がCol_2にCOL_1とNULL値に存在する場合、それは****でCOL_1を更新しています。 Col_2が何もない場合は、ブランクまたはNULLを指定してスクリプトを終了してください。ただし、Col_1がCol_2の最後の4かどうかをテストする値がある場合は、それらが等しくない場合は更新を実行してください。うまくいけば、これは理にかなっている。これは私の試みでしたが、クラッシュして焼きました。

If RIGHT(xxxx.GetField("Col_2"), 4) Is Nothing 
THEN Exit 
IF StrComp(XXXX.GetField("Col_1"), RIGHT(xxxx.GetField("Col_2"), 4)) <> 0 
Then xxxx.SetField "Col_1" , RIGHT(xxxx.GetField("Col_2"), 4) 
End If 

答えて

1

この

rightVal = RIGHT(xxxx.GetField("Col_2"), 4) 
If IsNull(rightVal) Or rightVal = "" Then 
    Exit Sub 
End If 

If StrComp(XXXX.GetField("Col_1"), rightVal) <> 0 Then 
    xxxx.SetField "Col_1" , rightVal 
End If 

何も空のオブジェクト参照を指していない試してみてくださいそう非常に適切ではありませんでした何と比較し、VBです。また、終了する項目を指定する必要があります(この場合は「Exit Sub」)。Ifブロック(Ifステートメントを大きく開いたままにします)に囲みます。

また、毎回再計算を保存するために値RIGHT(xxxx.GetField("Col_2"), 4)を一時的に保存します。

+0

これは機能しませんでしたが、コードを動作させることができました。あなたの例に似て、私は一時的に両方の値を格納し、いくつかのロジックテストを行い、NOT IsNull(Col_2) – Viperwolfmn

関連する問題