[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『0で除算しましたが表示されます』(隣の神様)
Sub sekibun()
Dim i As Integer, area As Double, tmp As Double, n As Integer
Cells(1, 1) = n
Cells(1, 2) = area
If n < 0 Then MsgBox " エラー " If n = 0 Then MsgBox " エラー"
End If
Else
dx = 10 / n For i = 1 To n xi = dx * (i - 1) xj = dx * i fxi = 0.2 * xi * xi * xi - 0.15 * xi * xi - 0.005 * xi + 2 fxj = 0.2 * xj * xj * xj - 0.15 * xj * xj - 0.005 * xj + 2 tmp = dx * (fxi + fxj) / 2 area = area + tmp
Cells(i + 1, 1) = dx * (fxi + fxj) / 2
Next i
End
End If
End Sub
エクセルのマクロでこのnに200や10などを入力しても
0で除算しましたのエラー11が表示されます。
どなたかこれをうまく動くような解決策を
教えて頂きたいです。よろしくお願いします。
< 使用 Excel:Office365、使用 OS:MacOSX >
>Cells(1, 1) = n Cells(1, 2) = area
左辺と右辺が逆じゃないですか? (OK) 2020/07/17(金) 15:29
If n > 0 Then (計算) Else MsgBox " エラー" End If
にしてください。
あと変数は宣言してください。
(苫) 2020/07/17(金) 16:02
参考まで。
https://www.relief.jp/docs/excel-vba-worksheetfunction-sum-cell-range.html
(OK) 2020/07/17(金) 17:18
(γ ) 2020/07/17(金) 17:25
Cells(1, 2) = area
と一度書いておくとその後area変数の値が更新されたらセルの値も更新されるとお思いかもしれませんが
上記の一文を書いてあるタイミングでしか値は更新されませんので
もし随時area の値をB1セルに表示したいのであれば、
area = area + tmp Cells(1, 2) = area
のように書いてください。
(はらぺこ) 2020/07/18(土) 08:01
はらぺこさん、フォローありがとうございます。 コメントご苦労さまです。
今のでもareaは計算済みだと思いますよ。 インデントが不正確なので構造がわかりにくいが、 少し手を入れるとこんなことでしょう。
Sub sekibun() Dim i As Long, area As Double, tmp As Double, n As Long Dim dx As Double, xi As Double, xj As Double
n = 100 '分割数 Cells(1, 1) = n
If n <= 0 Then MsgBox " エラー " Else dx = 10 / n '積分区間は[0,10] For i = 1 To n xi = dx * (i - 1) xj = dx * i tmp = dx * (f(xi) + f(xj)) / 2 area = area + tmp Cells(i + 1, 1) = tmp Next i Cells(1, 2) = area End If End Sub
Function f(x As Double) As Double f = 0.2 * x ^ 3 - 0.15 * x ^ 2 - 0.005 * x + 2 End Function いわゆる積分の台形公式ですね。 (γ ) 2020/07/18(土) 09:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.