2016-09-09 21 views
0

このような簡単な質問に対して私のご迷惑をおかけします。私はこれを死に捜したが、なぜこれがうまくいかないのか理解できない。私はちょうど新しい行を追加し、セルに数式を挿入したい。Excel VBA変数から数式を構築する

私のコードは、私は(代わりnRowのNSTRを使用して、等)式の行の文字列値を使用して試したこの

Private Sub CommandButton1_Click() 

    Dim lRow As Long 
    Dim lStr As String 
    Dim nRow As Long 
    Dim nStr As String 

    lRow = Cells(Rows.Count, 5).End(xlUp).Row 
    lStr = CStr(lRow) 
    nRow = lRow + 1 
    nStr = CStr(nRow) 

    Cells(nRow, 1).Value = Date 
    Cells(nRow, 2).Value = "" 
    Cells(nRow, 3).Value = 25 
    Cells(nRow, 4).Value = 53 
    Cells(nRow, 5).Select 
    ActiveCell.formula = "=IF(AND(C" & nRow & "=""""|D" & nRow & "="""")|""""|E" & lRow & "-C" & nRow & "+D" & nRow & ")" 

End Sub 

あります。

最初に "="記号を削除して値として入力すると、それが挿入され、 "="をExcelで追加しても問題はないと評価されます。文字列は問題ありません。

しかし、なぜそれは数式を挿入しませんか?

私はr1c1表記でもやってみました。

アイデア?

値25と53は一時的な値です。エンドユーザは、これらのセルに手動で値を入力します。

+1

は'交換してください。 vbaは非常に米国英語中心であり、数式は標準の米国英語形式で入力する必要があります。 –

+0

うわー。それはうまくいった。だから手動でセルに= IF(AND(C6 = "" | D6 = "")| "" | E5-C6 + D6)を入力すると動作しますが、VBでは= IF(AND(C6 = ""、D6 = "")、 ""、E5-C6 + D6)。ありがとうございました –

答えて

0

は、あなたがセルにそれを手動で入力する場合は、VBを通じてあなたはカンマでパイプ記号を交換する必要があるにもかかわらず、

=IF(AND(C6=""|D6="")|""|E5-C6+D6) 

作品ということが判明します。 `、` `コンマで|だから、

ActiveCell.formula = "=IF(AND(C" & nRow & "="""",D" & nRow & "=""""),"""",E" & lRow & "-C" & nRow & "+D" & nRow & ")" 

に私の式を変更し、問題を解決し

関連する問題