|
▼question さん:
ご回答ありがとうございます。
すみません。情報がたりませんね。
>>「アプリケーション定義またはオブジェクト定義のエラーです」
>>
>>というエラーが出てしまいます。現在のコードは以下になります。
>>
>>Worksheets("Sheet2").Cells(n, j + 1).Value = u
>>Worksheets("Sheet2").Cells(n + 1, j + 1).Value = z
>
> エラーはどの行で発生するのですか?
上の2行でエラーが発生しています。
> コードは2行だけなんですか?
> uとかzはどうやって作ったのですか?
全体のコードは以下になります。
Sub buturis()
Dim n As Integer 'NCブロック数
Dim s As Double '一刃当たり送り
Dim v As Double '切削速度
Dim hasu As Integer '刃数
Dim deep As Double '切り込み深さ
Dim d As Double '1°回転当たりの切込み深さ
Dim a() As Double
Dim kika As Integer '幾何シミュレーションから算出
Dim kt As Double
Dim kr As Double
Dim ft() As Double
Dim fr() As Double
Dim fu() As Double
Dim fv() As Double
Dim u As Double
Dim z As Double
Dim m As Double
Dim e As Double
Dim L As Double
Dim kaiten As Double
Dim r As Double 'カッタ半径
Dim cl As Double
Dim engage As Double
Dim ac As Double 'アークコサイン
Sheets("Sheet1").Activate
r = Cells(3, 3).Value / 2 'アークコサイン算出↓
cl = Cells(10, 3).Value
engage = 1 - (cl / r)
ac = WorksheetFunction.Acos(engage) 'アークコサイン算出↑
s = Cells(5, 3).Value
v = Cells(4, 3).Value
hasu = Cells(6, 3).Value
deep = Cells(9, 3).Value
L = 60
ReDim a(hasu, 361)
ReDim ft(hasu, 361)
ReDim fr(hasu, 361)
ReDim fu(hasu, 361)
ReDim fv(hasu, 361)
If s <= 0.03 Then
ks = 0.03
Else
ks = s
End If
d = deep / (360 / hasu)
Cells(3, 5).Select
n = 1
Do While Selection.Cells(n, 1) <> ""
n = n + 1
Loop
n = n + 1
For b = 3 To n Step 1
kaiten = Cells(n, 10).Value * Cells(8, 3).Value '1ブロック当たりの回転数
For g = 1 To kaiten Step 1
For i = 1 To hasu Step 1
For j = 0 To 360 Step 1
If j / 180 <= ac Then
kika = 1
Else
kika = 0
End If
For h = 0 To deep Step d
a(i, j) = s * Sin(j / 180) * kika
If j <= 7.2 And Cells(3, 10).Value <= j / Cells(8, 3).Value Then
kp = 1.2
Else
kp = 1
End If
kt = 2165 * kp * (ks / s) ^ 0.5 * (1 - 0.14 * v)
kr = 1245 * kp * (ks / s) ^ 0.5 * (1 - 0.3 * v)
ft(i, j) = kt * a(i, j)
fr(i, j) = kr * a(i, j)
fu(i, j) = (fr(i, j) * Sin(j / 180) - ft(i, j) * Cos(j / 180))
fv(i, j) = (fr(i, j) * Cos(j / 180) - ft(i, j) * Sin(j / 180))
m = fv(i, j) * (L - h)
e = 0.165 * 1000 * fv(i, j) + 1.04 * 10 ^ -7 * m * (L - h)
If i < 1 Or j < 0 Then
i = i + 1
j = j + 1
End If
u = u + fu(i, j)
z = z + fv(i, j)
Next
Worksheets("Sheet2").Cells(n, j + 1).Value = u
Worksheets("Sheet2").Cells(n + 1, j + 1).Value = z
Next
Next
Next
Next
End Sub
>>また、ステップインで変数の値を調べてみたところ、
>>n=4
>>j=1
>>u=0
>>z=0
>>となっていましたが、sheet2には
>>4098.34864786929や
>>-5235.01068699772など、
>>計算された数値が入力されていました。
>入力?
すみません。出力でした。
>どのセルですか?
sheet2の(3,1)から(3,361)と、(4,1)から(4,361)までです。
長くなって申し訳ありませんが、ご指摘お願い致します。
|
|