Excel VBA 質問スレ Part75at TECH
Excel VBA 質問スレ Part75 - 暇つぶし2ch893:デフォルトの名無しさん
22/04/19 16:59:26.12 Hbe28u0D0.net
>>876
内容はあまりわかっていないが、できそうな対策から
お察しの通りLoopを抜ける判定が上手く行ってないと推測される
オーバーフロー対策に、書き換え可能であればDoじゃなくてForNextに書き換えたほうがいいかも
Function WaveLength(Height1, Time1) As Double
↑引数は接頭にByValかByRefかを書く 多分ByVal
そして引数の型も明記する 特にTime1はDate型かそれ以外か明記が必要
Dim G As Double, PAI As Double
 ↑どっちもCurrencyでいいかと
Dim WL0 As Currency, WL1 As Currency, WL2 As Currency
G = 9.80665
PAI = WorksheetFunction.Pi()
WL0 = G * Time1 * Time1 / (2# * PAI)
WL1 = WL0
'WL2 = WL0 * WorksheetFunction.Tanh(2 * PAI * Height / WL1)
 ↑ここのWL2はいらない
Do
WL2 = WL0 * WorksheetFunction.Tanh(2 * PAI * Height / WL1)
 ↑HeightはHeight1にする
'If Abs((WL2 - WL1) / WL1) < 0.001 Then Exit Do
'WL1 = 0.5 * (WL1 + WL2)
 ↑ここ2行は↓のように書き換える
 If Abs((WL2 - WL1) / WL1) *1000< 1 Then
   Exit Do
  Else’上の条件を満たしていないときはこの値を代入して処理を続けますよの記載にする
  WL1 = 0.5 * (WL1 + WL2)
  End If
Loop
WaveLength = WL2


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch