プロが教える店舗&オフィスのセキュリティ対策術

こんにちわ。
今、以下のようなコードを実行した際に、エラーがでてしまい困っています。
**************************************************
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でオブジェクトの指定の仕方や、自動計算のメソッドに上記コードだと問題があるのでしょうか?

どなたかわかる方、回答をお願い致します。

A 回答 (4件)

1.マクロの実行がExcel2000で『○』、Excel97で『×』。


2.シート上にコマンドボタンを配置して、ボタンから質問のマクロを実行。

が質問の状況だと思いますが、Excel97で『○』にするには

  対応方法 その1
    ActiveCell.Activate
    With Application
     のように『ActiveCell.Activate』を追加する。

 または、
  対応方法 その2
    CommandButton3のプロパティ TakeFocusOnClick を False にする。

どちらかにすればExcel97で動くはずです。

Excel97でエラーがでるのは、ボタンを押した時に、フォーカスがまだボタンにあるため発生しているはずです。

この状態にしておけば、Excel2000でも問題ないはずです。

また、xlAutomatic=xlCalculationAutomatic=-4105 なので、質問の本質とは関係ないでしょう。
ただ、マクロ記録すると『xlAutomatic』になるのは?です。

ご参考に。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お礼が遅くなり申し訳ありません。

nishi6さんの記述を見て、”これで解決!”と思いましたが、
結果的には同じでした。

とても具体的な回答をいただけてうれしいです。
他の方のお礼にも書きましたが、
コードの記述位置を変えてみたところ、
エラーが出なくはなりました。

Excelのヴァージョンによって、少なからず癖があるのでしょうか・・・?
これからは2000メインで作りつづけてみようかと。(笑)

また、何かの際には助言を頂けると幸いです。

お礼日時:2003/01/20 23:15

Calculationメソッドは詳しくないのですが



xlCalculationAutomaticは計算方式を自動に設定 で
xlAutomaticは自動再計算の再開 ですよね

単に代入している値を間違えているのでは。。。。

xlCalculationAutomatic:http://www6.plala.or.jp/MilkHouse/Frame201/Conte …
xlAutomatic:http://tokyo.cool.ne.jp/taquino/vba/tips.shtml
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お礼が遅くなり申し訳ありません。
URLも参考にさせていただきましたが、
コードの記述位置を変更することで、
エラーが出なくなりました。

プログラムの流れがおかしかったのかもしれません。
ですが、納得がいきません。(^_^;)

VBAは面白いですが、はまったら何をどうやればいいのか・・・

これを機にもうちょっと踏み込んでVBAを使ってみようと思っていますので、
また、何かの際には助言をお願いいたします。

お礼日時:2003/01/20 23:09

一見同じような記述に見えますが、


以下の行だけ違っているのですが…

これでもダメだったのでしょうか?

.Calculation = xlAutomatic

この回答への補足

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

補足日時:2003/01/13 13:04
    • good
    • 0
この回答へのお礼

お礼が遅くなりもうしわけありませんでした。
この回答にあるようにしてみても結果は同じでした。
コードの記述位置を変えてみたところ、
エラーを回避したようです。

やはり、何か腑に落ちません。(^_^;)

また何かの際には、助言をお願いいたします。
ありがとうございました。

お礼日時:2003/01/20 23:04

With Application


.Calculation = xlAutomatic
.MaxChange = 0.001
End With

Excel97,2000ともに
上記の記述で問題ないハズです。

この回答への補足

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

補足日時:2003/01/13 12:52
    • good
    • 0
この回答へのお礼

お礼が遅くなりもうしわけありませんでした。
コードの記述位置を変えてみたところ、
エラーを回避したようです。

ですが、何か腑に落ちません。(^_^;)

ひとまず、この質問は終了します。
また何かの際には、助言をお願いいたします。

お礼日時:2003/01/20 23:03

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