VBAでF(I) = 1# / Exp(TT)の値がセルに0と表示されてしまう問題があります。
TTやExp(TT)の値はそれなりの数値がでるのですが、F(I) だけが0となってしまいます。
どうのようにすれば正しくひょうじされるでしょうか?
また、CDblの位置は下記の場所であっているのでしょうか?
以上ご回答よろしくお願いします。
Private Sub CommandButton1_Click()
Dim X(500) As Double
Dim Y(500) As Double
Dim F(500) As Double
Dim FI(500) As Double
Dim N As Integer
Dim DX As Double
Const Pi = 3.141592654
Dim I As Integer
Dim TT As Double
N = Range("_N")
DX = Range("_DX")
'-----------------------<データを自動生成している。ここから
F(1) = 0.5
For I = 2 To N
TT = DX * CDbl(I - 1)
F(I) = 1# / Exp(TT)
Next I
'-----------------------<データを自動生成している。ここまで
Worksheets("Sheet1").Range("E4:E30").Value = TT
Worksheets("Sheet1").Range("F4:F30").Value = Exp(TT)
Worksheets("Sheet1").Range("G4:G30").Value = F(I)
End Sub
こんな感じでどうですか。
With Worksheets("Sheet1")
.Range("G4").Value = 0.5
For I = 2 To N
TT = DX * (I - 1)
.Cells(I + 3, 5).Value = TT
.Cells(I + 3, 6).Value = Exp(TT)
.Cells(I + 3, 7).Value = 1# / Exp(TT)
Next I
End With
最後の行がおかしいです。
Next I が実行されると、必ずIの値が1増えます。
よって、最終的にIの値はN+1になっています。
故に、最後の行のF(I)をF(N)に変更すればよいと思います。
また、DXがDoubleで定義されているので、CDblは不用です。
つまり、DX * (I - 1) とすれば、Doubleで計算されます。
お礼
度々のご回答ありがとうございました。