アプリ版:「スタンプのみでお礼する」機能のリリースについて

Sub Macro2()
'
' Macro2 Macro
'

'
For i = 4 To 2639
Range("Y4" & i).GoalSeek Goal:=440, ChangingCell:=Range("V4" & i)
Next

End Sub
上記マクロが実行されません。yが計算式、vが変化する値です。
yの計算式が、=D4*112*0.95*0.961-W4*1.08-X4
になります。

理由がわかりません。教えてください。
ちなみに、Y4,V4の値の4をdeleteして行っても同様でした。

A 回答 (4件)

>理由がわかりません。


ゴールシークで複数の答えを求めているのか、それとも単独のセルの答えを求めているのか、コードを見る限りは、まったく意味をなしてはいません。

Y4 に数式があるなら、Y4のRangeオフジェクトに対して、このようになりますが、
Range("Y4").GoalSeek Goal:=440, ChangingCell:=Range("V4")

V4 の値を変化しても、以下の数式は変化しません。
=D4*112*0.95*0.961-W4*1.08-X4

例えば、このようにましす。
Range("Y4").GoalSeek Goal:=440, ChangingCell:=Range("D4")

D4, W4, X4 のいすれかの数値が変更セル(ChangingCell)なります。

ちなみに、ゴールシークは以下のようなコードでも可能なはずです。
最初から、収束しないのが分かる場合は、もう少し、補正する必要があります。

Sub Test2()
Const dbGOAL As Double = 440
Dim i As Long
Dim flg As Boolean
Range("D4,W4,X4").ClearContents
For i = 4 To 500000
 Range("D4").Value = i / 10000
  If Range("Y4").Value > dbGOAL Then
 DoEvents
  flg = True
  Exit For
 End If
Next i
If flg Then
 MsgBox "収束しました。"
Else
 MsgBox "収束しませんでした。", vbExclamation
End If
End Sub
    • good
    • 0
この回答へのお礼

数式を入力せずに、行っておりました。ご回答ありがとうございます。

お礼日時:2016/12/19 09:51

=D4*112*0.95*0.961-W4*1.08-X4


この中にV4が無いのだから、Y4を440にしたって、V4は関係無いでしょ?
Range("Y4" & i) → Range("Y" & i) じゃ無いの?
Range("V4" & i)も同じ
    • good
    • 0
この回答へのお礼

数式を入力せずに、行っておりました。ご回答ありがとうございます。

お礼日時:2016/12/19 09:51

ゴールシークって手操作でもできますよね?とりあえず、4行目の分だけ手操作で実行して、それをマクロ記録したものを補足にアップしていた

だくことは可能でしょうか?
    • good
    • 0
この回答へのお礼

数式を入力せずに、行っておりました。ご回答ありがとうございます。

お礼日時:2016/12/19 09:51

質問変えたか?


Yの書式の1部が文字列になってないかい???
    • good
    • 0
この回答へのお礼

数式を入力せずに、行っておりました。ご回答ありがとうございます。

お礼日時:2016/12/19 09:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!