• 締切済み

マクロで関数の使い方

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

みんなの回答

回答No.3

No.2 です。連続ですみません。No.2 の一部の書きぶりが、説明用としてはイマイチだったので、修正させてください。( ) の位置をちょっと動かしています。 正でない平方根: -(負でない数値^(1/2)) あるいは -(負でない数値^0.5)  ※実は外側の ( ) は省いても大丈夫

回答No.2

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 が偶数の場合の符号については平方根と同様

noname#241383
質問者

補足

1人目の方が指摘のようにSqrでしました。 ちょっと変更ししてますが、 WorksheetFunction.Sqr(Val(TextBox33.Value) このコードでは、エラーがでます。 なにか書き方が間違っていますか? 指摘のように関数を使わない方法だと問題なくできました。 なぜ、このコードだとエラーがおこるのかな?

  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.1

ben9210さん おはようございます。 正解を先に示します。 正解) Application.SQRT の部分を sqr と書き換えて下さい。 1) VBA内でExcelの関数を利用するためには、Worksheetfunctionオブジェクトを参照します。  試しにエディタで、Worksheetfunction. と打ち込んでください。見慣れたExcelの関数が羅列されるはずです。 2) ルート(二乗根)を導出する関数は、Excelの関数を利用しません。VBAに内臓されたsqr() 関数を利用します。 以上2点から、上の回答となりました。

noname#241383
質問者

補足

指摘のようにSqrでしました。 検索すればわかりました。 ちょっと変更ししてますが、 WorksheetFunction.Sqr(Val(TextBox33.Value) このコードでは、エラーがでます。 なにか書き方が間違っていますか? 2人目の方が指摘のように関数を使わない方法だと問題なくできました。 なぜ、このコードだとエラーがおこるのかな?

関連するQ&A

専門家に質問してみよう