VBAを使い慣れていて、それについてほとんど知らない。エンジニアリングプロジェクトに使用して、斜面の安定性の問題を解決します。最初の7つの計算に入ると、VBAはこれらをユーザーフォームで正しく解決します。しかし、私が8番目の公式(AVHS8)を計算しようとすると、それは私にエラーを与えます、魔女はランタイムエラー "13"タイプの不一致です。私は問題が何であるか分かりません。数式は完璧に優れています。もし誰かがそれを助けることができればそれは大いに感謝されるでしょ問題は以下の通りです。vbaエラー13タイプミスマッチ、VBA
BES = 2.5 RAD = 18.58 DTCP = 7.5とOH = 17、これらは、私はそれらがあなたのフォーム上のコントロールではなく、変数であると仮定していると
Private Sub Calculate_Click()
RAD = Sqr(DTCP^2 + OH^2)
BES = DTCP/3
AVHS1 = (0)
AVHS2 = (Sqr(RAD^2 - (DTCP - BES)^2) - OH)
AVHS3 = (Sqr(RAD^2 - (DTCP - BES - BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES))
AVHS4 = (Sqr(RAD^2 - (DTCP - BES - BES - BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 2))
AVHS5 = (Sqr(RAD^2 - (DTCP - BES - BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 3))
AVHS6 = (Sqr(RAD^2 - (DTCP - BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 4))
AVHS7 = (Sqr(RAD^2 - (DTCP)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 5))
'VBA can solve all the above code. it cant solve the code below (AVHS8)
AVHS8 = (Sqr(RAD^2 - (DTCP + BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 6))
どのような種類の変数として宣言されます。最後の行を次のように変更しますか?倍増すると私のサンプル値はAVHS8 == 7.31540576925892になります。 –
「Dim」問題のような音がします。使用した変数はコード内で宣言されていません。したがって、VBAはあなたのための決定を下し、変数を宣言します。 OH(例えば)は17に割り当てられ、「整数」として宣言されるかもしれません。しかし、Integerは最後の計算の中間結果を保持するのに十分ではありません。すべての変数を 'Double'(単にこの理論をテストする)として' Dim 'して、やり直してみてください。 – Ralph
@Ralph明示的な宣言なしでは、それらは 'Variant'型です。 「OH」の「バリアント」のタイプは最初はVT_I4になりますが、分数になるとVT_R8になります。 – Bathsheba