2017-07-12 8 views
0

私は、テーブルの最後の行にデータを追加しているExcelでuserformを持っています。最後の行の列14で、私は式を表示することが欲しいと思っていますが、それは常にfalseを読み取っています。私がラストローを取り出してこれを単独のエンティティとして実行すると、これは完全に機能します。FormulaR1C1 reading False

この例では、RC [-1]がブランクであるため、偽ではなく、53を返すべき回答が26.5 * 2であるはずです。

Private Sub CommandButton1_Click() 

Dim iRow As Long 
Dim ws As Worksheet 

Set ws = Worksheets("Primary Data") 

iRow = ws.Cells.Find(What:="*", Searchorder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 

ws.Cells(iRow, 14).Value = FormulaR1C1 = "=IF(RC[-1]="""",RC[-2]*RC[-3],RC[-2]*RC[-3]*(1-RC[-1]))" 

End Sub 

誰でもこの問題を手伝ってください。

+0

ティムの答えは、問題を解決しますが、あなたは論理式 'FormulaR1C1 =「= IF(RCの[を実行しているので、**なぜ**あなたのコードが失敗した理由があります - 1] = "" ""、RC [-2] * RC [-3]、RC [-2] * RC [-3] *(1-RC [-1]) "フォーミュラR1C1はneveを持っています(RC [-1] = "" ""、RC [-2] * RC [-3]、RC [-2] * RC [ -3] *(1-RC [-1])) "'これは明らかに 'False'であり、次にそれをセルに割り当てます。 'Option Explicit'を各コードモジュールの最初の行として使用することで、これらの問題を回避できます。それは 'FormulaR1C1'が宣言されていないことを伝えます。 – YowE3K

答えて

1

あなたが値を設定していないので、ws.Cells(iRow, 14).Value = FormulaR1C1を行うws.Cells(iRow, 14).FormulaR1C1 =

Private Sub CommandButton1_Click() 

Dim iRow As Long 
Dim ws As Worksheet 

Set ws = Worksheets("Primary Data") 

iRow = ws.Cells.Find(What:="*", Searchorder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1 

ws.Cells(iRow, 14).FormulaR1C1 = "=IF(RC[-1]="""",RC[-2]*RC[-3],RC[-2]*RC[-3]*(1-RC[-1]))" 

End Sub 
+0

ありがとうTim、確かに意味があります。働いています。ありがとうございました – MBrann

2

にあれば、列「K」、「L」と「M」の値がすでに動作する別のオプションを使用しないでください。このコードを実行する前に存在することである:

Dim Rng As Range 

Set Rng = ws.Cells(iRow, 14) 
Rng.Value = IIf(Rng.Offset(, -1) = "", _ 
        Rng.Offset(, -2) * Rng.Offset(, -3), _ 
        Rng.Offset(, -2) * Rng.Offset(, -3) * (1 - Rng.Offset(, -1))) 
+1

Dunnoなぜ私は、 'Offset'を落とし、' IIf(Rng(、0)= ""、Rng(、-1)* Rng(、-2)、...のような表記法を使用して、 ';)) –

+0

@ASH私もこのソリューションを追加しました;) –

+0

(ちょっとしたことがありますが、TLDR)互換性のあるものにするために、VBAコードの多くのショートカットが「一般的なプラクティス」によって削除されましたできるだけ 'VB.net'へ。その中で '[]'表記、暗黙の '.Value'などがありました。誰もがVB.net *を" VB6とVBAを間違いなく置き換える "と思っていた時でした。私は今日、これらの動機に大きな疑問符を持っています... –