2017-01-03 25 views
0

はここに私のジレンマです:更新セルの数式を追加セル/行の値に基づいて

私はロン・デ・ブルーインから新しい行/セルの数式を追加し、それは見事に動作します続いています。しかし、私は新しいセルに入力された値を取り込み、計算で使用しています...新しいセルも追加されています。私はコードを過ぎて、私は以下参照しています:

rng.Parent.Cells(LastRow + 1, LastCol + 2).Value = spm 
     rng.Cells(LastRow + 1, LastCol + 2).Borders(xlDiagonalDown).LineStyle = xlNone 
     rng.Cells(LastRow + 1, LastCol + 2).Borders(xlDiagonalUp).LineStyle = xlNone 
     With rng.Cells(LastRow + 1, LastCol + 2).Borders(xlEdgeLeft) 
      .LineStyle = xlContinuous 
      .ColorIndex = 0 
      .TintAndShade = 0 
      .Weight = xlThin 
     End With 
     With rng.Cells(LastRow + 1, LastCol + 2).Borders(xlEdgeTop) 
      .LineStyle = xlContinuous 
      .ColorIndex = 0 
      .TintAndShade = 0 
      .Weight = xlThin 
     End With 
     With rng.Cells(LastRow + 1, LastCol + 2).Borders(xlEdgeBottom) 
      .LineStyle = xlContinuous 
      .ColorIndex = 0 
      .TintAndShade = 0 
      .Weight = xlThin 
     End With 
     With rng.Cells(LastRow + 1, LastCol + 2).Borders(xlEdgeRight) 
      .LineStyle = xlContinuous 
      .ColorIndex = 0 
      .TintAndShade = 0 
      .Weight = xlThin 
     End With 
     rng.Cells(LastRow + 1, LastCol + 2).Borders(xlInsideVertical).LineStyle = xlNone 
     rng.Cells(LastRow + 1, LastCol + 2).Borders(xlInsideHorizontal).LineStyle = xlNone 
      With rng.Cells(LastRow + 1, LastCol + 2) 
       .HorizontalAlignment = xlCenter 
       .VerticalAlignment = xlBottom 
       .WrapText = False 
       .Orientation = 0 
       .AddIndent = False 
       .IndentLevel = 0 
       .ShrinkToFit = False 
       .ReadingOrder = xlContext 
       .MergeCells = False 
      End With 
    rng.Parent.Cells(LastRow + 1, LastCol + 3).Locked = False 
    Range("K8").Value = tsqs 
    Range("L8").Value = spm 
    'Calculate value for Man Hours per Item 
    rng.Parent.Cells(LastRow + 1, LastCol + 3).Formula = <<still working on this bit>> 

だから、基本的に私は疑問に思ってすることです: 1.どのように私は(コラム3 & 4に新セル)のセルに数式を追加することになります新しく作成された2つのセルの値を使用しますか?

基本的なレイアウト:

行16、列A(プリセットテキスト入力)|列B(InputBoxはセル値を生成する)|列C(InputBoxはセル値を生成する)|列D(B * Cを計算する数式)|列E(D * Bを計算する計算式)

VBAで計算する数式を得ることができますが、これは問題ではありません。私の問題は、列B/Cの新しく作成されたセルの値をユーザーが変更すると、列Dの新しく作成されたセルの式を更新する方法/ & E?

私はWorksheet.Calculateを使用することを考えていましたが、VBA計算ではうまくいかないかどうかはわかりません。

Sub()を投稿して必要があるかどうか確認することができます。

+0

いくつかのオプションがあります。 VBAを使用して、 'Cell.Formula =" = B3 * C3 "'などの式を書くことができます。または、計算関数を[volatile]としてマークすることもできます(http://www.excel-easy.com/vba/examples/volatile -functions.html)。 –

+0

私はこれを正しく読んでいるとは思わない...あなたはD = Eで式= "= B#* C#"の動的計算をしていますか?これが当てはまる場合は、C/Bで使用されているすべての値を取るため、この問題は表示されません。私がこの間違ったことを理解していれば、D/Eを動的であると記入するのはなぜですか?私はあなたが最後の行に計算を記入することができるか、または特定の行だけにこの方程式を持たせたいのか分かりません。 – Cyril

+0

偉大な応答ありがとう!私はできるだけ早く答えようとします:@ destination-data:私は次のものを使用しました(私はあなたの提案に似ていると思っています、私は今晩家に帰るときにそれを試してみます) 'rng.Parent。セル(LastRow + 1、LastCol + 2).formula = "= ..." '結果として、各行とセルが追加された式の「文字通りの」コピーが得られました。つまり、Cellに返される値はRow 16(正しい)と同じです。そして17,18,19など。正しい行ソースの式を「更新」しませんでした。 –

答えて

0

私は私が良い例だろう望んでいることを持っているいくつかのコード貼り付けしようとするつもり:このコードで

Private Sub ExportMath() 

Dim LR As Long 
    LR = Cells(Sheets("Export Report").Rows.Count, 1).End(xlUp).Row 

Sheets("Export Report").Range("O2").Formula = "=NETWORKDAYS(C2,D2)" 
Sheets("Export Report").Range("O2:O" & LR).FillDown 

End Sub 

を、私は私の最後の行を定義し、私が利用される数式を追加しますそれを列全体に塗りつぶします。

.Insert Shift:= xlToRightまたは.Insert Shift:= xlDownを使用して挿入する場合でも、定義した列がある場合は、特定の列名をコーディングすることができます。この特定のケースでは、すべてのスプレッドシート操作が行われた後にこの式を適用します。ただし、行/列の挿入/削除を開始する前にこの計算を行うと、名前付きセル(O2:O)がExcelによって更新されます。

+0

ありがとうございました!私は明日オフィスに戻ってきたときにそのことを伝えます。 –

関連する問題