下の値にstucked取得:VBAのマクロは、私はこのマクロを持っている1
Sub SolverPaulo()
Dim listo As Boolean
Dim min As Single
Dim max As Single
Dim beta As Single
Dim tolerancia As Single
Dim deficit As Single
Dim prom As Single
listo = False
min = 0
max = 1
beta = 0
tolerancia = 0.1
While listo = False
prom = (min + max)/2
Cells(6, "CJ") = prom
deficit = Cells(6, "CI")
If (deficit > 0) Then
If (deficit < tolerancia) Then
beta = prom
listo = True
Else: min = prom
End If
Else
If (Abs(deficit) < tolerancia) Then
beta = prom
listo = True
Else: max = prom
End If
End If
Wend
Application.ScreenUpdating = True
End Sub
Iが1よりtolerancia = 1
または任意の値が高いほど定義した場合、マクロが正常に動作しますが、私は1の下tolerancia = 0.1
または劣るような値を定義する場合マクロは無限ループで動作し続けます。私は使用する必要がありますtolerancia = 0.00001
Single
は私が使用しているVARSの正しいデータ型であるかわからない、これは私がVBAで作業するのは初めてです。
アイデアは、マクロがdeficit
は、特定の時点でtolerancia
よりもマイナーになったときに、マクロがこれを決める停止する必要がある。
If (0.33 < tolerancia)
tolerancia
が実際にあるならば、それは...クラッシュしたときにあります0.33
より小さい。 tolerancia
と1以上の数字を比較すると、問題はありません。昏睡とポイントを比較
if (0,33 < 0.5)
:
小数が.
で,
ずに分離しているので、今、私のExcelファイルに、コンフィギュレーションは、スペイン語であるがそれを行うに失敗している理由かもしれません?
ヒント?
は '赤字=細胞(6、 "CI")を使用してみvalue2'。私が知っていた限り、VBAは小数点区切り記号に '.'を使用し、ロケール設定を行わないので、セルがコンマ区切りを使用しても、VBAはポイント区切り記号として表示されます。 '.Value2'を使うとフォーマットが取り除かれ、' Range'の基になる値が返されます – Tom
小数点区切りとしてロケールで使われているカンマは、セルに数値のように見えるテキストが含まれていない限り、実際の数よりも – YowE3K
CJ6を変更したときにCI6がゼロに収束するように、Excelの式が設定されていますか? CJ6に入れられている値と新しい値に基づいてCI6で計算されている値を見ながら、コードを一歩進んでみてください。 – YowE3K