- ベストアンサー
Excelでのエラー
こんにちわ。 今、以下のようなコードを実行した際に、エラーがでてしまい困っています。 ************************************************** Private Sub CommandButton3_Click() '再計算を自動に設定 With Application .Calculation = xlCalculationAutomatic .MaxChange = 0.001 End With ActiveWorkbook.PrecisionAsDisplayed = False UserForm4.Hide UserForm3.Show End Sub ************************************************* (この処理の前には、手動計算に設定しています。) このコードでExcel2000では、問題なく処理がされるのですが、 Excel97では、 「Calculationメソッドは失敗しました。"_Application"オブジェクト」 というようなエラーが出ます。 コード的にはExcel2000で問題なく動いているので、 大丈夫だと思うのですが、Excel97でオブジェクトの指定の仕方や、自動計算のメソッドに上記コードだと問題があるのでしょうか? どなたかわかる方、回答をお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1.マクロの実行がExcel2000で『○』、Excel97で『×』。 2.シート上にコマンドボタンを配置して、ボタンから質問のマクロを実行。 が質問の状況だと思いますが、Excel97で『○』にするには 対応方法 その1 ActiveCell.Activate With Application のように『ActiveCell.Activate』を追加する。 または、 対応方法 その2 CommandButton3のプロパティ TakeFocusOnClick を False にする。 どちらかにすればExcel97で動くはずです。 Excel97でエラーがでるのは、ボタンを押した時に、フォーカスがまだボタンにあるため発生しているはずです。 この状態にしておけば、Excel2000でも問題ないはずです。 また、xlAutomatic=xlCalculationAutomatic=-4105 なので、質問の本質とは関係ないでしょう。 ただ、マクロ記録すると『xlAutomatic』になるのは?です。 ご参考に。
その他の回答 (3)
- nagare
- ベストアンサー率33% (280/831)
Calculationメソッドは詳しくないのですが xlCalculationAutomaticは計算方式を自動に設定 で xlAutomaticは自動再計算の再開 ですよね 単に代入している値を間違えているのでは。。。。 xlCalculationAutomatic:http://www6.plala.or.jp/MilkHouse/Frame201/Contents201/Contents20121.html xlAutomatic:http://tokyo.cool.ne.jp/taquino/vba/tips.shtml
お礼
回答ありがとうございます。 お礼が遅くなり申し訳ありません。 URLも参考にさせていただきましたが、 コードの記述位置を変更することで、 エラーが出なくなりました。 プログラムの流れがおかしかったのかもしれません。 ですが、納得がいきません。(^_^;) VBAは面白いですが、はまったら何をどうやればいいのか・・・ これを機にもうちょっと踏み込んでVBAを使ってみようと思っていますので、 また、何かの際には助言をお願いいたします。
- wildcard
- ベストアンサー率54% (54/100)
一見同じような記述に見えますが、 以下の行だけ違っているのですが… これでもダメだったのでしょうか? .Calculation = xlAutomatic
お礼
お礼が遅くなりもうしわけありませんでした。 この回答にあるようにしてみても結果は同じでした。 コードの記述位置を変えてみたところ、 エラーを回避したようです。 やはり、何か腑に落ちません。(^_^;) また何かの際には、助言をお願いいたします。 ありがとうございました。
補足
またまた回答ありがとうございます。 Excel97ではxlAitomaticとなるということでしょうか? 一応、Excel2000のヘルプだけは参照したのですが、 定数はxlCalculationAutomaticとなっていたもので、 そのまま流用していました。
- wildcard
- ベストアンサー率54% (54/100)
With Application .Calculation = xlAutomatic .MaxChange = 0.001 End With Excel97,2000ともに 上記の記述で問題ないハズです。
お礼
お礼が遅くなりもうしわけありませんでした。 コードの記述位置を変えてみたところ、 エラーを回避したようです。 ですが、何か腑に落ちません。(^_^;) ひとまず、この質問は終了します。 また何かの際には、助言をお願いいたします。
補足
回答ありがとうございます そうですよね・・・でも・・・ うぅ・・・エラーが取れない・・・ もう一度、フローから眺めてなおしてみます。
お礼
回答ありがとうございます。 お礼が遅くなり申し訳ありません。 nishi6さんの記述を見て、”これで解決!”と思いましたが、 結果的には同じでした。 とても具体的な回答をいただけてうれしいです。 他の方のお礼にも書きましたが、 コードの記述位置を変えてみたところ、 エラーが出なくはなりました。 Excelのヴァージョンによって、少なからず癖があるのでしょうか・・・? これからは2000メインで作りつづけてみようかと。(笑) また、何かの際には助言を頂けると幸いです。