重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下記のコードを試したのですが、オブジェクトはこのプロパティまたはメソッドをサポートしていませんとエラーが出ます。
どの部分の書き方が間違っているでしょうか?
Label93.Caption = 2 * (Application.SQRT(Val(Label91.Caption) ^ 2 - (Val(Label91.Caption) - Val(TextBox35.Value)) ^ 2))

A 回答 (3件)

No.2 です。

連続ですみません。No.2 の一部の書きぶりが、説明用としてはイマイチだったので、修正させてください。( ) の位置をちょっと動かしています。

正でない平方根: -(負でない数値^(1/2)) あるいは -(負でない数値^0.5)  ※実は外側の ( ) は省いても大丈夫
    • good
    • 0

No.1 さんのおっしゃるとおり、WorksheetFunction.Sqrt というのは用意されて「いません」。

代わりに、VBA に組み込まれている Sqr 関数が使えますね。

逆に、WorksheetFunction.Sum メソッドというのはありますが、単なる Sum 関数は VBA にはありません。基本的にワークシート関数と VBA 関数は重複しないようになっていると思います。ヘルプ「WorksheetFunction オブジェクト メンバ」も参照してください。


ただ、平方根などを求める計算は、高校くらいの算数でも習うとおり、あえて関数を使わなくても、次式でできますね。

負でない平方根: 負でない数値^(1/2)   あるいは 負でない数値^0.5
正でない平方根: -(負でない数値)^(1/2) あるいは -(負でない数値)^0.5
立方根:     数値^(1/3)
n 乗根:     数値^(1/n)   ※ n が偶数の場合の符号については平方根と同様

この回答への補足

1人目の方が指摘のようにSqrでしました。
ちょっと変更ししてますが、
WorksheetFunction.Sqr(Val(TextBox33.Value)
このコードでは、エラーがでます。
なにか書き方が間違っていますか?

指摘のように関数を使わない方法だと問題なくできました。
なぜ、このコードだとエラーがおこるのかな?

補足日時:2013/11/09 20:37
    • good
    • 0

ben9210さん おはようございます。



正解を先に示します。
正解) Application.SQRT の部分を sqr と書き換えて下さい。

1) VBA内でExcelの関数を利用するためには、Worksheetfunctionオブジェクトを参照します。
 試しにエディタで、Worksheetfunction. と打ち込んでください。見慣れたExcelの関数が羅列されるはずです。

2) ルート(二乗根)を導出する関数は、Excelの関数を利用しません。VBAに内臓されたsqr() 関数を利用します。

以上2点から、上の回答となりました。

この回答への補足

指摘のようにSqrでしました。
検索すればわかりました。

ちょっと変更ししてますが、
WorksheetFunction.Sqr(Val(TextBox33.Value)
このコードでは、エラーがでます。
なにか書き方が間違っていますか?

2人目の方が指摘のように関数を使わない方法だと問題なくできました。
なぜ、このコードだとエラーがおこるのかな?

補足日時:2013/11/09 20:38
    • good
    • 0

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