• ベストアンサー

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でオブジェクトの指定の仕方や、自動計算のメソッドに上記コードだと問題があるのでしょうか? どなたかわかる方、回答をお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

1.マクロの実行がExcel2000で『○』、Excel97で『×』。 2.シート上にコマンドボタンを配置して、ボタンから質問のマクロを実行。 が質問の状況だと思いますが、Excel97で『○』にするには   対応方法 その1     ActiveCell.Activate     With Application      のように『ActiveCell.Activate』を追加する。  または、   対応方法 その2     CommandButton3のプロパティ TakeFocusOnClick を False にする。 どちらかにすればExcel97で動くはずです。 Excel97でエラーがでるのは、ボタンを押した時に、フォーカスがまだボタンにあるため発生しているはずです。 この状態にしておけば、Excel2000でも問題ないはずです。 また、xlAutomatic=xlCalculationAutomatic=-4105 なので、質問の本質とは関係ないでしょう。 ただ、マクロ記録すると『xlAutomatic』になるのは?です。 ご参考に。

kenton
質問者

お礼

回答ありがとうございます。 お礼が遅くなり申し訳ありません。 nishi6さんの記述を見て、”これで解決!”と思いましたが、 結果的には同じでした。 とても具体的な回答をいただけてうれしいです。 他の方のお礼にも書きましたが、 コードの記述位置を変えてみたところ、 エラーが出なくはなりました。 Excelのヴァージョンによって、少なからず癖があるのでしょうか・・・? これからは2000メインで作りつづけてみようかと。(笑) また、何かの際には助言を頂けると幸いです。

その他の回答 (3)

  • nagare
  • ベストアンサー率33% (280/831)
回答No.3

Calculationメソッドは詳しくないのですが xlCalculationAutomaticは計算方式を自動に設定 で xlAutomaticは自動再計算の再開 ですよね 単に代入している値を間違えているのでは。。。。 xlCalculationAutomatic:http://www6.plala.or.jp/MilkHouse/Frame201/Contents201/Contents20121.html xlAutomatic:http://tokyo.cool.ne.jp/taquino/vba/tips.shtml

kenton
質問者

お礼

回答ありがとうございます。 お礼が遅くなり申し訳ありません。 URLも参考にさせていただきましたが、 コードの記述位置を変更することで、 エラーが出なくなりました。 プログラムの流れがおかしかったのかもしれません。 ですが、納得がいきません。(^_^;) VBAは面白いですが、はまったら何をどうやればいいのか・・・ これを機にもうちょっと踏み込んでVBAを使ってみようと思っていますので、 また、何かの際には助言をお願いいたします。

  • wildcard
  • ベストアンサー率54% (54/100)
回答No.2

一見同じような記述に見えますが、 以下の行だけ違っているのですが… これでもダメだったのでしょうか? .Calculation = xlAutomatic

kenton
質問者

お礼

お礼が遅くなりもうしわけありませんでした。 この回答にあるようにしてみても結果は同じでした。 コードの記述位置を変えてみたところ、 エラーを回避したようです。 やはり、何か腑に落ちません。(^_^;) また何かの際には、助言をお願いいたします。 ありがとうございました。

kenton
質問者

補足

またまた回答ありがとうございます。 Excel97ではxlAitomaticとなるということでしょうか? 一応、Excel2000のヘルプだけは参照したのですが、 定数はxlCalculationAutomaticとなっていたもので、 そのまま流用していました。

  • wildcard
  • ベストアンサー率54% (54/100)
回答No.1

With Application .Calculation = xlAutomatic .MaxChange = 0.001 End With Excel97,2000ともに 上記の記述で問題ないハズです。

kenton
質問者

お礼

お礼が遅くなりもうしわけありませんでした。 コードの記述位置を変えてみたところ、 エラーを回避したようです。 ですが、何か腑に落ちません。(^_^;) ひとまず、この質問は終了します。 また何かの際には、助言をお願いいたします。

kenton
質問者

補足

回答ありがとうございます そうですよね・・・でも・・・ うぅ・・・エラーが取れない・・・ もう一度、フローから眺めてなおしてみます。

関連するQ&A

専門家に質問してみよう