2016-10-25 6 views
0

私は変数(利益)をExcelテーブルに保存するマクロを作成しています。これは、複数のシナリオ(価格と割引を変更することにより)です。まず、各シナリオを実行するマクロを用意し、変数の値をそのシナリオで計算された利益に設定します。しかし、マクロを実行すると、私の3つの変数A1 A2とA3のすべてが最後と最後の値を持つように見えます。Excelマクロは変数の値を上書きします

私は間違っていると私はこれをどのように修正しますか?

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
With Sheets("Inputs") 
    .Range("I72").Value = "Base" 

    Dim A1 
    .Range("I5").Value = "Low" 
    .Range("I91").Value = "Reduced 8%" 
    Set A1 = Range("I174") 

    Dim A2 
    .Range("I5").Value = "Low" 
    .Range("I91").Value = "Reduced 4%" 
    Set A2 = Range("I174") 

    Dim A3 
    .Range("I5").Value = "Low" 
    .Range("I91").Value = "Current" 
    Set A3 = Range("I174") 

    MsgBox A1 
    MsgBox A2 
    MsgBox A3 

End With 

答えて

1

を参照している:

Option Explicit 

Sub Macro1() 
    ' 
    ' Macro1 Macro 
    ' 

    ' 
    With Sheets("Inputs") 
     .Range("I72").Value = "Base" 

     Dim A1 As Double 
     .Range("I5").Value = "Low" 
     .Range("I91").Value = "Reduced 8%" 
     A1 = Range("I174").Value 

     Dim A2 As Double 
     .Range("I5").Value = "Low" 
     .Range("I91").Value = "Reduced 4%" 
     A2 = Range("I174").Value 

     Dim A3 As Double 
     .Range("I5").Value = "Low" 
     .Range("I91").Value = "Current" 
     A3 = Range("I174").Value 

     MsgBox A1 
     MsgBox A2 
     MsgBox A3 

    End With 

End Sub 

あなたのコードがVariantタイプのようにそれらを宣言しながら(これごとタイプを保存するためにそれらができるようにする)、その後、あなたはそこにSetキーワードを使用して使用してRangeオブジェクト、およびその範囲は、常にすべての計算で変更同じセルに指摘保存

+0

あなたのコードを実行していただきありがとうございます。コンパイルエラーが発生しました:オブジェクトが必要です – Kaushal

+0

どの行がそのエラーをスローしますか? – user3598756

+0

申し訳ありません - 私の悪い。私のコードにはタイプミスがありました!あなたの助けにお返事ありがとうございます。 – Kaushal

0

あなたは範囲を上書きしています。 A1、A2、A3のセルを他のセル値に変更します。すべての3は、あなたがDoubleタイプのようA1、A2およびA3を宣言し、そこ値セルを格納する必要があり、同じ細胞に

+0

おかげMukulしかし、私は、変数 - 価格と割引の各組み合わせの利益を計算しています。スプレッドシートは利益の値を計算し、それをセルI174に格納します。私が望むのは、異なるシナリオごとに利益のそれぞれのユニークな価値を捉えることです。したがって、これらのユニークなI174の値を変数に格納しようとしています。私は、第2または第3のシナリオでソース値が変化すると(例えばI174)、変数値が割り当てられれば(A1など)、それは変わらないが、3つの変数A1、A2すべてに対してI174の最終値を出力し続けると期待するA3。 – Kaushal

+0

A1を定数として定義し、シナリオの最後にA1に値を割り当てることはできますか?もしそうなら、コードはどのように見えますか? – Kaushal

+0

一度宣言された定数には値を代入することはできません。また、利益を計算するコードはありません。サンプルコードはテキストを範囲に設定するだけです。範囲A1、A2およびA3にセルI174を割り当てる。 –

関連する問題