2017-05-01 2 views
-3

、式は停止:のExcel VBAコードは、コードが不正確に実行されてゼロまたは空白

F(セル)= G(セル) - A2のみならF(セル)> 0

Private Sub Button_Click() 
Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 

Dim cell As range 
Call TrimExcessSpaces 

     Application.ScreenUpdating = True 
    Application.Calculation = xlCalculationAutomatic 


End If 
End Sub 

コードが実行され、Fのセルで「空白」または「0」の値が見つかると、コードは機能しなくなりますが、次のF.cellは正の値を持つ可能性があります。ポイントは、次のセルが正の値を持つ場合、作業を続行するコードが必要なことです。

良く正しい結果がコードの作業を検討するスクリーンショット以下のようにする必要があります The code stops here

を説明するためのスクリーンショット。 The correct result

+3

は、あなたが使用&Iは思う場所を意味します。 &は文字列連結演算子です。とブール演算子です。 –

+0

^彼が言ったこと。 docs.SOの[VBAオペレータ](http://stackoverflow.com/documentation/vba/5813/operators#t=201705010108263929618)を参照してください。 –

+0

また、「End If」もありません。あなたは 'If/Else/If/If'を持っています。 If/Else/End If/If/End If/If/End If'が必要になります。あなたのコードは正しくコンパイルされていますか、おそらく最終的な 'End If'を放棄していますか? – BruceWayne

答えて

1

実際には、列Fの値に基づいて列Gに値を設定しようとすると、1行のコードしか必要ありません。

以下のサンプルコードでは、メインのサブルーチン内でPopulateColumnGというサブフォルダを呼び出すだけです。

メイン、サブ・ルーチン:列Gを移入するために必要な

Private Sub Button_Click() 

    With Application 
     .Calculation = xlCalculationManual 
     .EnableEvents = False 
     .ScreenUpdating = False 
    End With 

    Call PopulateColumnG 

    'Rest of your code 


    With Application 
     .Calculation = xlCalculationAutomatic 
     .EnableEvents = True 
     .ScreenUpdating = True 
    End With 
End Sub 

コード:

Sub PopulateColumnG() 
    Dim lr As Long 
    lr = Cells(Rows.Count, 6).End(xlUp).Row 
    Range("G1:G" & lr).Formula = "=IF(F1>0,F1-$A$2,"""")" 
    Range("G1:G" & lr).Value = Range("G1:G" & lr).Value 
End Sub 
+0

答えに感謝します。確かにこれはまさに私が探しているコードをチェックしたときに探しているのですが、私はこのボタンに複数のsubsを呼び出し、結果を得るために特定の式をコンパイルするよう要求しています –

+0

".ScreenUpdating = True"とにかく、コードが終了すると、それはキックされてから不毛のセットです。 – flaZer

関連する問題